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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
 
 11:09 Den Sarych
 
 
Во Флориде и в Королевстве сейчас  11:29[Войти] | [Зарегистрироваться]
Обсуждение темы:
Мысли об Обероне

На базарной площади довольно часто можно слышать высказывания об Обероне. Мне кажется, что на базарной площади пора появиться ветке об этой системе и языке, что-то вроде "Мысли об Обероне". Что это такое, перспективы этой системы, что полезного можно извлечь из него для программирования на Дельфи (например) и др.

Ivan

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

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

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


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


Ссылки по теме "Оберон" и "Компонентный паскаль"



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


Смотрите также обсуждения:
Free Pascal, Oberon, BlackBox
  • Разработка препроцессора gpre для delphi\freepascal.
  • Component Pascal и среда разработки BlackBox
  • FreePascal: реальная альтернатива или OpenSource — блажь?

  • <<<... | 2931—2922 | 2921—2912 | 2911—2902 | ...>>>
    Всего сообщений в теме: 4531; страниц: 454; текущая страница: 162


    № 2921   10-10-2005 21:54 Ответить на это сообщение Ответить на это сообщение с цитированием
    Зачем из Оберона исключены вариантные записи?

    Вариант ответа для работы "Оберон. Коротко о главном. Часть 2"

    Функциональность вариантных записей, используемых в Паскале и Modula-2, сохраняется в Обероне за счет введения концепции расширяемых типов данных (type extensions), это уникальное отличие Оберона, впервые появившееся именно в этом языке.

    Приведем пример:

    T  = RECORD x, y: INTEGER END;
    T0 = RECORD (T) z: REAL END;
    T1 = RECORD (T) b: BOOLEAN; s: CHAR END;



    Это означает, что базовый тип T, содержащий поля x и y, имеет два производных типа (расширения). T0 в итоге содержит поля x, y и z. Тип T1 -- поля x,y, b, s.

    Расширение типа действует как в отношении статических типов (на основе полей комбинированного типа -- RECORD), так и динамических (на основе полей ссылочного типа -- POINTER).

    Если в языке оставлять вариантные записи (как избыточность по отношению к расширению типа), то это серьезное препятствие к реализации полноценного сборщика мусора.

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

    Niklaus Wirth. Type Extensions (1988)



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

    Niklaus Wirth. From Modula to Oberon (1988)


    № 2920   10-10-2005 21:49 Ответить на это сообщение Ответить на это сообщение с цитированием
    Почему Оберон не имеет оператора goto?

    Вариант ответа для работы "Оберон. Коротко о главном. Часть 2"

    Оператор goto был изъят Виртом из Паскаля еще при создании языка Modula-2 (1979).

    Обоснование изъятия goto из языков высокого уровня было предложено в известной работе Эдсгера Дейкстры (Edsger W. Dijkstra "Go To Statement Considered Harmful" // Communications of the ACM, Vol. 11, No. 3, March 1968, http://www.acm.org/classics/oct95/).

    Как показывает практика программирования (особенно последних лет) используют goto отнюдь не для оптимизации объектного кода, а, как правило, чтобы сэкономить свое время на кодирование конкретного алгоритма. 

    Следует отметить:

    1. Оператора goto нет в таких языках, как Smalltalk (А.Кей, 1972), Modula-2 (Н.Вирт, 1979), Eiffel (Б.Мейер, 1986), Оберон (Н.Вирт, 1987), Modula-3 (DEC SRC, 1988), Оберон-2 (Х.Мессенбок, 1991), Java (Дж.Гослинг, 1995), Компонентный Паскаль (Oberon microsystems, 1997). Это далеко не полный перечень.

    2. Оператор goto более чем проблемно использовать в блоках контроля и обработки исключений вне зависимости от того, включен ли механизм обработки исключений в язык или он поддерживается на библиотечном уровне.

    В одних языках (Modula-2, Оберон и др.) goto часто моделируется связкой LOOP-END с оператором EXIT, в других -- для этой цели применяют в том числе и программные исключения, которые не только позволяют корректно передавать управление на нужную точку, но и нивелировать последствия такого нарушения линейного исполнения кода (утилизация ресурсов, обработчики исключений и т.п.).

    При этом следует упомянуть, что обоснованность использования goto в языке высокого уровня отстаивается до сих пор. Самый яркий пример последних лет -- язык C#.


    № 2919   10-10-2005 21:45 Ответить на это сообщение Ответить на это сообщение с цитированием
    Почему все зарезервированные слова в Обероне записываются большими буквами?

    Вариант ответа для работы "Оберон. Коротко о главном. Часть 2"

    Этот подход был введен Виртом еще в языке Modula-2 и показал свою высокую ценность в плане четкого выделения структуры исходного текста. Он был заимствован из языка Mesa (1975), разработанного в Xerox PARC.

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

    Относительное неудобство переключения регистров при наборе текста легко компенсируется средствами соответствующей системы программирования (IDE).


    № 2918   10-10-2005 21:42 Ответить на это сообщение Ответить на это сообщение с цитированием
    Почему из Оберона исключены перечисления и диапазоны?

    Вариант ответа для работы "Оберон. Коротко о главном. Часть 2"

    Перечисление (enumeration) -- довольно удобный тип, введенный в языке Паскаль (1970) и сохраненный в Modula-2 (1979). Тем не менее, в Обероне он исключен.

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

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

    Niklaus Wirth. From Modula to Oberon (1988)



    Диапазоны (subrange) также исключены из Оберона, хотя и были представлены в Modula-2. Чаще всего диапазоны использовались в качестве типов индексов для массивов. В Обероне Вирт принял решение вернуться к тому, что было введено еще в Си (1971) -- все массивы нумеруются от нуля. Понятно, что “абсолютные адреса” (индексы в рамках диапазонов) легко отобразить на “относительные” (от нуля). Иными словами, эта забота перекладывается на плечи программиста. Но в подавляющем большинстве случаев она не является серьезным ограничением.

    Типы диапазонов были введены в Паскале (и сохранены в Modula-2) по двум причинам: (1) чтобы подчеркнуть тот факт, что переменная принимает значения из ограниченного диапазона базового типа, и чтобы дать возможность компилятору генерировать соответствующий проверочный код для присваиваний; (2) чтобы позволить компилятору выделять минимально необходимое пространство памяти для хранения значений из указанного диапазона. Это желательное свойство в плане использования упакованных записей. Лишь в небольшом числе реализаций используется данное преимущество экономии памяти, поскольку при этом компилятор довольно значительно усложняется. Причины под номером (1) явно недостаточно, чтобы оставить в Обероне работу с диапазонами.

    Niklaus Wirth. From Modula to Oberon (1988)


    № 2917   10-10-2005 21:37 Ответить на это сообщение Ответить на это сообщение с цитированием
    Почему в Обероне нет цикла FOR ?

    Уточненный вариант ответа для работы "Оберон. Коротко о главном. Часть 2".

    Цикл FOR использовался в языке Modula-2, но в Обероне был изъят. Это обусловлено тем, что большое количество ошибок программирования возникает именно при использовании данного цикла.

    Из-за простоты формы его использованием нередко злоупотребляют в тех случаях, когда другие виды операторов цикла (с предусловием -- WHILE и с постусловием -- REPEAT) более предпочтительны. Особый случай -- переменная цикла.

    Для надежности область ее видимости (и область существования) должна ограничиваться рамками цикла (быть неопределенной до и после цикла). Именно такой подход был взят на вооружение в языке Modula-3 (1988), разработанном в DEC Systems Research Center и Olivetti на базе языка Modula-2. Почему -- понятно. Многие ошибки возникают из-за того, что за рамками цикла используется эта переменная, притом, что ее значение должно быть неопределено.

    Отказ от оператора FOR -- другой пример разрыва древней традиции. Замысловатый механизм оператора FOR, принятый в языке Algol-60, был значительно упрощен в языке Паскаль (и в Modula-2). Незначительная практическая ценность этого оператора привела к тому, что в Обероне он отсутствует.

    Niklaus Wirth. From Modula to Oberon (1988)


    В Обероне Вирт пошел на радикальный шаг -- принял решение вообще отказаться от использования цикла FOR, поскольку его легко могут заменить циклы WHILE, REPEAT и универсальный LOOP (точнее, остался от Modula-2, где он всегда был и прекрасно себя зарекомендовал). С его помощью реализовывать можно абсолютно любой цикл. Но в том-то и состоит принцип разумного минимализма (вспомните изречение Эйнштейна, вынесенное в эпиграф описания Оберона -- оно там не просто так) -- избыточность даже минималистскому языку не противопоказана. WHILE и REPEAT прекрасно дополняют друг друга, в LOOP служит для особых случаев. FOR проще всего реализовывать через WHILE с заведением явной переменной цикла (и всеми явными, а не скрытыми, проблемами, которые вытекают из ее применения за границами цикла).

    В языке Оберон-2 (и затем в Компонентном Паскале) цикл FOR был восстановлен в своих правах, оставаясь при этом сомнительным компромиссом удобства работы.

    Важно отметить, что в новой книге “Programming in Oberon” (2004) Никлаус Вирт упоминает FOR как полноценный оператор языка Оберон. По всей видимости, консерватизм и сопротивление программистов были столь сильны, что Вирт вынужденно пошел на уступку:

    Рекомендуется, чтобы оператор FOR использовался только в простейших случаях, в частности, операнды выражения, определяющего диапазон значений переменной цикла, не должны изменяться внутри цикла. Кроме того, и сама переменная цикла не должна подвергаться модификации внутри цикла. Значение переменной цикла после завершения оператора FOR должно считаться неопределенным.

    Niklaus Wirth. Programming in Oberon (2004)



    № 2916   10-10-2005 14:30 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2898« (Владимир Лось)
    ___________________________

    Здравствуйте, Владимир! Послал два "пинга" на Ваш адрес с обоих моих (известных Вам). Надеюсь, хоть один дойдет. На всякий случай, если не спишемся, я жду до конца недели, а затем на аську пошлю свои соображения, ЧТО делает хотмэйл с почтой (я подозреваю т.н. SenderID). Правда, при этом я пока не знаю, как его побороть... :-(

    Еще раз прошу у всех присутствующих прощения за оффтопик.


    № 2915   10-10-2005 09:22 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2904« (Павел)
    ___________________________

    Извините, может ли кто-нибудь пояснить ситуацию с лицензией на BlackBox? Свободно распространяется версия только для обучения как и написано в лицензии 2001 года (версия 1.4), или уже и коммерческая тоже?

    Да всё уже бесплатное. И лучше взять версию 1.5 Beta.


    № 2914   10-10-2005 09:04 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2912« (Сергей Перовский)
    ___________________________

    "Арифметика синтаксиса" -- хорошая, добротная работа. Но опирается на количественные характеристики синтаксиса языков.

    Вы считаете это убедительным для сравнения языков, которые на самом деле давно для многих стали отдельными конфессиями?

    "Критика C#" -- еще более сильная работа Свердлова, а уж его будущая книга, убежден, произведет неотразимое впечатление на читателя.

    В продолжение темы "Арифметики синтаксиса" возьмите Java, полностью переложите на Паскаль-синтаксис (причем без сильного выигрыша по числу нетерминалов) и вы увидите ДРУГОЙ язык (хотя семантика, коннцепции и количественные показатели синтаксиса не изменились). Это так, к слову.

    Думаю, полемика здесь, на Королевстве, НЕ МЕНЕЕ важна, чем публикации и диссертации. Хотя бы потому, что дает СРЕЗ мнений, причем людей, знающих свое дело.

    Любая статья и диссертация -- это ОДНА точка зрения, даже если там и делается попытка что-то с чем-то сранивать (это я отношу и на свой счет).



    № 2913   10-10-2005 08:55 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2911« (Владимир Лось)
    ___________________________

    И так стараюсь сильно не давить. Так, чуть-чуть.

    Приезд Вирта привлек заметное внимание к Оберонам. Честно говоря, я даже в самых смелых снах не представлял, насколько живой отклик это вызовет.

    Понятно, что за час лекции донести до аудитории (по большей части пришедшей только посмотреть на него -- автора знаменитого Паскаля) основы своего видения мира не так просто.

    Самая расхожая фраза, которую я нередко слышал в эти дни: он еще жив? Вот что поражало людей, а не его мысли, его работы, его энергия, его высочайший профессионализм не только и не столько ученого, сколько инженера экстра-класса.

    Встречают, как известно, у нас по одежке.

    А в этом плане был устойчивый образ старенького профессора, автора позабытого и позаброшенного Паскаля. Его образ человека (это я все про "ОДЕЖКУ"), который видимо (по мнению многих) на склоне лет приехал в далекую Россию разве что раздавать автографы, вызывал неприкрытое сочувствие у ИСТИННЫХ бойцов ИТ-индустрии, находящихся не один день на передовой под шквальным огнем и точно знающих, что профессуре с ее заумными рассуждениями там делать точно нечего.

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

    И это легко прогнозировалось. Но то, КАК он сумел заставить людей не слушать, а прислушиваться, не смотреть, а вглядываться, не говорить, а задумываться, -- меня откровенно поразило.

    Он сделал великое дело. Сдвинул с места такую глыбину в сознании людей, что убежден, провожали-то его уже по УМУ.

    Кто хотел видеть, тот увидел, кто хотел услышать, тот услышал.

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

    Чем богаты -- полностью отдали в свободный доступ. Пусть изучают, смотрят, выбирают, спрашивают, делают выводы. Этот богатейший пласт культуры был долгие годы от многих из нас скрыт. Теперь благодаря Вирту он пошел в массы.

    Убежден, это еще только начало...


    № 2912   10-10-2005 08:29 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2911« (Владимир Лось)
    ___________________________
    Нет ничего практичнее хорошей теории (с).
    Отдельный язык программирования вряд ли может служить предметом научной работы,  а вот сравнение языков, позволяющее сделать аргументированный выбор инструмента для задач различного типа - очень достойный предмет для диссертации. А то мы все ведем религиозные споры.
    Пожалуй только "Арифметика синтаксиса" является примером научного подхода к сравнению языков.


    <<<... | 2931—2922 | 2921—2912 | 2911—2902 | ...>>>
    Всего сообщений в теме: 4531; страниц: 454; текущая страница: 162




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

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

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

    Перейти на конкретную страницу по номеру
      
    Время на сайте: 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» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

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