OberonCore
https://forum.oberoncore.ru/

процедурные типы
https://forum.oberoncore.ru/viewtopic.php?f=29&t=584
Страница 1 из 1

Автор:  ___ [ Вторник, 24 Июль, 2007 20:37 ]
Заголовок сообщения:  процедурные типы

в статье Руслана Богатырева http://oberon2005.ru/obe_faq1.html сказано:
"В Обероне есть три кита, на которые опирается его философия (см. "От Modula к Oberon"):

1. процедурные типы (процедура как тип, коммутация функций);
2. модули (единица компиляции и загрузки, основа построения компонентов);
3. расширение комбинированного типа (расширяемые записи, альтернатива ООП и основа динамической эволюции систем)."

в разделе документации бб "Cоглашения по написанию кода":
"Старайтесь избегать супервызовов и процедурных типов."

получается, что в один из китов Оберона в КП уже не кит совсем? %)
или как правильно интерпретировать...

Автор:  Wlad [ Вторник, 24 Июль, 2007 21:20 ]
Заголовок сообщения:  Re: процедурные типы

___ писал(а):
получается, что в один из китов Оберона в КП уже не кит совсем? %)
или как правильно интерпретировать...

Описываются "киты" Оберона (даже не второго), а рекомендации - относительно КП.
Просто по причине изменения реализации поддержки ООП "унутрях"...

Автор:  Info21 [ Среда, 25 Июль, 2007 11:19 ]
Заголовок сообщения:  Re: процедурные типы

___ писал(а):
в статье Руслана Богатырева http://oberon2005.ru/obe_faq1.html сказано:
"В Обероне есть три кита, на которые опирается его философия (см. "От Modula к Oberon"):
...
как правильно интерпретировать...


Сначала нужно понять, что яркий образ "киты" есть интерпретация автором статьи своих ощущений.

Называть детали вроде процедурных переменных "китами" да еще "философии" Оберона ... не знаю, не знаю.

Автор:  kreol [ Четверг, 26 Июль, 2007 00:33 ]
Заголовок сообщения:  Re: процедурные типы

Но в Сообщение о языке КП дословно сказано следующее:
Цитата:
Ðåêîìåíäóåòñÿ ìèíèìèçèðîâàòü èñïîëüçîâàíèå ïðîöåäóðíûõ òèïîâ è ñóïåð-âûçîâîâ, ò.ê. îíè ñ÷èòàþòñÿ óñòàðåâøèìè ñðåäñòâàìè.

Справедливо ли это для других Оберонов или только для КП? То есть мне процедурные типы не кажутся устаревшими, а в оригинальном (первом) Обероне они очень неплохо помогают увидеть объект полностью, когда все его методы, так же, как и атрибуты, описываются внутри одной записи. Или я чего-то не понимаю и процедурные типы однозначно маст дай?

Автор:  Info21 [ Четверг, 26 Июль, 2007 08:29 ]
Заголовок сообщения:  Re: процедурные типы

kreol писал(а):
Но в Сообщение о языке КП дословно сказано следующее:
Цитата:
Ðåêîìåíäóåòñÿ ìèíèìèçèðîâàòü èñïîëüçîâàíèå ïðîöåäóðíûõ òèïîâ è ñóïåð-âûçîâîâ, ò.ê. îíè ñ÷èòàþòñÿ óñòàðåâøèìè ñðåäñòâàìè.

Справедливо ли это для других Оберонов или только для КП? То есть мне процедурные типы не кажутся устаревшими, а в оригинальном (первом) Обероне они очень неплохо помогают увидеть объект полностью, когда все его методы, так же, как и атрибуты, описываются внутри одной записи. Или я чего-то не понимаю и процедурные типы однозначно маст дай?


Прочесть невозможно, но проблема с безопасной выгрузкой модулей (вероятно, об этом речь) есть во всех Оберонах.

Совсем без процедурных типов плохо. (Есть такой удобный критерий: без процедурных типов трудно студентам объяснять что к чему -- все равно приходится вводить процедурные переменные.)
Другое дело, как повысить безопасность. Было предложение задвинуть процедурные типы в SYSTEM. Жизнь покажет.

Автор:  Wlad [ Четверг, 26 Июль, 2007 09:07 ]
Заголовок сообщения:  Re: процедурные типы

info21 писал(а):
Было предложение задвинуть процедурные типы в SYSTEM.

Непонятка - что имеется в виду?... Ведь наличие процедурных типов - свойство языка, а не библиотек...

Автор:  Борис Рюмшин [ Четверг, 26 Июль, 2007 10:46 ]
Заголовок сообщения:  Re: процедурные типы

Wlad писал(а):
info21 писал(а):
Было предложение задвинуть процедурные типы в SYSTEM.

Непонятка - что имеется в виду?... Ведь наличие процедурных типов - свойство языка, а не библиотек...

В определении КП процедурные типы помечены на удаление в будущем (хотя часть каркаса их применяет при этом). "Задвинуть в SYSTEM" - значит официально исключить из определения языка, но оставить на уровне небезопасной системной библиотеки... которая и не библиотека совсем... :)
По сути SYSTEM - это тоже часть языка только неопределённая...

Автор:  Wlad [ Четверг, 26 Июль, 2007 13:43 ]
Заголовок сообщения:  Re: процедурные типы

Борис Рюмшин писал(а):
...

Тогда получается, что определение языка меняется в зависимости от наличия IMPORT SYSTEM; ??? ...
Вопросы семантики определений типов и операций со значениями этих типов - один из основных в определении языка.
Для языка со строгой типизацией (да и вообще - для остальных, не столь строгих, как Обероны) я не могу представить ситуации "выноса в SYSTEM" СПОСОБА определения конкретного типа процедурной ссылки... Откуда компилятор будет знать всё множество сигнатур процедур, которые понадобятся или на которые фантазия программиста разгуляется? :о)

Автор:  Info21 [ Четверг, 26 Июль, 2007 18:18 ]
Заголовок сообщения:  Re: процедурные типы

Wlad писал(а):
Тогда получается, что определение языка меняется в зависимости от наличия IMPORT SYSTEM; ??? ...
Откуда компилятор будет знать всё множество сигнатур процедур, которые понадобятся или на которые фантазия программиста разгуляется? :о)


Определение или нет -- все это условности.

Программист будет использовать не процедурные переменные, а объекты с методами, вот и все.

Автор:  Борис Рюмшин [ Четверг, 26 Июль, 2007 19:01 ]
Заголовок сообщения:  Re: процедурные типы

Wlad писал(а):
Тогда получается, что определение языка меняется в зависимости от наличия IMPORT SYSTEM; ??? ...

Оно и так меняется. SYSTEM - это compiler magic, по сути дела. Так же как и COM. Оба они не входят в определение языка, но, тем не менее, полностью обрабатываются компилятором.

Автор:  Wlad [ Четверг, 26 Июль, 2007 21:04 ]
Заголовок сообщения:  Re: процедурные типы

Борис Рюмшин писал(а):
Wlad писал(а):
Тогда получается, что определение языка меняется в зависимости от наличия IMPORT SYSTEM; ??? ...

Оно и так меняется. SYSTEM - это compiler magic, по сути дела. Так же как и COM. Оба они не входят в определение языка, но, тем не менее, полностью обрабатываются компилятором.

То есть вы предлагаете, что само включение в модуль строки IMPORT SYSTEM является включением режима компиляции, при котором разрешаются конструкции определения типов ссылок на процедуры? А не проще ли (и - «традиционней») сделать это через установку флагов опций в командной строке компилятора или в модифицированных комментариях в тексте модуля? А то как-то неочевидно...

Автор:  Иван Горячев [ Пятница, 27 Июль, 2007 04:08 ]
Заголовок сообщения:  Re: процедурные типы

Wlad писал(а):
То есть вы предлагаете, что само включение в модуль строки IMPORT SYSTEM является включением режима компиляции, при котором разрешаются конструкции определения типов ссылок на процедуры? А не проще ли (и - «традиционней») сделать это через установку флагов опций в командной строке компилятора или в модифицированных комментариях в тексте модуля? А то как-то неочевидно...

Ну дак оно и сейчес так работает, только с флагами записей/процедур/etc.
Используя SYSTEM программист явно берёт на себя ответственность за последствия. Да и система, теоретически, может следить за небезопасными модулями. Флаги в командной строке делают текст модуля несамостоятельным, заставляя полагаться на внешние условия. Спецкомментарии - ещё один "язык" внутри оберона. Оно надо?
Другое дело, что я не вижу проблем с отслеживанием всех ссылок на процедуры. Они же в принципе ничем особенным не отличаются...

Автор:  Trurl [ Пятница, 27 Июль, 2007 10:23 ]
Заголовок сообщения:  Re: процедурные типы

kreol писал(а):
Справедливо ли это для других Оберонов или только для КП?

Думаю, это даже для КП не справедливо. Ну, погорячились ребята на фоне успеха жабы и общего ООП-базара.

Автор:  Руслан Богатырев [ Вторник, 11 Сентябрь, 2007 15:44 ]
Заголовок сообщения:  Re: процедурные типы

___ писал(а):
в статье Руслана Богатырева http://oberon2005.ru/obe_faq1.html сказано:
"В Обероне есть три кита, на которые опирается его философия (см. "От Modula к Oberon"):

1. процедурные типы (процедура как тип, коммутация функций);
2. модули (единица компиляции и загрузки, основа построения компонентов);
3. расширение комбинированного типа (расширяемые записи, альтернатива ООП и основа динамической эволюции систем)."

в разделе документации бб "Cоглашения по написанию кода":
"Старайтесь избегать супервызовов и процедурных типов."

получается, что в один из китов Оберона в КП уже не кит совсем? %)
или как правильно интерпретировать...


Классический Оберон и КП -- языки немного разные. Один создает основу для ООП, второй ее конкретизирует. Основу ООП в Обероне нельзя обеспечить без процедурных типов (не из чего иначе делать методы). В КП есть обе вещи (type-bound procedures и процедурный тип). Одна вроде как другой мешается. Она ей без надобности, потому и рассматривают процедурный тип как объект для хирургического вмешательства.

Процедурный тип, насколько помню, идет у Вирта еще от Mesa. Проблема в том, что присваивания у процедурных переменных никак не контролируются (не трассируются), а потому можно сильно вляпаться -- пресловутый висячий указатель. Вывод: если это средство использовать надежно, требуется устанавливать над ним контроль. Это можно сделать.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/