Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  21:36[Войти] | [Зарегистрироваться]
Обсуждение темы:
Оберон-технология: особенности и перспективы


Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение. 

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 6256 сообщений

Добавить свое сообщение

Отслеживать это обсуждение

Обсуждение из раздела
Школа ОБЕРОНА

<<<... | 4356—4347 | 4346—4337 | 4336—4327 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 192


№ 4346   23-04-2007 15:43 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 4343« (AVC)
___________________________

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

Честно говоря, к метапрограммированию отношусь достаточно сдержанно. По сути -- это регламентированный библиотечный интерфейс с ран-таймом, при этом есть маленькая специфика -- компилятор надо нагрузить требованием формировать определенную информацию о программе на уровне сканера/парсера. К ней собственно и лезет в ран-тайм механизм поддержки метапрограммирования. 

Плюс в том, что у ран-тайма появляется неплохо регламентированный (высокоуровневый) интерфейс, да еще с возможностью подняться аж до уровня исходника. Минус -- увы, нельзя разрешать использовать метапрограммирование в обычных модулях. С точки зрения надежности это равносильно (если не опаснее) импорта SYSTEM. Кроме того, идет очень сильная завязка на компилятор (значит, и на переносимость). Если бы был просто интерфейс к ран-тайму, который мы дополняли своими средствами -- это одно. А когда в него должен поставлять нужную информацию компилятор -- совсем другое. Это ассемблер, оперирующий на этапе выполнения информацией исходного языка (сущностями и атрибутами).



№ 4345   23-04-2007 15:38 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 4339« (Руслан Богатырев)
___________________________
>>>А здесь пояснял своему оппоненту, что негоже требовать от языка программирования того, что нужно языку совсем иного назначения.
Было очень забавно наблюдать Ваш спор с ASU, т.к. исходя из одних и тех же предпосылок (правда изложенных в очень разной манере) вы приходили к противоположным взгладам на межмодульное взаимодействие. И я склонен принять его сторону: какой модуль должен реализовывать тот или иной интерфейс в конкретной системе, должно описываться в языке конструирования системы, а не в языке программирования.
Мне ближе восприятие модуля (раз уж речь идет о модулях загрузки), как сервера и клиента в одном лице. Чтобы собрать систему, необходимы модули, решающие конкретные задачи и все модули, предоставляющие необходимые для этого услуги. Язык конструирования системы должен позволить назначить конкретный модуль на роль поставщика конкретной услуги (функции, переменной, типа данных) и контролировать замкнутость системы.


№ 4344   23-04-2007 15:35 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 4342« (AVC)
___________________________

Например, "посмертный" отладчик в ББ вызывается именно в момент исключения (которое может также явно "выбрасываться" через HALT и ASSERT) и позволяет просматривать значение всех переменных в стеке на момент прерывания программы (опять-таки метапрограммные механизмы).

Обратите внимание на слова: "посмертный", "просматривать". Моя мысль состоит в том, что обработка исключений должна осуществляться на этапе эксплуатации уж никак не в интерактивном режиме. Это раз. Второе: напрямую изменять какие бы то ни было значения сущностей языка, на мой взгляд, не нужно (если уж очень приспичило, то только опосредовано -- вызовом поименованного обработчика). Как не нужны значения каких бы то ни было переменных. Достаточно всего лишь знать о факте возникновения исключения с конкретным именем, которое возникло в блоке (процедуре, модуле) с конкретным именем, возможно в условиях конкретного состояния (сущность языка кластеров, а не языка Оберон).


№ 4343   23-04-2007 15:35 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 4342« (AVC)
___________________________

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


№ 4342   23-04-2007 15:27 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 4340« (Руслан Богатырев)
___________________________

То, что я здесь описал -- принципиально иная идея. На уровне исходного текста на Обероне кроме ASSERT вообще ничего нет. Реакция вынесена не просто за пределы языка программирования, а за исходные тексты Оберон-модулей! А это дает весьма интересное следствие -- при обработке исключений обработчик не может оперировать сущностями языка, в котором возникло исключение!

Кажется, все же не совсем так.
Например, "посмертный" отладчик в ББ вызывается именно в момент исключения (которое может также явно "выбрасываться" через HALT и ASSERT) и позволяет просматривать значение всех переменных в стеке на момент прерывания программы (опять-таки метапрограммные механизмы).
Конечно, явный минус ASSERT-а в том, что он не может передать в обработчик данных об исключительной ситуации, в отличие от специальной (расширяемой) записи Exception в статье Мессенбека.
Но "механика", в принципе, одна и та же.
 AVC


№ 4341   23-04-2007 15:03 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 4338« (AVC)
___________________________

Важно отделить "внутренние" модули кластера от "фасадных".

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

Возможно, для этого достаточно добавить во внутренние модули секцию EXPORT (по аналогии с секцией IMPORT).

Не стоит ничего трогать в языке Оберон/КП. Это можно сделать этажом выше, на уровне иного языка.


№ 4340   23-04-2007 14:46 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 4338« (AVC)
___________________________

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

Давно известен способ обработки исключений, совершенно незатрагивающий компилятор:


Эту статью знаю, она вышла в 1996 г. Там реализация идет через метапрограммирование (то бишь через библиотечную поддержку с обращением к ран-тайму, который должен предоставлять необходимую информацию). Не буду вдаваться в детали той работы. При  желании ее каждый может внимательно изучить. Там грамотно решена идея выделения блоков контроля (они идут по границам процедур), а также довольно разумно -- идея размещения блоков обработки в локальные процедуры соответствующих блоков контроля.

Результаты нашей группы изложены здесь: http://www.europrog.ru/paper/m2ex.pdf
Мы также исходили из выноса исключений на уровень библиотек (как и австрийская группа Мессенбека). Также использовался ран-тайм.  В этом принципиальной разницы нет. Другое дело, что мы предусматривали еще исключения для асинхронных (параллельных) процессов, т.е. разделяли на внутренние и внешние плюс обеспечивали более тонкую реакцию, но это уже приятные мелочи.

Наша работа была завершена (в смысле работала реализация для Модулы-2) в середине 1991 г. Подготовлена публикация на англ. в апреле 1992 г. и передана Гюнтеру Дотцелю (Modulaware). Он опубликовал ее в своем самиздатовском журнале ModulaTor: http://www.modulaware.com/mdlt22.htm

Самиздат не накладывал ограничений на публикацию в приличных печатных изданиях и по совету Дотцеля я направил ее в журнал “Structured Programming” (Springer-Verlag, в редколлегии – Д.Кнут и Н.Вирт). После двух кругов работы анонимных рецензентов статью признали достойной (готовилась к печати почти год). Это была, если не ошибаюсь, первая публикация советских авторов в таком престижном издании: http://www.informatik.uni-trier.de/~ley/db/journals/stp/index.html

То, что я здесь описал -- принципиально иная идея. На уровне исходного текста на Обероне кроме ASSERT вообще ничего нет. Реакция вынесена не просто за пределы языка программирования, а за исходные тексты Оберон-модулей! А это дает весьма интересное следствие -- при обработке исключений обработчик не может оперировать сущностями языка, в котором возникло исключение!


№ 4339   23-04-2007 13:56 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 4337« (Сергей Перовский)
___________________________

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

Сергей, я к этому пришел примерно лет 20 назад. Кое-что было опубликовано в трудах конференции "Методы трансляции и конструирования программ" (Новосибирск, 1988 г.). А здесь пояснял своему оппоненту, что негоже требовать от языка программирования того, что нужно языку совсем иного назначения. О каких большевиках Вы толкуете? Быть может, что-то упустил. Если нетрудно -- дайте ссылочку.

Необходимость обработки исключений из этой же серии. Вирт не знал об этой проблеме? Или доказал достаточность ASSERT?

Вирт не хотел внедрять обработку исключений, поскольку она таит в себе немало проблем, которые ему до конца не понятны. Этот вопрос я обсуждал с ним в июле 1996 г.


№ 4338   23-04-2007 11:44 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 4337« (Сергей Перовский)
___________________________

Сначала лозунг - модули и ничего кроме модулей, потом введение понятия кластера.
Сначала лозунг о достаточности одного имени для модуля и его интерфейса, потом объединение модулей в кластер с совершенно другой конструкцией интерфейса совершенно отдельного от модулей.


Важно отделить "внутренние" модули кластера от "фасадных".
Возможно, для этого достаточно добавить во внутренние модули секцию EXPORT (по аналогии с секцией IMPORT).
Тогда импортировать "внутренний" модуль смогут лишь те, что перечислены в списке экспорта.
Это пока лишь идея.

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

Давно известен способ обработки исключений, совершенно незатрагивающий компилятор:
http://www.oberon2005.ru/paper/p_ex.pdf
 AVC


№ 4337   23-04-2007 09:47 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 4330« (Руслан Богатырев)
___________________________
>>>Подобные размышления наталкивают на мысль о выведении средств управления кластерами в отдельный язык (именно язык), в большей степени декларативного характера, который описывает "топологию", инварианты, отношения, состояния.
Ну вот, Вы и пришли к необходимости разделить язык программирования и язык конструирования систем, о чем много дней "говорили большевики".
Сначала лозунг - модули и ничего кроме модулей, потом введение понятия кластера.
Сначала лозунг о достаточности одного имени для модуля и его интерфейса, потом объединение модулей в кластер с совершенно другой конструкцией интерфейса совершенно отдельного от модулей.
Лозунги вообще плохо реализуемы, так как упрощают действительность до полного примитивизма.
Необходимость обработки исключений из этой же серии. Вирт не знал об этой проблеме? Или доказал достаточность ASSERT? Нет, просто обработка исключений достаточно громоздкая штука, заметно усложняющая язык и компилятор. А то, что она необходима, люди поймут только при достижении определенного порога сложности программ.


<<<... | 4356—4347 | 4346—4337 | 4336—4327 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 192


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования