Инструменты пользователя

Инструменты сайта


ob:docu

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
ob:docu [2021/06/19 18:59]
iadenisov
ob:docu [2025/07/11 23:32] (текущий)
efimov
Строка 1: Строка 1:
 ===== Языки семейства Оберон ===== ===== Языки семейства Оберон =====
  
-Язык программирования Оберон разработан Никлаусом Виртом при разработке одноименной операционной системы. По словам автора, разработке помогло критическое осмысления языков: Модула-2, Паскаль, Ada, Smalltalk и Cedar. +Язык программирования [[ob:oberon|Оберон]] разработан Никлаусом Виртом при разработке одноименной операционной системы. По словам автора, разработке помогло критическое осмысления языков: Модула-2, Паскаль, Ada, Smalltalk и Cedar.
  
 От Оберона пошло несколько веток развития языка программирования: От Оберона пошло несколько веток развития языка программирования:
  
-[[ob:oberon|Оберон]] → [[ob:oberon-sa|Оберон-SA]] → [[ob:oberon07|Оберон-07]]+<uml> 
 +component "Oberon" as OBR #Yellow 
 +component "Oberon SA" as OSA #Gray 
 +component "Active Oberon" as AOB #LightGreen 
 +component "Oberon 2" as OB2 #LightGreen 
 +component "Оберон-07" as O07 #LightGreen 
 +component "Zonnon" as ZNN #Yellow 
 +component "Component Pascal" as CMP #LightGreen 
 +OBR -down-> OSA 
 +OBR -down-> OB2 
 +OSA -down-> O07 
 +AOB -down-> ZNN 
 +OB2 -down-> CMP 
 +OB2 -down-> AOB 
 +</uml>
  
-[[ob:oberon|Оберон]] → [[ao:|Активный Оберон]] → [[ac:|Active Cells]]+[[ob:oberon07|Оберон-07]] [[ao:|Активный Оберон]] [[ob:oberon2|Оберон-2]] | [[cp:|Компонентный Паскаль (Блэкбокс Оберон)]]
  
-[[ob:oberon|Оберон]] → [[ao:|Активный Оберон]] → [[zonnon:|Зоннон]]+Линия Оберон-07 — это авторское уточнение исходного языка без существенных добавлений.
  
-[[ob:oberon|Оберон]] → [[ob:oberon2|Оберон-2]] → [[cp:|Компонентный Паскаль]] 
  
 +===== Диаграмма наследования в развитии Оберон-технологий =====
  
-Диаграмма наследования в развитии Оберон-технологий +{{ :ob:oberongenealogy.png?1000 |}}
- +
-{{ :ob:oberongenealogy.png?800 |}}+
  
 [[http://pub.iadenisov.ru/blackbox/oberongenealogy.gv|исходники CC BY-SA 4.0]] [[http://pub.iadenisov.ru/blackbox/oberongenealogy.gv|исходники CC BY-SA 4.0]]
Строка 23: Строка 35:
 ===== Краткая история языка Паскаль ===== ===== Краткая история языка Паскаль =====
  
-Историю языков линейки Оберон вытекает из развития языка Паскаль его автором.+История языков семейства Оберон вытекает из развития языка Паскаль его автором. 
 + 
 +{{:ob:снимок_экрана_2023-01-07_в_16.38.18.png?1000|}}
  
 ==== Алгол ==== ==== Алгол ====
Строка 44: Строка 58:
  
 Успех Модулы-2 был наиболее значителен в задачах с высокими требованиями на надеж­ность, таких как системы управления движением. <Например, бортовое программное обес­печение на запускаемых в настоящее время российских спутниках связи пишется на Модуле-2 с помощью кросс-среды разработки приложений, описанной А.А.Колташевым в докладе на конференции JMLC'2003; см. Modular Programming Languages. Lecture Notes in Computer Science (LNCS 2789), Springer-Verlag, 2003, cc. 98-101. Успех Модулы-2 был наиболее значителен в задачах с высокими требованиями на надеж­ность, таких как системы управления движением. <Например, бортовое программное обес­печение на запускаемых в настоящее время российских спутниках связи пишется на Модуле-2 с помощью кросс-среды разработки приложений, описанной А.А.Колташевым в докладе на конференции JMLC'2003; см. Modular Programming Languages. Lecture Notes in Computer Science (LNCS 2789), Springer-Verlag, 2003, cc. 98-101.
 +
  
  
Строка 54: Строка 69:
  
  
-==== Оберон [Oberon] ==== 
  
-Проект Оберон был начат в 1985 в ETH Виртом и его коллегой Юргом Гуткнехтом [Jurg Gutknecht]. Это была попытка выделить все существенное из системы Cedar в виде универсальной, но все же обозримой операционной системы для рабочих станций. Получившаяся система оказалась очень маленькой и эффективной, прекрасно работала в оперативной памяти размером всего 2 MB и требовала при этом лишь 10 MB памяти на диске. Важной причиной малого размера системы Оберон был ее компонентный дизайн: вместо интеграции всех желаемых средств в один монолитный программный колосс, менее часто используемые программные компоненты (модули) могли быть реализованы как расширение ядра системы. Такие компоненты загружались, только когда они были действительно нужны, и они могли совместно использоваться всеми приложениями.+==== Оберон ====
  
-Вирт понял, что компонентно-ориентированное программирование требовало некоторых средств объектно-ориентированного программирования, таких как упрятывание инфор­ма­ции [information hiding], позднее связывание [late binding] и полиморфизм. 
  
-Упрятывание информации было сильной чертой Модулы-2Позднее связывание поддер­жива­лось в Модуле-2 посредством процедурных переменных. Однако там не было полимор­физ­ма. Поэтому Вирт добавил расширенное переопределение типов [type extension]: записевый тип мог быть объявлен как расширение <потомок> другого записевого типа <предка>. Тип-потомок можно было использовать всюду вместо одного из его предков.+Проект Оберон был начат в 1985 году в Швейцарской высшей технической школе Цюриха (ETH Zurich) Николаем Вальтеровичем Виртом (Niklaus Wirth) и его коллегой Юргом ГуткнехтомЦель проекта заключалась в выделении всего наиболее существенного из системы Cedar и создание универсальной, но при этом компактной операционной системы для рабочих станций. Результатом стала чрезвычайно маленькая и эффективная система, которая могла полноценно работать в оперативной памяти объёмом всего 2 Мбайта и требовала лишь 10 Мбайт дискового пространства. Одной из ключевых причин её компактности был компонентный подход к проектированию: вместо включения всех возможных средств в один монолитный программный колосс, менее часто используемые функциональные возможности реализовывались в виде отдельных модулей-расширений. Такие компоненты загружались только по мере необходимости и могли совместно использоваться разными приложениями.
  
-Но компонентно-ориентированное программирование выходит за рамки объектно-ориенти­рованного. В системе, построенной из компонентов, компонент может разделять свои структуры данных с произвольным числом других компонентово которых она ничего не знает. Эти компоненты обычно также не знают о существовании друг друга. Такое взаимное незнание делает управление динамическими структурами данных, и в частности правильное освобождение уже ненужной памяти, принципиально более трудной проблемой, чем в закрытых программных системах. Следовательно, необходимо оставить на долю реализации языка всю работу по определению моментакогда какая-то область памяти более не нужна, чтобы повторно использовать ее без ущерба для безопасности системы. Системный сервис, выполняющий такую автоматическую утилизацию памяти, называется сборщик мусора [garbage collector]. Сбор мусора предотвращает две из числа наиболее труднонаходимых и попросту опасных ошибок в программах: утечки памяти [memory leaks] (когда более не используемая память не освобождается) и висячие ссылки [dangling pointers] (преждевременное освобождение памяти). Висячие ссылки позволяют одному компоненту разрушить структуры данных, принадлежащие другим. Такое нарушение защиты типов [type safety] должно быть предотвращено, т.к. компонентные системы могут содержать многие независимо написанные компоненты неизвестного качества (например, полученные из Интернета).+Вирт понял, что компонентно-ориентированное программирование требовало некоторых средств объектно-ориентированного программированиятаких как сокрытие (information hiding), позднее связывание и полиморфизм.
  
-Хотя алголоподобные языки всегда имели высокую репутацию в плане безопасности, вве­дение полной защиты типов (иследовательно, сбора мусора) явилось качественным скачком. Именно по этой причине полная совместимость с Модулой-2 оказалась невоз­можной. Получившаяся модификация Модулы-2 была названа как и вся система — Оберон.+Сокрытие — одна из сильных сторон Модулы-2. Позднее связывание поддерживалось в Модуле-2 с помощью процедурных переменных. Однако в языке отсутствовал полиморфизм. Поэтому Вирт добавил расширение типов (type extension): записной тип (record type) можно было объявить как расширение другого записного типа. Значение такого расширенного типа можно использовать везде, где ожидается значение базового типа.
  
-Система модулей в Обероне, как и в Модуле-2, обеспечивала упрятывание информации для целых семейств типов, а не только для отдельных объектовЭто позволило определять и гарантировать инварианты для нескольких взаимодействующих объектов. Другими слова­ми, разработчики получили возможность разрабатывать механизмы защиты более высокого уровня, отталкиваясь от базовых средств защиты на уровне модулей и защиты типовобеспечиваемых хорошей реализацией Оберона.+Однако компонентно-ориентированное программирование выходит за рамки объектно-ориентированного. В системе, построенной из компонентов, компонент может разделять свои структуры данных с произвольным числом других компонентов, о которых он ничего не знает. Эти компоненты обычно также не знают о существовании друг друга. Такое взаимное незнание делает управление динамическими структурами данных — и в частности правильное освобождение памяти — принципиально более трудной проблемой, чем в закрытых программных системахСледовательно, необходимо оставить на долю реализации языка всю работу по определению момента, когда та или иная область памяти более не используется, чтобы повторно использовать её без ущерба для безопасности системы. Системная служба, выполняющая такую автоматическую утилизацию памяти, называется мусорщиком (garbage collector). Сбор мусора предотвращает две из числа наиболее труднонаходимых и попросту опасных ошибок в программах: утечки памяти (когда память, которую более невозможно использовать, не освобождается) и висячие ссылки (преждевременное освобождение памяти). Висячие ссылки позволяют одному компоненту разрушить или повредить структуры данных, принадлежащие другим. Такое нарушение защиты типов должно быть предотвращено, т. к. компонентные системы могут содержать многие независимо написанные компоненты неизвестного качества (например, полученные из интернета).
  
-Ортодоксальные объектно-ориентированные языка типа Smalltalk пренебрегали как типиза­цией переменных (вообще не поддерживая типы), так и упрятыванием информации (ограни­чивая ее объектами и классами), что явилось большим шагом назад в технологии разработки программного обеспечения. Оберон примирил миры объектно-ориентированного и модульного программирования.+Хотя алголоподобные языки всегда имели высокую репутацию в смысле безопасности, введение полной защиты типов (и, следовательно, сбора мусора) явилось качественным скачком. Именно по этой причине полная совместимость с Модулой-2 оказалась невозможной. Получившаяся модификация Модулы-2, как и вся система, была названа Обероном. 
 + 
 +Система модулей в Обероне, как и в Модуле-2, позволяет скрывать не только отдельные объекты, но и целые семейства типов. Это позволяет гарантировать инварианты для группы взаимосвязанных объектов. Иными словами, разработчики получили возможность создавать механизмы защиты более высокого уровня. 
 + 
 +Ортодоксальные объектно-ориентированные языки, такие как Smalltalkпренебрегали как типизацией переменных (вообще не поддерживая типы), так и сокрытием (ограничивая его объектами и классами), что явилось большим шагом назад в технологии разработки программного обеспечения. Оберон примирил миры объектно-ориентированного и модульного программирования
 + 
 +Последним требованием компонентно-ориентированного программирования является возможность динамической загрузки новых компонентов. В Обероне единица загрузки совпадает с единицей компиляции — модулем.
  
-Последнее требование компонентно-ориентированного программирования — возможность динамически загружать новые компоненты. В Обероне единица загрузки та же, что и единица компиляции — модуль. 
  
  
Строка 76: Строка 94:
  
  
-В 1992 г. сотрудничество с профессором Х.П. Мёссенбёком (H.P. Mossenbock) привело к несколь­ким добавлениям к первоначальному языку Оберон («Оберон-2»). Так возник фактический стандарт языка.+В 1992 г. сотрудничество с профессором Х. П. Мёссенбёком (H. P. Mossenbock) привело к несколь­ким добавлениям к первоначальному языку Оберон («Оберон-2»). Так возник фактический стандарт языка.
  
 В 1997 г. компания Oberon microsystems, Inc., отделившаяся от ETH (с Виртом в составе совета директоров), сделала некоторые небольшие добавления к Оберону-2 и назвала его Компонентный Паскаль, чтобы четче выразить как его нацеленность (компонентно-ориен­тированное программирование), так и его происхождение (Паскаль). Это промышленная версия Оберона, являющаяся наследницей первоначального Паскаля и Модулы-2. В 1997 г. компания Oberon microsystems, Inc., отделившаяся от ETH (с Виртом в составе совета директоров), сделала некоторые небольшие добавления к Оберону-2 и назвала его Компонентный Паскаль, чтобы четче выразить как его нацеленность (компонентно-ориен­тированное программирование), так и его происхождение (Паскаль). Это промышленная версия Оберона, являющаяся наследницей первоначального Паскаля и Модулы-2.
  
 Главная идея уточнений по сравнению с Обероном-2 была в том, чтобы дать проекти­ров­щику компонентного каркаса более полный контроль над ее проектируемыми свойствами в плане безопасности. Положительным результатом стало то, что теперь легче обеспечить целостность больших компонентных систем, что особенно важно во время итеративных циклов проектирования, когда библитека разрабатывается, и позднее, когда архитектура системы должна быть переработана, чтобы обес­печить дальнейшую эволюцию и поддержку. Главная идея уточнений по сравнению с Обероном-2 была в том, чтобы дать проекти­ров­щику компонентного каркаса более полный контроль над ее проектируемыми свойствами в плане безопасности. Положительным результатом стало то, что теперь легче обеспечить целостность больших компонентных систем, что особенно важно во время итеративных циклов проектирования, когда библитека разрабатывается, и позднее, когда архитектура системы должна быть переработана, чтобы обес­печить дальнейшую эволюцию и поддержку.
 +
  
  
Строка 89: Строка 108:
  
 Недавно диапазон приложений системы BlackBox Component Builder был значительно расширен за счет среды кросс-программирования Denia, которая является компонентом, расширающим систему Блэкбокс. Denia позволяет выполнять кросс-программирование на Компо­нен­тном Паскале для новой операционной системы реального времени JBed, которая полностью реализована на Компонентном Паскале. JBed предназначен для встроенных систем и приложений с жесткими требованиям реального времени [hard real-time requirements], например, в робототехнике и промышленной автоматизации. Большое применение JBed нашла в мобильных устройствах. Недавно диапазон приложений системы BlackBox Component Builder был значительно расширен за счет среды кросс-программирования Denia, которая является компонентом, расширающим систему Блэкбокс. Denia позволяет выполнять кросс-программирование на Компо­нен­тном Паскале для новой операционной системы реального времени JBed, которая полностью реализована на Компонентном Паскале. JBed предназначен для встроенных систем и приложений с жесткими требованиям реального времени [hard real-time requirements], например, в робототехнике и промышленной автоматизации. Большое применение JBed нашла в мобильных устройствах.
 +
  
  
Строка 97: Строка 117:
  
 В 1995 Н. Вирт присоединился к проекту Института автоматического контроля и измерений . Целью проекта была разработка системы позволяющая вертолету летать автономно по запрограммированному пути. Вирт разрботал систему бортового компьютера на основе процессора Strong-ARM. Кроме разработки аппаратных средств, он написал программы для различных инструментов программирования, включая разновидность компилятора Оберона с дополнительными возможностями для программирования систем реального-времени. В 1995 Н. Вирт присоединился к проекту Института автоматического контроля и измерений . Целью проекта была разработка системы позволяющая вертолету летать автономно по запрограммированному пути. Вирт разрботал систему бортового компьютера на основе процессора Strong-ARM. Кроме разработки аппаратных средств, он написал программы для различных инструментов программирования, включая разновидность компилятора Оберона с дополнительными возможностями для программирования систем реального-времени.
 +
  
  
Строка 106: Строка 127:
  
  
-==== Oberon v5 ====+ 
 +==== Oberon v5 2013 ====
  
  
Строка 117: Строка 139:
 https://www.inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report.pdf https://www.inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report.pdf
  
-Для этого варианта языка был обновлен компилятор Astrobe, а также был разработан новый компилятор O7 для микроконтроллеров с архитектурой ARMv{6,7E}-M:+Для этого варианта языка был обновлен компилятор Astrobe, а также был разработан новый [[ob:o7|компилятор O7]] для микроконтроллеров с архитектурой ARMv{6,7E}-M:
  
 https://github.com/aixp/O7 https://github.com/aixp/O7
 +
 +
 +
 +==== Active Oberon 2019 ====
 +
 +Репозиторий Active Object System (AOS aka A2) git repository (from 9.12.2022)
 +
 +https://gitlab.inf.ethz.ch/felixf/oberon/-/tree/main
 +
 +
 +**Описание языка Активный Оберон 2019 на английском** 
 +
 +ETH Oberon (2019) Language Report
 +
 +Felix Friedrich, Florian Negele, October 31, 2019
 +
 +https://gitlab.inf.ethz.ch/felixf/oberon/-/blob/main/docu/OberonLanguageReport.pdf
 +
 + 
 +
 +**Описание языка Активный Оберон 2019 на русском**
 +
 +Феликс Фридрих, Флориан Негель, 31 октября 2019
 +
 +Перевод - Николай Кондрин, Денис Будяк, 2020
 +
 +[[https://gitlab.inf.ethz.ch/felixf/oberon/-/blob/main/docu/OberonLanguageReport%20(Russian%20translation).md]]
  
  
ob/docu.1624118344.txt.gz · Последнее изменение: 2021/06/19 18:59 — iadenisov