OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 20 Апрель, 2024 11:04

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: процедурные типы
СообщениеДобавлено: Вторник, 24 Июль, 2007 20:37 

Зарегистрирован: Четверг, 01 Июнь, 2006 11:14
Сообщения: 240
в статье Руслана Богатырева http://oberon2005.ru/obe_faq1.html сказано:
"В Обероне есть три кита, на которые опирается его философия (см. "От Modula к Oberon"):

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: процедурные типы
СообщениеДобавлено: Вторник, 24 Июль, 2007 21:20 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
___ писал(а):
получается, что в один из китов Оберона в КП уже не кит совсем? %)
или как правильно интерпретировать...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: процедурные типы
СообщениеДобавлено: Среда, 25 Июль, 2007 11:19 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
___ писал(а):
в статье Руслана Богатырева http://oberon2005.ru/obe_faq1.html сказано:
"В Обероне есть три кита, на которые опирается его философия (см. "От Modula к Oberon"):
...
как правильно интерпретировать...


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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: процедурные типы
СообщениеДобавлено: Четверг, 26 Июль, 2007 00:33 

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: процедурные типы
СообщениеДобавлено: Четверг, 26 Июль, 2007 08:29 
Аватара пользователя

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

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


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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: процедурные типы
СообщениеДобавлено: Четверг, 26 Июль, 2007 09:07 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
info21 писал(а):
Было предложение задвинуть процедурные типы в SYSTEM.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: процедурные типы
СообщениеДобавлено: Четверг, 26 Июль, 2007 10:46 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Wlad писал(а):
info21 писал(а):
Было предложение задвинуть процедурные типы в SYSTEM.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: процедурные типы
СообщениеДобавлено: Четверг, 26 Июль, 2007 13:43 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Борис Рюмшин писал(а):
...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: процедурные типы
СообщениеДобавлено: Четверг, 26 Июль, 2007 18:18 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Wlad писал(а):
Тогда получается, что определение языка меняется в зависимости от наличия IMPORT SYSTEM; ??? ...
Откуда компилятор будет знать всё множество сигнатур процедур, которые понадобятся или на которые фантазия программиста разгуляется? :о)


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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: процедурные типы
СообщениеДобавлено: Четверг, 26 Июль, 2007 19:01 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Wlad писал(а):
Тогда получается, что определение языка меняется в зависимости от наличия IMPORT SYSTEM; ??? ...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: процедурные типы
СообщениеДобавлено: Четверг, 26 Июль, 2007 21:04 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Борис Рюмшин писал(а):
Wlad писал(а):
Тогда получается, что определение языка меняется в зависимости от наличия IMPORT SYSTEM; ??? ...

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

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


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

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Wlad писал(а):
То есть вы предлагаете, что само включение в модуль строки IMPORT SYSTEM является включением режима компиляции, при котором разрешаются конструкции определения типов ссылок на процедуры? А не проще ли (и - «традиционней») сделать это через установку флагов опций в командной строке компилятора или в модифицированных комментариях в тексте модуля? А то как-то неочевидно...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: процедурные типы
СообщениеДобавлено: Пятница, 27 Июль, 2007 10:23 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
kreol писал(а):
Справедливо ли это для других Оберонов или только для КП?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: процедурные типы
СообщениеДобавлено: Вторник, 11 Сентябрь, 2007 15:44 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 22:34
Сообщения: 431
Откуда: Москва
___ писал(а):
в статье Руслана Богатырева http://oberon2005.ru/obe_faq1.html сказано:
"В Обероне есть три кита, на которые опирается его философия (см. "От Modula к Oberon"):

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

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

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


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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB