OberonCore

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

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
СообщениеДобавлено: Воскресенье, 20 Июль, 2008 19:38 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 233
Илья Ермаков писал(а):
Эх, попёр Гуткнехт со товарищи спорным путём введения этих самых перегрузок...


Можно пояснить подробнее, в чем именно заключается спорность?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Генерация Дракон => Active Oberon
СообщениеДобавлено: Воскресенье, 20 Июль, 2008 21:20 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9115
Откуда: Россия, Орёл
"Организьм ослабляется алкоголем, никотином... излишествами нехорошими" (С)
(Шутка. Не надо накидываться с обвинениями в "фанатичном аскетизме". :-) )

А если серьёзно...
Хотим ввести некоторое неочевидное (по крайней мере, только для частного класса задач выгодное) удобство... Смотрим - может быть оно ничего не стоит? Ан нет - оно цепляет принципиальные вещи: принцип явной квалификации импортированных сущностей (т.к. по классич. законам Оберона надо бы писать Module."+" - но ясное дело, что тогда этот "+" никому нафиг не сдался) и правилам видимости (непонятно, как и по каким правилам включать в область видимости внешние операторы, как разрешать перегрузки и т.п.).

Та же история, что и с перечислимыми типами (которые при совмещении с динамической модульностью порождают разные непонятки, как и что должно себя вести в разных случаях. При этом в иных условиях, в иной языковой модели они могут не вызывать никаких вопросов - такая вот диалектика... Ну, касательно там всяких перегрузок и операций - в Лиспе с его макросами это органично работает, но там и идея языка - "пластилиновость", зато прощаемся с наличием жёсткой "каркаса под ногами", получаем "бесхребетность". Что-то теряем, что-то находим - а как иначе?).

Я думаю, что Гуткнехт, будучи специалистом экстра-класса, легко сбалансировал в реализации этой перегрузки операторов. Технически сбалансировал. Но концептуальная язвинка остаётся... В следующий раз захотим ввести что-то ещё - ещё компромиссы в языке - а потом проблемы... Какие?

Почитайте следующие книжки, где подробно разобрана система модульности и типизации Ады (казалось бы, более мощная) и Модулы-2 - и в итоге не в пользу Ады, где открываются тонкие дырки:
Янг "Алгоритмические языки реального времени",
Кауфман "Языки программирования" (ВМиК МГУ)
(см. обе здесь viewtopic.php?f=6&t=1090&p=17330).

В итоге: я не говорю, что это однозначно плохо. Я говорю о том, что сомневаюсь (и далеко не только я) и лучше бы так делать не стал бы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Генерация Дракон => Active Oberon
СообщениеДобавлено: Вторник, 22 Июль, 2008 22:09 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 233
Спасибо, понятно.

Хотя есть, конечно, случаи, например, матричные операции или комплексные числа, где переопределение математических операций очень естественно. И наоборот, если его нет получается какое-то уродство - достаточно посмотреть на реализацию комплексных чисел в Lib-е.

С другой стороны, можно было бы просто ввести комплексные числа в язык, не вводя при этом operator overloading. Вроде когда-то для OpenVMS так и делали.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Генерация Дракон => Active Oberon
СообщениеДобавлено: Вторник, 22 Июль, 2008 22:15 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Илья Ермаков писал(а):
А если серьёзно...
Хотим ввести некоторое неочевидное (по крайней мере, только для частного класса задач выгодное) удобство... Смотрим - может быть оно ничего не стоит? Ан нет - оно цепляет принципиальные вещи: принцип явной квалификации импортированных сущностей (т.к. по классич. законам Оберона надо бы писать Module."+" - но ясное дело, что тогда этот "+" никому нафиг не сдался) и правилам видимости (непонятно, как и по каким правилам включать в область видимости внешние операторы, как разрешать перегрузки и т.п.).


Достаточно ввести понятие "функция-член" ;) Ну или "связанная процедура" ;) И сказать, что перегруженный оператор может быть только таким.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Генерация Дракон => Active Oberon
СообщениеДобавлено: Вторник, 22 Июль, 2008 22:17 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9115
Откуда: Россия, Орёл
Вообще, тут интересно копнуть в сторону модульности компилятора... Т.е. возможности для нек. спектра задач относительно легко достроить компилятор. Чтоб использовалось по типу IMPORT COM в Блэкбоксе.

Дописание модуля к компилятору - не такая простая задача, чтоб ей каждый день занимался кто попало (как переопределение операторов). Т.е. это будет выполняться редко, только при реальной пользе для нек. весомого класса задач, квалифицированными поставщиками...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Генерация Дракон => Active Oberon
СообщениеДобавлено: Суббота, 26 Июль, 2008 13:50 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 233
Т.е. компилятор тоже может расширяться за счет импорта доп. модулей?
Скажем, после IMPORT Complex могли бы стать доступными новые базовые типы (COMPLEX) и операции с ними?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Генерация Дракон => Active Oberon
СообщениеДобавлено: Суббота, 26 Июль, 2008 13:58 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9115
Откуда: Россия, Орёл
Ну, это не импорт модулей, а так называемых псевдомодулей.
В Блэкбоксе, например, таковых два - SYSTEM (машинные средства) и COM (Direct-To-COM Compiler).

Это типа директивы компилятору.
Проработанной архитектуры для красивого расширения пока нет. Т.е. просто внутри модулей компилятора BlackBox где-то стоят IF SYSTEM_указан THEN дополнительно_понимаем_и_умеем_то_то... А хорошо бы это проработать...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Генерация Дракон => Active Oberon
СообщениеДобавлено: Суббота, 26 Июль, 2008 17:42 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 233
Интересно, и в каком модуле стоят такие IF SYSTEM_указан THEN ...?
Вроде в DevCompiler на первый взгляд такого нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Генерация Дракон => Active Oberon
СообщениеДобавлено: Суббота, 26 Июль, 2008 17:58 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9115
Откуда: Россия, Орёл
Начиная от DevCPT.Import и вглубь вплоть до кодогенератора...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Генерация Дракон => Active Oberon
СообщениеДобавлено: Воскресенье, 27 Июль, 2008 19:12 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 233
Спасибо! Как говорится, лучше один раз увидеть...
Правда в Dev-подсистему я бы даже для такого несложного расширения, как COMPLEX, наверное бы не полез.

Кстати, там же есть еще один ELSIF name = "JAVA". Это что тоже псевдомодуль??


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Генерация Дракон => Active Oberon
СообщениеДобавлено: Воскресенье, 27 Июль, 2008 19:17 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9115
Откуда: Россия, Орёл
В публичной версии BlackBox его как бы нет (недокументирован и неизвестно, может ли функционировать или нет...).

У Ominc имеется генератор в Яву и какие-то среды для совместного исполнения КП и Явы. Скорее всего, всё это ушло под мобильную ОС JBed их дочерней компании Esmertec (esmertec.com).


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

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


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

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


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

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