___ писал(а):
в статье Руслана Богатырева
http://oberon2005.ru/obe_faq1.html сказано:
"В Обероне есть три кита, на которые опирается его философия (см. "От Modula к Oberon"):
1. процедурные типы (процедура как тип, коммутация функций);
2. модули (единица компиляции и загрузки, основа построения компонентов);
3. расширение комбинированного типа (расширяемые записи, альтернатива ООП и основа динамической эволюции систем)."
в разделе документации бб "Cоглашения по написанию кода":
"Старайтесь избегать супервызовов и процедурных типов."
получается, что в один из китов Оберона в КП уже не кит совсем? %)
или как правильно интерпретировать...
Классический Оберон и КП -- языки немного разные. Один создает основу для ООП, второй ее конкретизирует. Основу ООП в Обероне нельзя обеспечить без процедурных типов (не из чего иначе делать методы). В КП есть обе вещи (type-bound procedures и процедурный тип). Одна вроде как другой мешается. Она ей без надобности, потому и рассматривают процедурный тип как объект для хирургического вмешательства.
Процедурный тип, насколько помню, идет у Вирта еще от Mesa. Проблема в том, что присваивания у процедурных переменных никак не контролируются (не трассируются), а потому можно сильно вляпаться -- пресловутый висячий указатель. Вывод: если это средство использовать надежно, требуется устанавливать над ним контроль. Это можно сделать.