## Код:
```
MODULE Привет;

(* Привет.Дуй ~ *)
IMPORT KernelLog;

PROCEDURE П():ADDRESS;
BEGIN RETURN 0 END П;

PROCEDURE Дуй*();
BEGIN
        (* эти два куска компилируются и печатают разное *)
   KernelLog.Address(П); KernelLog.Ln;
   KernelLog.Address(П()); KernelLog.Ln;
   (* Здесь нас спасает только отсутствие адресной арифметики - 
      закомментированный кусок не скомпилировался
   KernelLog.Address(П+П()); KernelLog.Ln; *)
END Дуй;

END Привет.
```

Не говоря ничего про точки с запятой, здесь мы видим пример, как стремление к чистоте кода снижает уровень защиты от ошибок.

Также нужно отметить, что есть разные пользователи языка. Есть начинающие (которые нагородят такого, чего не один разработчик языка не предусмотрел), есть профессионалы, есть усталые/занятые профессионалы, есть профессионалы, которые пришли с другого языка или не видели код на Обероне последние 5 лет. При определении таких соглашений нужно учитывать, какому пользователю мы больше хотим угодить (всем угодить точно не получится).