Оберон — мова програмування високого рівня, розроблена Ніклаусом Віртом. Для виконання програм цією мовою приназначена однойменна операційна система (автори Н. Вірт і (Jurg Gutknecht)).
Oberon | |
---|---|
Парадигма | декілька: імперативна, структурована, модульна |
Дата появи | 1986 |
Творці | Ніклаус Вірт |
Розробник | Ніклаус Вірт |
Система типізації | статична, , |
Під впливом від | , Pascal |
Вплинула на | , , Zonnon |
Ліцензія | Ліцензія BSD |
Вебсайт | projectoberon.net |
Системи й середовища
Програми, що написані мовою програмування Оберон, вимагають певної підтримки під час виконання — їм необхідний динамічний завантажувач і централізовано виконуваний автоматичний збирач сміття. Для цього програмам, що написані мовою Оберон, потрібне спеціальне операційне середовище. Звичайним способом його реалізації є додавання в систему набору бібліотек, що реалізують необхідні компоненти. Загалом кажучи, операційному середовищу зовсім не обов'язково потрібна окрема операційна система: воно само по собі може являти собою операційну систему. Такими є системи Native Oberon для первісного Оберона й для Active Oberon. У цей час існують компілятори Оберона в байт-код Віртуальної Java-машини і для віртуальної машини .NET.
Операційними системами й середовищами для виконання програм на мовах родини Оберон, що розвилися з первісної системи Оберон, є ETH Oberon, , , Bluebottle тощо.
На базі Оберона були розроблені проекти , та інші. Простота Оберона й наявність вихідних текстів оригінальної реалізації дозволяють легко адаптувати його для спеціальних класів завдань. Але всі ці Оберони дуже близькі між собою, оскільки й первісний Оберон дуже простий.
Історія мови
Основою для Оберона послужила мова , що виросла з Паскаля, (за словами Вірта, спочатку систему хотіли писати безпосередньо на Модулі, але прийшли до висновку про необхідність її доробки й скорочення, що й привело до появи Оберона). Метою проекту (Project Oberon) Ніклауса Вірта і Юрга Гуткнехта в 1986–1989 роках було створення з нуля доступної для розгляду й надійної операційної системи для однокористувальницької робочої станції.
Для реалізації цього проекту в 1988 році Ніклаусом Віртом була спроектована мова програмування високого рівня загального призначення, також названа Обероном.
У 1989 році в ETH була випущена перша реалізація мови Оберон для процесорів родини NS32000. Вона була створена як компонент операційного середовища Оберон. Цей компілятор вимагає менше 50 Кбайт пам'яті, складається з 6 модулів загальним обсягом близько 4000 рядків і сам себе компілює за 15 секунд на комп'ютері із процесором NS32532 (тактова частота — 25 МГц).
Мова Оберон
Нововведення
Мова зберегла основні риси синтаксису й була об'єктним розширенням. Це дозволило відмовитися від механізму варіантних записів Модули, що є відступом від первісної статичної типізації, що дало можливість запровадити механізм автоматичного керування пам'яттю — збирання сміття: з мови виключена можливість звільнення динамічно виділеної пам'яті за допомогою особливого оператора, а замість нього саме середовище виконання містить модуль, що повертає невикористовувану пам'ять системі. Автоматичне керування пам'яттю є засобом підвищення надійності програм із динамічними структурами даних, тому що виключає людські помилки, властиві, наприклад, таким мовам, як С/.
Спрощення синтаксису
Щоб досягти максимальної надійності та продуктивності трансляції, було здійснено значне спрощення мови за рахунок відмови від засобів, які було визнано непотрібними (виходячи з досвіду розробки, реалізації та експлуатації інших мов), або ускладнювали компілятор без належного виправдання з погляду продуктивності, або були занадто складними, аби передати в зовнішні бібліотеки, чи погано поєднувалися з механізмами модульності й автоматичного керування пам'яттю: записи з варіантами, , , множини загального виду, беззнаковий цілий тип, локальні модулі, модулі визначень, списки експорту, оператор for, колишній варіант оператора with, особливий синтаксис визначення головної програми. Рудиментарні засоби підтримки паралельного програмування, що були в Модулі-2, не ввійшли до мови, оскільки вона призначалася для однокористувацької операційної системи. З метою спрощення відмовилися від обробки винятків.
Було спрощено опис масивів (індекси масивів можуть бути тільки цілими числами і завжди починаються з нуля, подібно до мови C), обмежено використання вказівників (можуть існувати вказівники лише на записи та масиви), у списках імпорту вказується тільки імпортований модуль, а при використанні імпортованих імен потрібна обов'язкова кваліфікація (явне зазначення імені модуля-експортера). У статті «Від Модули до Оберона» Вірт докладно прокоментував причини вилучення кожного з елементів.
З міркувань «достатнього мінімуму» до мови не було включено синтаксичного поняття методів (процедур і функцій), що пов'язані з типом, тому що цей механізм у найзагальнішому вигляді можна легко змоделювати, створюючи в об'єктах («записах» у мові Оберон) поля процедурного типу й надаючи їм значення процедур, що відповідають методам. Таким чином, в Обероні мінімальними засобами підтримується об'єктно-орієнтоване програмування для спрощення й прискорення процесу трансляції коду.
Завдяки внесеним змінам, Оберон став синтаксично простішим. Опис його синтаксису вмістився на одній сторінці, повний опис мови має близько 20 сторінок, що вдвічі менше за опис . Оберон є якщо не мінімальною, то, у будь-якому разі, однією з найменших за обсягом універсальних мов програмування високого рівня.
Синтаксис у РБНФ
Синтаксис «Оберона-2» вирізняється компактністю. Він визначений у наступних 33 реченнях РБНФ (дається за ):
Модуль = MODULE ідент ";" [СписокІмпорту] ПослОголош [BEGIN ПослОператорів] END ідент ".". СписокІмпорту = IMPORT [ідент ":="] ідент {"," [ідент ":="] ідент} ";". ПослОголош = { CONST {ОголошКонст ";" } | TYPE {ОголошТипу ";" } | VAR {ОголошЗмін ";" }} {ОголошПроц ";" | ВипереджОгол";"}. ОголошКонст = ІдентОзн "=" КонстВираз. ОголошТипу = ІдентОзн "=" Тип. ОголошЗмін = СписокІдент ":" Тип. ОголошПроц = PROCEDURE [Приймач] ІдентОзн [ФормальніПарам]";" ПослОголош [BEGIN ПослОператорів] END ідент. ВипереджОгол = PROCEDURE "^" [Приймач] ІдентОзн [ФормальніПарам]. ФормальніПарам = "(" [СекціяФП {";" СекціяФП}] ")" [":" УточнІдент]. СекціяФП = [VAR] ідент {"," ідент} ":" Тип. Приймач = "(" [VAR] ідент ":" ідент ")". Тип = УточнІдент | ARRAY [КонстВираз {"," КонстВираз}] OF Тип | RECORD ["("УточнІдент")"] СписокПолів {";" СписокПолів} END | POINTER TO Тип | PROCEDURE [ФормальніПарам]. СписокПолів = [СписокІдент ":" Тип]. ПослОператорів = Оператор {";" Оператор}. Оператор = [ Позначення ":=" Вираз | Позначення ["(" [СписокВиразів] ")"] | IF Вираз THEN ПослОператорів {ELSIF Вираз THEN ПослОператорів} [ELSE ПослОператорів] END | CASE Вираз OF Варіант {"|" Варіант} [ELSE ПослОператорів] END | WHILE Вираз DO ПослОператорів END | REPEAT ПослОператорів UNTIL Вираз | FOR ідент ":=" Вираз TO Вираз [BY КонстВираз] DO ПослОператорів END | LOOP ПослОператорів END | WITH Охорона DO ПослОператорів {"|" Охорона DO ПослОператорів} [ELSE ПослОператорів] END | EXIT | RETURN [Вираз] ]. Варіант = [МіткиВаріанта {"," МіткиВаріанта} ":" ПослОператорів]. МіткиВаріанта = КонстВираз [".." КонстВираз]. Охорона = УточнІдент ":" УточнІдент. КонстВираз = Вираз. Вираз = ПростийВираз [Відношення ПростийВираз]. ПростийВираз = ["+" | "-"] Доданок {ОперДодав Доданок}. Доданок = Множник {ОперМнож Множник}. Множник = Позначення ["(" [СписокВиразів] ")"] | число | символ | рядок | NIL | Множина | "(" Вираз ")" | " ~ " Множник. Множина = "{" [Елемент {"," Елемент}] "}". Елемент = Вираз [".." Вираз]. Відношення = "=" | "#" | "<" | "<=" | ">" | ">=" | IN | IS. ОперДодав = "+" | "-" | OR. ОперМнож = "*" | "/" | DIV | MOD | "&". Позначення = УточнІдент {"." ідент | "[" СписокВиразів "]" | "^" | "(" УточнІдент ")"}. СписокВиразів = Вираз {"," Вираз}. СписокІдент = ІдентОзн {"," ІдентОзн}. УточнІдент = [ідент "."] ідент. ІдентОзн = ідент [ "*" | "-" ].
Основні елементи
Програма на Обероні являє собою набір модулів. У загальному виді модуль має вигляд:
MODULE Ім'я; IMPORT СписокІмпорту; Означення; BEGIN Оператори END Ім'я.
Список імпорту визначає, з яких модулів будуть імпортовані зовнішні імена. Визначення включають визначення типів, процедур, функцій, змінних, констант. При цьому визначення імен, позначених зірочкою, експортуються даним модулем, тобто будуть видні іншим модулям, що імпортують даний. В Обероні-2 допустимо також позначати імена знаком мінус, у цьому випадку вони експортуються в режимі «тільки для читання».
Тіло модуля виконується при його завантаженні. У Компонентному Паскалі всередині тіла модуля (у розділі BEGIN..END) появилася можливість додати секцію CLOSE:
BEGIN Оператори CLOSE Оператори END Ім'я.
Тут оператори, розташовані між BEGIN і CLOSE, виконуються при завантаженні модуля, а оператори, розташовані між CLOSE і END — при вивантаженні його з пам'яті. Таке розширення було признане корисним для компонентних програм, які завантажують і вивантажують модулі динамічно.
Створювані програмістом типи даних обмежені наступним набором: типи-масиви ARRAY, типи-запису RECORD, процедурні типи PROCEDURE, типи-вказівники POINTER. Вказівник може вказувати тільки на масив або запис.
Синтаксис внутрішньої частини програми досить традиційний і простий. Мова підтримує традиційний набір конструкцій: умовний оператор IF, оператор вибору CASE, цикли (з передумовою — WHILE, з постумовою REPEAT..UNTIL, безумовний — LOOP, з лічильником — FOR). Подібно до Модули-2, великі й малі літери в ідентифікаторах різняться, усі зарезервовані слова пишуться великими літерами. Усі мовні конструкції, крім циклу REPEAT..UNTIL закінчуються ключовим словом END і допускають розташування усередині декількох операторів без використання складеного оператора BEGIN..END. Природно, як і в Модулі-2, немає безумовних переходів.
Парадигма об'єктно-орієнтованого програмування підтримується механізмом розширених записів (у мові немає окремого ключового слова для опису класів, таких, як «class» або «object», прийнято, що звичайного поняття «тип запис» цілком достатньо). По суті, кожний тип запис — це опис класу, а поля запису — це дані-члени класу.
У вихідному Обероні методів (процедур і функцій, пов'язаних із класом) немає взагалі. Механізм методів може бути використаний шляхом оголошення в записі полів процедурного типу, яким при створенні екземпляра класу надаються значення конкретних процедур. Виклик таких процедур провадиться традиційним способом звертання до поля запису, за умовчанням процедура не знає про екземпляр класу, для якого вона була викликана (немає механізму, аналогічного this
в C++ або Java, або Self
в Object Pascal), і якщо такі дані їй необхідні, то посилання на екземпляр повинне бути передане явно (наприклад, через параметр). Відсутність явно описуваних методів була однією із властивостей вихідного Оберона, що викликала критику призвичаєних до традиційних гібридних мов програмістів. З іншого боку, пропонований Обероном механізм дозволяє реалізувати все, що реалізовано традиційними засобами мов із методами, і, навіть більше того, — в Обероні кожен екземпляр класу може мати власний варіант методу (значення поля процедурного типу), тоді як при описі методів як частин класу всі екземпляри працюють з одним варіантом методу. В Обероні-2 методи були все-таки введені. Методи описуються окремо від типу запис, із зазначенням типу, з яким вони пов'язані.
Новий тип запис може бути оголошений як розширення існуючого. У цьому разі тип, що розширюється, вказується в описі запису в дужках після ключового слова RECORD. Розширений тип автоматично отримує всі поля розширюваного типу й (в Обероні-2) пов'язується з усіма процедурами, зв'язаними з розширюваним типом. Процедури, пов'язані з новим типом, можуть мати ту ж сигнатуру, що й процедури, пов'язані з розширюваним типом — у такий спосіб забезпечується перевизначення методів у породжених типах. У Компонентному Паскалі, з метою повнішого контролю за розширюваністю, типи запису за умовчанням не є розширюваними, а методи не можуть бути перевизначені. Щоб дозволити розширення записів і перевизначення методів, використовуються спеціально введені ключові слова EXTENSIBLE, ABSTRACT, LIMITED, EMPTY.
Приклад програми Hello, World! мовою Оберон.
Концепції програмування
- Компонентне програмування
Оберон націлений на компонентно-орієнтовану розробку програмного забезпечення Інкапсуляція підтримується винятково на рівні модуля — усі типи, оголошені всередині модуля, один для одного абсолютно прозорі. З інших модулів доступно те, що оголошене при визначенні як експортоване.
Поліморфізм забезпечується за рахунок механізму методів (і процедурні поля в Обероні, і методи в Обероні-2 поводяться як віртуальні, у термінології більшості гібридних об'єктно-орієнтованих мов), а також завдяки розширеній конструкції WITH, що дозволяє виконувати різні групи операторів залежно від того, до якого з розширених типів відноситься її аргумент.
У мові відсутній спеціальний механізм конструкторів. Рекомендованим методом створення й ініціалізації об'єктів є опис породжуючих модулів і процедур (у традиційній термінології ООП — factory).
Програма в такій технології є набором відносно самостійних компонентів (у цьому разі — модулів), що мають приховану від зовнішнього світу внутрішню структуру й чітко визначений інтерфейс. Модулі можуть завантажуватися й вивантажуватися динамічно, під час роботи програми, система надає розвинуті засоби контролю типів під час виконання, які дозволяють писати універсальні алгоритми обробки даних, що не залежать від конкретних типів цих даних (наприклад, бібліотека для роботи із СКБД може надавати методи, що записують результат запиту з бази в запис довільної структури, якщо набір і типи полів цього запису відповідають набору й типам полів у БД).
У компонентній парадигмі вважається невдалим архітектурне рішення, пов'язане із широким використанням успадкування реалізацій від типів, оголошених в іншому компоненті, оскільки це призводить до явища, відомого як «крихкість базового типу» — після того, як від базового типу породжена велика кількість типів-нащадків (при цьому частина з них може бути навіть невідома розробнику базового типу), будь-які зміни в реалізації базового типу стають украй ризикованими, тому що вони можуть непередбаченим чином відобразитися на типах-нащадках.
Відомо, що однією із проблем застосування об'єктно-орієнтованого програмування в системному програмуванні є необхідність мати групи маленьких класів, які могли б взаємодіяти без додаткових накладних витрат. В Обероні цієї проблеми немає — всі типи, що визначені в одному модулі, бачать один одного, а проблем з надійністю це не створює, тому що модуль все-таки розробляється, тестується й супроводжується як єдине ціле.
Типова система, розроблена на Обероні, є набором модулів із процедурними інтерфейсами, через які модулі обмінюються даними, у тому числі й об'єктами. При цьому всі засоби інкапсуляції діють тільки в міжмодульній взаємодії, що робить зручним системне програмування з використанням об'єктів.
- Об'єктно-орієнтоване програмування
Засоби об'єктного програмування інтерпретуються в Обероні як природний розвиток засобів роботи із записами в модульній системі, точніше, як технічний інструментарій для вирішення конкретного архітектурного завдання: забезпечити ефективний «поділ праці» між різними модулями при роботі з динамічними типами й структурами даних: наприклад, робота із вказівниками в списку може бути прихована (разом із відповідними полями) в одному модулі, а визначення й робота з конкретним «наповненням» елементів списку — задаватися в іншому (або, частіше, інших). У цьому сенсі технологія об'єктного програмування в Обероні підпорядкована концепції модульності: вона тут є, скоріше, засобом опису даних, ніж засобом побудови архітектури застосунка в цілому.
Вплив Оберона на інші мови
За твердженням Вірта, розробники мови Java за кілька років до її створення «вивчили вихідні коди Оберона й, зокрема, вихідні коди оберонівських збирачів сміття. Потім вони зіпсували Оберон синтаксисом Сі й назвали отримане словом Java». Хоча від усного виступу не можна вимагати абсолютної точності формулювань, але у всякому разі безсумнівна подібність ідеологій Оберона й Java (прагнення до мінімалізму й строгої типізації, обмеження множинного успадкування, автоматичне керування пам'яттю) каже про те, що тут має місце певний консенсус щодо того, які засоби повинні складати ядро сучасної мови програмування загального призначення. Очевидно й те, що із двох мов Оберон спроектований набагато ретельніше.
У родину мов Оберон входять також , , Component Pascal (), Active Oberon, тощо.
Версії мови
Вихідна версія Oberon («класичний Оберон») — найкоротша, з найменшою кількістю ключових слів і синтаксичних конструкцій. Вона була використана як база для створення родини мов, кожна з яких розширює класичну мову в якому-небудь напрямку або відрізняється від неї деякими деталями.
- Oberon-2
У 1992 році Ніклаус Вірт і його учень Ханспетер Месенбек (Hanspeter Moessenboek) — нині професор Університету ім. Йоганна Кеплера в Лінці — опублікували опис доповненого варіанта Оберона, що отримав назву Оберон-2. Він є уточненою версією класичного Оберона. Доповнення, внесені в Оберон-2, оформлені дуже економно й полягають у наступному:
- додані процедури, що пов'язані з типом і допускають перевизначення для породжених типів (наближений аналог віртуальних методів в інших об'єктно-орієнтованих мовах);
- у мову повернуто оператор FOR циклу із кроком;
- додана можливість експорту описів у режимі «тільки для читання».
Цікаво, що незважаючи на розширення мови, обсяг формального опису синтаксису Оберона-2 менший, ніж обсяг опису класичного Оберона. Це сталося в результаті оптимізації опису синтаксису. Існує оптимізувальний компілятор для Oberon-2;
Є також компілятор мови Оберон-2у байт-код віртуальної машини Ява (Java Virtual Machine). Розроблений С.Свердловим (Вологда, ВДПУ) в 1998 році компілятор працює в Windows 95/NT. Генерує файли класів (.class), які можуть завантажуватися й виконуватися віртуальною машиною мови Ява. Дозволяє створювати застосунки й аплети. Містить стандартні для Оберона вимоги бібліотеки, а також інтерфейси для Java API.
, реалізації якого є для багатьох обчислювальних платформ.
- Компонентний Паскаль (Component Pascal)
Оберон-2 відразу після опублікування в 1992 році розглядався як кандидат на роль стандарту мови (конференція Oakwood Conference, Croydon, 1993), але практичний досвід, накопичений при створенні великих програмних комплексів, виявив деякі слабості нововведень і бажаність подальших уточнень (що зайвий раз підкреслює мудрість консерватизму, виявленого Віртом у визначенні класичного Оберона). Ці уточнення були початі у варіанті Оберона-2, названому і опублікованому в 1999 році, компанією , утвореної в 1992 році учнями Вірта (сам Вірт став членом ради директорів). Як і при переході від Оберона до Оберона-2, ці уточнення зроблені максимально економно. Зокрема, тепер мова повністю підтримує методологію компонентно-орієнтованого програмування. Завдяки останній обставині, Компонентний Паскаль тепер є, мабуть, найдосконалішим серед прямих нащадків класичного Оберона. Однак він може бути скорочений не тільки до підмножини, еквівалентної первісному Оберону, але й до іншої повноцінної мінімалістичної підмножини, у якій спадкування й перевизначення методів допускається тільки для чисто інтерфейсних типів і методів (визначених з атрибутом ABSTRACT). Ця обставина виявляє дещо проміжний характер Оберона-2.
У Компонентний Паскаль у порівнянні з Обероном-2 додані засоби, що дозволяють розробникові повністю контролювати розширення експортованих типів і перевизначення методів (атрибути EXTENSIBLE, ABSTRACT, NEW, EMPTY, а також можливість обмеженого експорту методу «тільки для реалізації»). Додано блок завершення тіла модуля (ключове слово CLOSE) і наперед визначений порожній метод FINALIZE. Система основних (елементарних) типів приведена у відповідність із типами Java. Уведено неявний рядковий тип. Компанія Oberon Microsystems, що визначила , випустила також бібліотеку BlackBox Component Framework і середовище візуального програмування — невеликі за розміром і невимогливі до ресурсів, цілком побудовані на Компонентному Паскалі.
Згодом BlackBox був розширений середовищем крос-програмування Denia, що дозволяє виконувати крос-програмування для JBed (яка теж повністю реалізована на Компонентному Паскалі). JBed призначена для вбудованих систем, що працюють у реальному часі, наприклад, для промислових автоматів.
- Oberon SA і Oberon-07
— це версія мови Oberon, розроблена Н.Віртом для процесора , використовуваного в безпілотному вертольоті.
На основі досвіду розробки Н.Вірт у 2007 році підготував зміни й доповнення до класичного Оберона для строгішої підтримки структурного програмування, ніж, наприклад, в Oberon-2 або Компонентному Паскалі. Нова версія мови отримала назву Oberon-07. Але відносно підтримки об'єктно-орієнтованого програмування мова Oberon-07 не йде за Обероном-2, а продовжує мінімалістичну лінію класичного Оберона, включаючи відсутність підтримки процедур, що прив'язані до типів записів.
має такі основні відмінності від класичного Оберона:
- у циклі WHILE дозволені кілька охоронюваних гілок (ELSIF … DO). Тим самим забезпечена повна явна підтримка . Раніше цикл Дейкстри моделювався за допомогою циклу LOOP;
- відповідно, виключений неструктурований цикл LOOP разом з оператором EXIT (вихід із циклу);
- у процедурі тепер може бути тільки одна точка виходу, фіксована наприкінці тіла процедури: RETURN, по суті, перестав бути оператором, перетворившись у таку ж синтаксичну частину опису процедури, як ключове слово PROCEDURE і т. д.;
- доданий оператор циклу FOR;
- виключене неявне зведення типу INTEGER до REAL і типів із різною розрядністю один до одного;
- дозволені посилання тільки на записи;
- уточнене правило імпорту/експорту: експорт змінних дозволений тільки для читання, специфікатор експорту один — «*»;
- уточнені типи даних — CHAR підтримує множину Latin-1, INTEGER — −2^31 — +2^31-1, REAL і LONGREAL — IEEE Standard, 32 і 64 біти відповідно, SET — множину цілих між 0 і 31.
Австралійська компанія CFB Software (м. Брисбен) при Університеті штату Квінсленд розробила IDE Astrobe для мови Oberon-07 і синтаксичні діаграми мови Oberon-07.
Мови родини Oberon
Ці мови вже можна називати не розширеннями чи версіями Оберона, а самостійними мовами. У них істотно розширено синтаксис, уведено конструкції для опису класичних «властивостей» (property) з контролем читання/запису, числові типи з розміром, що задається у бітах. Уведено підтримку активних об'єктів, що обмінюються повідомленнями у форматі, обумовленому РБНФ-описом, обробка винятків.
- Глагол
У Росії розроблено мову Глагол, структурно дуже близьку до Оберона-2. Головна її відмінність полягає у використанні російських службових слів. Крім цього, мова має ще ряд відмінностей від Оберона-2:
- вилучені методи (функції та процедури), що пов'язані з типом;
- не використовуються псевдоніми в оголошеннях імпорту модулів;
- додана вихідних текстів;
- додана можливість безпосередньо вказувати шлях до використовуваних модулів;
- додана спеціальна позначка для головного модуля програми, що запускається;
- доданий вбудований тип-ітератор для прискорення послідовного доступу до масиву;
- змінені позначки експорту для змінних, констант і процедур, а також спосіб указання параметрів-змінних;
- змінений синтаксис оператора WITH (ДЛЯ);
- заборонена передача через параметри процедур масивів і записів;
- змінені розміри деяких типів даних;
- змінений набір убудованих процедур і склад системних модулів.
Мова підтримує юнікод. Реалізовано компілятор (називаний перетворювачем) для платформ Windows і PocketPC, а також середовище розробки (також для Windows).
Цікаві факти
- За підрахунками, опублікованими в статті Сергія Свердлова «Арифметика синтаксису», «лінія Вірта», як він її назвав — лінія, що включає Паскаль, Модулу-2, Оберон і Оберон-2 — це єдиний приклад «генетичної лінії» мов-нащадків Алголу-60, у якій складність мови, визначена з необхідними застереженнями як кількість лексем у її описі, стабільно знижувалася й у цей час виявляється нижчою, ніж у загального «прабатька» — Алголу-60. Усі мови «лінії Вірта» простіші за Алгол-60, і кожна наступна мова в цій лінії простіша за попередню. У той же час Ада більш ніж удвічі складніша за свого попередника — Паскаля, C++ приблизно в 1,7 раза складніший за Сі, а в лінійці Паскаль — Турбо Паскаль різних версій — Object Pascal складність експоненціально зростає від версії до версії.
- Епіграфом до опису оригінального Оберона була обрана фраза Ейнштейна: «Роби настільки просто, наскільки можливо, але не простіше цього». В описі Оберона-2 цього епіграфа немає.
Примітки
- . Архів оригіналу за 19 вересня 2011. Процитовано 18 серпня 2010.
- N. Wirth and J. Gutknecht. Project Oberon. Addison-Wesley, 1992
- N. Wirth. The Programming Language Oberon. Software — Practice and Experience, Vol.18, No.7, p.671-690
- C. Szyperski. Component Software — Beyond Object-Oriented Programming. Addison-Wesley, 1998.
- Лекція Н. Вірта в Нижньогородському державному університеті ім. М. I. Лобачевського
- Мова програмування Оберон-2 [ 31 липня 2011 у Wayback Machine.], Х.Мессенбек, Н.Вірт
- A Description of the Oberon-2 Language, Paul Floyd (англ.)
- XDS Family of Products. Архів оригіналу за 23 серпня 2011. Процитовано 18 серпня 2010.
- . Архів оригіналу за 21 серпня 2010. Процитовано 18 серпня 2010.
- Oberon microsystems AG
- Повідомлення про мову Компонентний Паскаль
- . Архів оригіналу за 18 грудня 2019. Процитовано 18 серпня 2010.
- (PDF). Архів оригіналу (PDF) за 26 травня 2011. Процитовано 26 травня 2011.
- (PDF). Архів оригіналу (PDF) за 6 січня 2012. Процитовано 6 січня 2012.
- (PDF). Архів оригіналу (PDF) за 19.04.2009. Процитовано 19.04.2009.
- Е.Дейкстра. Дисципліна програмування. Мир, Москва, 1978
- IDE Astrobe для мови Oberon-07
- Синтаксичні діаграми мови Oberon-07[недоступне посилання з червня 2019]
- Розробки на Глаголі. Архів оригіналу за 21 серпня 2011. Процитовано 18 серпня 2010., glagol.nad.ru
- Офіційний сайт мови Глагол. Архів оригіналу за 21 серпня 2011. Процитовано 18 серпня 2010.
Література
- , Питер, 2007, (рос.)
- далі — англійською мовою
- — NY: ACM Press, 1992 — , 22Mb
- , 1.2 Мб
- , 4.2Мб PDF
- N.Wirth.The Programming Language Oberon[недоступне посилання з червня 2019], 91Кб
- , 400Кб
Посилання
- (англ.)
- Мова Оберон. Короткий путівник. Руслан Богатирьов, Мир ПК, жовтень 2005(рос.)
- Месенбек, Н. Вірт. Мова програмування Оберон-2, Інститут комп'ютерних систем, ETH, Цюрих,1996. (рос.) pdf[недоступне посилання з квітня 2019] (рос.)
- Мова програмування Оберон- перший російський ресурс (1998) (рос.)
- Портал OberonCore.ru (рос.)
- (рос.)
- Мови програмування й технології «Оберон»: перспективи для індустрії та освіти, Орловський ДУ, матеріали секції-семінару, 30 березня 2006 р. (рос.)
- Підготовка навчальних посібників російською мовою (рос.)
Див. також
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U Vikipediyi ye statti pro inshi znachennya cogo termina Oberon Oberon mova programuvannya visokogo rivnya rozroblena Niklausom Virtom Dlya vikonannya program ciyeyu movoyu prinaznachena odnojmenna operacijna sistema avtori N Virt i Jurg Gutknecht OberonParadigmadekilka imperativna strukturovana modulnaData poyavi1986TvorciNiklaus VirtRozrobnikNiklaus VirtSistema tipizaciyistatichna Pid vplivom vid PascalVplinula na ZonnonLicenziyaLicenziya BSDVebsajtprojectoberon netSistemi j seredovishaProgrami sho napisani movoyu programuvannya Oberon vimagayut pevnoyi pidtrimki pid chas vikonannya yim neobhidnij dinamichnij zavantazhuvach i centralizovano vikonuvanij avtomatichnij zbirach smittya Dlya cogo programam sho napisani movoyu Oberon potribne specialne operacijne seredovishe Zvichajnim sposobom jogo realizaciyi ye dodavannya v sistemu naboru bibliotek sho realizuyut neobhidni komponenti Zagalom kazhuchi operacijnomu seredovishu zovsim ne obov yazkovo potribna okrema operacijna sistema vono samo po sobi mozhe yavlyati soboyu operacijnu sistemu Takimi ye sistemi Native Oberon dlya pervisnogo Oberona j dlya Active Oberon U cej chas isnuyut kompilyatori Oberona v bajt kod Virtualnoyi Java mashini i dlya virtualnoyi mashini NET Operacijnimi sistemami j seredovishami dlya vikonannya program na movah rodini Oberon sho rozvilisya z pervisnoyi sistemi Oberon ye ETH Oberon Bluebottle tosho Na bazi Oberona buli rozrobleni proekti ta inshi Prostota Oberona j nayavnist vihidnih tekstiv originalnoyi realizaciyi dozvolyayut legko adaptuvati jogo dlya specialnih klasiv zavdan Ale vsi ci Oberoni duzhe blizki mizh soboyu oskilki j pervisnij Oberon duzhe prostij Istoriya moviOsnovoyu dlya Oberona posluzhila mova sho virosla z Paskalya za slovami Virta spochatku sistemu hotili pisati bezposeredno na Moduli ale prijshli do visnovku pro neobhidnist yiyi dorobki j skorochennya sho j privelo do poyavi Oberona Metoyu proektu Project Oberon Niklausa Virta i Yurga Gutknehta v 1986 1989 rokah bulo stvorennya z nulya dostupnoyi dlya rozglyadu j nadijnoyi operacijnoyi sistemi dlya odnokoristuvalnickoyi robochoyi stanciyi Dlya realizaciyi cogo proektu v 1988 roci Niklausom Virtom bula sproektovana mova programuvannya visokogo rivnya zagalnogo priznachennya takozh nazvana Oberonom U 1989 roci v ETH bula vipushena persha realizaciya movi Oberon dlya procesoriv rodini NS32000 Vona bula stvorena yak komponent operacijnogo seredovisha Oberon Cej kompilyator vimagaye menshe 50 Kbajt pam yati skladayetsya z 6 moduliv zagalnim obsyagom blizko 4000 ryadkiv i sam sebe kompilyuye za 15 sekund na komp yuteri iz procesorom NS32532 taktova chastota 25 MGc Mova OberonNovovvedennya Mova zberegla osnovni risi sintaksisu j bula ob yektnim rozshirennyam Ce dozvolilo vidmovitisya vid mehanizmu variantnih zapisiv Moduli sho ye vidstupom vid pervisnoyi statichnoyi tipizaciyi sho dalo mozhlivist zaprovaditi mehanizm avtomatichnogo keruvannya pam yattyu zbirannya smittya z movi viklyuchena mozhlivist zvilnennya dinamichno vidilenoyi pam yati za dopomogoyu osoblivogo operatora a zamist nogo same seredovishe vikonannya mistit modul sho povertaye nevikoristovuvanu pam yat sistemi Avtomatichne keruvannya pam yattyu ye zasobom pidvishennya nadijnosti program iz dinamichnimi strukturami danih tomu sho viklyuchaye lyudski pomilki vlastivi napriklad takim movam yak S C Sproshennya sintaksisu Shob dosyagti maksimalnoyi nadijnosti ta produktivnosti translyaciyi bulo zdijsneno znachne sproshennya movi za rahunok vidmovi vid zasobiv yaki bulo viznano nepotribnimi vihodyachi z dosvidu rozrobki realizaciyi ta ekspluataciyi inshih mov abo uskladnyuvali kompilyator bez nalezhnogo vipravdannya z poglyadu produktivnosti abo buli zanadto skladnimi abi peredati v zovnishni biblioteki chi pogano poyednuvalisya z mehanizmami modulnosti j avtomatichnogo keruvannya pam yattyu zapisi z variantami mnozhini zagalnogo vidu bezznakovij cilij tip lokalni moduli moduli viznachen spiski eksportu operator for kolishnij variant operatora with osoblivij sintaksis viznachennya golovnoyi programi Rudimentarni zasobi pidtrimki paralelnogo programuvannya sho buli v Moduli 2 ne vvijshli do movi oskilki vona priznachalasya dlya odnokoristuvackoyi operacijnoyi sistemi Z metoyu sproshennya vidmovilisya vid obrobki vinyatkiv Bulo sprosheno opis masiviv indeksi masiviv mozhut buti tilki cilimi chislami i zavzhdi pochinayutsya z nulya podibno do movi C obmezheno vikoristannya vkazivnikiv mozhut isnuvati vkazivniki lishe na zapisi ta masivi u spiskah importu vkazuyetsya tilki importovanij modul a pri vikoristanni importovanih imen potribna obov yazkova kvalifikaciya yavne zaznachennya imeni modulya eksportera U statti Vid Moduli do Oberona Virt dokladno prokomentuvav prichini viluchennya kozhnogo z elementiv Z mirkuvan dostatnogo minimumu do movi ne bulo vklyucheno sintaksichnogo ponyattya metodiv procedur i funkcij sho pov yazani z tipom tomu sho cej mehanizm u najzagalnishomu viglyadi mozhna legko zmodelyuvati stvoryuyuchi v ob yektah zapisah u movi Oberon polya procedurnogo tipu j nadayuchi yim znachennya procedur sho vidpovidayut metodam Takim chinom v Oberoni minimalnimi zasobami pidtrimuyetsya ob yektno oriyentovane programuvannya dlya sproshennya j priskorennya procesu translyaciyi kodu Zavdyaki vnesenim zminam Oberon stav sintaksichno prostishim Opis jogo sintaksisu vmistivsya na odnij storinci povnij opis movi maye blizko 20 storinok sho vdvichi menshe za opis Oberon ye yaksho ne minimalnoyu to u bud yakomu razi odniyeyu z najmenshih za obsyagom universalnih mov programuvannya visokogo rivnya Sintaksis u RBNF Sintaksis Oberona 2 viriznyayetsya kompaktnistyu Vin viznachenij u nastupnih 33 rechennyah RBNF dayetsya za pre Modul MODULE ident SpisokImportu PoslOgolosh BEGIN PoslOperatoriv END ident SpisokImportu IMPORT ident ident ident ident PoslOgolosh CONST OgoloshKonst TYPE OgoloshTipu VAR OgoloshZmin OgoloshProc ViperedzhOgol OgoloshKonst IdentOzn KonstViraz OgoloshTipu IdentOzn Tip OgoloshZmin SpisokIdent Tip OgoloshProc PROCEDURE Prijmach IdentOzn FormalniParam PoslOgolosh BEGIN PoslOperatoriv END ident ViperedzhOgol PROCEDURE Prijmach IdentOzn FormalniParam FormalniParam SekciyaFP SekciyaFP UtochnIdent SekciyaFP VAR ident ident Tip Prijmach VAR ident ident Tip UtochnIdent ARRAY KonstViraz KonstViraz OF Tip RECORD UtochnIdent SpisokPoliv SpisokPoliv END POINTER TO Tip PROCEDURE FormalniParam SpisokPoliv SpisokIdent Tip PoslOperatoriv Operator Operator Operator Poznachennya Viraz Poznachennya SpisokViraziv IF Viraz THEN PoslOperatoriv ELSIF Viraz THEN PoslOperatoriv ELSE PoslOperatoriv END CASE Viraz OF Variant Variant ELSE PoslOperatoriv END WHILE Viraz DO PoslOperatoriv END REPEAT PoslOperatoriv UNTIL Viraz FOR ident Viraz TO Viraz BY KonstViraz DO PoslOperatoriv END LOOP PoslOperatoriv END WITH Ohorona DO PoslOperatoriv Ohorona DO PoslOperatoriv ELSE PoslOperatoriv END EXIT RETURN Viraz Variant MitkiVarianta MitkiVarianta PoslOperatoriv MitkiVarianta KonstViraz KonstViraz Ohorona UtochnIdent UtochnIdent KonstViraz Viraz Viraz ProstijViraz Vidnoshennya ProstijViraz ProstijViraz Dodanok OperDodav Dodanok Dodanok Mnozhnik OperMnozh Mnozhnik Mnozhnik Poznachennya SpisokViraziv chislo simvol ryadok NIL Mnozhina Viraz Mnozhnik Mnozhina Element Element Element Viraz Viraz Vidnoshennya lt lt gt gt IN IS OperDodav OR OperMnozh DIV MOD amp Poznachennya UtochnIdent ident SpisokViraziv UtochnIdent SpisokViraziv Viraz Viraz SpisokIdent IdentOzn IdentOzn UtochnIdent ident ident IdentOzn ident pre Osnovni elementi Programa na Oberoni yavlyaye soboyu nabir moduliv U zagalnomu vidi modul maye viglyad MODULE Im ya IMPORT SpisokImportu Oznachennya BEGIN Operatori END Im ya Spisok importu viznachaye z yakih moduliv budut importovani zovnishni imena Viznachennya vklyuchayut viznachennya tipiv procedur funkcij zminnih konstant Pri comu viznachennya imen poznachenih zirochkoyu eksportuyutsya danim modulem tobto budut vidni inshim modulyam sho importuyut danij V Oberoni 2 dopustimo takozh poznachati imena znakom minus u comu vipadku voni eksportuyutsya v rezhimi tilki dlya chitannya Tilo modulya vikonuyetsya pri jogo zavantazhenni U Komponentnomu Paskali vseredini tila modulya u rozdili BEGIN END poyavilasya mozhlivist dodati sekciyu CLOSE BEGIN Operatori CLOSE Operatori END Im ya Tut operatori roztashovani mizh BEGIN i CLOSE vikonuyutsya pri zavantazhenni modulya a operatori roztashovani mizh CLOSE i END pri vivantazhenni jogo z pam yati Take rozshirennya bulo priznane korisnim dlya komponentnih program yaki zavantazhuyut i vivantazhuyut moduli dinamichno Stvoryuvani programistom tipi danih obmezheni nastupnim naborom tipi masivi ARRAY tipi zapisu RECORD procedurni tipi PROCEDURE tipi vkazivniki POINTER Vkazivnik mozhe vkazuvati tilki na masiv abo zapis Sintaksis vnutrishnoyi chastini programi dosit tradicijnij i prostij Mova pidtrimuye tradicijnij nabir konstrukcij umovnij operator IF operator viboru CASE cikli z peredumovoyu WHILE z postumovoyu REPEAT UNTIL bezumovnij LOOP z lichilnikom FOR Podibno do Moduli 2 veliki j mali literi v identifikatorah riznyatsya usi zarezervovani slova pishutsya velikimi literami Usi movni konstrukciyi krim ciklu REPEAT UNTIL zakinchuyutsya klyuchovim slovom END i dopuskayut roztashuvannya useredini dekilkoh operatoriv bez vikoristannya skladenogo operatora BEGIN END Prirodno yak i v Moduli 2 nemaye bezumovnih perehodiv Paradigma ob yektno oriyentovanogo programuvannya pidtrimuyetsya mehanizmom rozshirenih zapisiv u movi nemaye okremogo klyuchovogo slova dlya opisu klasiv takih yak class abo object prijnyato sho zvichajnogo ponyattya tip zapis cilkom dostatno Po suti kozhnij tip zapis ce opis klasu a polya zapisu ce dani chleni klasu U vihidnomu Oberoni metodiv procedur i funkcij pov yazanih iz klasom nemaye vzagali Mehanizm metodiv mozhe buti vikoristanij shlyahom ogoloshennya v zapisi poliv procedurnogo tipu yakim pri stvorenni ekzemplyara klasu nadayutsya znachennya konkretnih procedur Viklik takih procedur provaditsya tradicijnim sposobom zvertannya do polya zapisu za umovchannyam procedura ne znaye pro ekzemplyar klasu dlya yakogo vona bula viklikana nemaye mehanizmu analogichnogo this v C abo Java abo Self v Object Pascal i yaksho taki dani yij neobhidni to posilannya na ekzemplyar povinne buti peredane yavno napriklad cherez parametr Vidsutnist yavno opisuvanih metodiv bula odniyeyu iz vlastivostej vihidnogo Oberona sho viklikala kritiku prizvichayenih do tradicijnih gibridnih mov programistiv Z inshogo boku proponovanij Oberonom mehanizm dozvolyaye realizuvati vse sho realizovano tradicijnimi zasobami mov iz metodami i navit bilshe togo v Oberoni kozhen ekzemplyar klasu mozhe mati vlasnij variant metodu znachennya polya procedurnogo tipu todi yak pri opisi metodiv yak chastin klasu vsi ekzemplyari pracyuyut z odnim variantom metodu V Oberoni 2 metodi buli vse taki vvedeni Metodi opisuyutsya okremo vid tipu zapis iz zaznachennyam tipu z yakim voni pov yazani Novij tip zapis mozhe buti ogoloshenij yak rozshirennya isnuyuchogo U comu razi tip sho rozshiryuyetsya vkazuyetsya v opisi zapisu v duzhkah pislya klyuchovogo slova RECORD Rozshirenij tip avtomatichno otrimuye vsi polya rozshiryuvanogo tipu j v Oberoni 2 pov yazuyetsya z usima procedurami zv yazanimi z rozshiryuvanim tipom Proceduri pov yazani z novim tipom mozhut mati tu zh signaturu sho j proceduri pov yazani z rozshiryuvanim tipom u takij sposib zabezpechuyetsya pereviznachennya metodiv u porodzhenih tipah U Komponentnomu Paskali z metoyu povnishogo kontrolyu za rozshiryuvanistyu tipi zapisu za umovchannyam ne ye rozshiryuvanimi a metodi ne mozhut buti pereviznacheni Shob dozvoliti rozshirennya zapisiv i pereviznachennya metodiv vikoristovuyutsya specialno vvedeni klyuchovi slova EXTENSIBLE ABSTRACT LIMITED EMPTY Priklad programi Hello World movoyu Oberon Koncepciyi programuvannyaKomponentne programuvannya Oberon nacilenij na komponentno oriyentovanu rozrobku programnogo zabezpechennya Inkapsulyaciya pidtrimuyetsya vinyatkovo na rivni modulya usi tipi ogolosheni vseredini modulya odin dlya odnogo absolyutno prozori Z inshih moduliv dostupno te sho ogoloshene pri viznachenni yak eksportovane Polimorfizm zabezpechuyetsya za rahunok mehanizmu metodiv i procedurni polya v Oberoni i metodi v Oberoni 2 povodyatsya yak virtualni u terminologiyi bilshosti gibridnih ob yektno oriyentovanih mov a takozh zavdyaki rozshirenij konstrukciyi WITH sho dozvolyaye vikonuvati rizni grupi operatoriv zalezhno vid togo do yakogo z rozshirenih tipiv vidnositsya yiyi argument U movi vidsutnij specialnij mehanizm konstruktoriv Rekomendovanim metodom stvorennya j inicializaciyi ob yektiv ye opis porodzhuyuchih moduliv i procedur u tradicijnij terminologiyi OOP factory Programa v takij tehnologiyi ye naborom vidnosno samostijnih komponentiv u comu razi moduliv sho mayut prihovanu vid zovnishnogo svitu vnutrishnyu strukturu j chitko viznachenij interfejs Moduli mozhut zavantazhuvatisya j vivantazhuvatisya dinamichno pid chas roboti programi sistema nadaye rozvinuti zasobi kontrolyu tipiv pid chas vikonannya yaki dozvolyayut pisati universalni algoritmi obrobki danih sho ne zalezhat vid konkretnih tipiv cih danih napriklad biblioteka dlya roboti iz SKBD mozhe nadavati metodi sho zapisuyut rezultat zapitu z bazi v zapis dovilnoyi strukturi yaksho nabir i tipi poliv cogo zapisu vidpovidayut naboru j tipam poliv u BD U komponentnij paradigmi vvazhayetsya nevdalim arhitekturne rishennya pov yazane iz shirokim vikoristannyam uspadkuvannya realizacij vid tipiv ogoloshenih v inshomu komponenti oskilki ce prizvodit do yavisha vidomogo yak krihkist bazovogo tipu pislya togo yak vid bazovogo tipu porodzhena velika kilkist tipiv nashadkiv pri comu chastina z nih mozhe buti navit nevidoma rozrobniku bazovogo tipu bud yaki zmini v realizaciyi bazovogo tipu stayut ukraj rizikovanimi tomu sho voni mozhut neperedbachenim chinom vidobrazitisya na tipah nashadkah Vidomo sho odniyeyu iz problem zastosuvannya ob yektno oriyentovanogo programuvannya v sistemnomu programuvanni ye neobhidnist mati grupi malenkih klasiv yaki mogli b vzayemodiyati bez dodatkovih nakladnih vitrat V Oberoni ciyeyi problemi nemaye vsi tipi sho viznacheni v odnomu moduli bachat odin odnogo a problem z nadijnistyu ce ne stvoryuye tomu sho modul vse taki rozroblyayetsya testuyetsya j suprovodzhuyetsya yak yedine cile Tipova sistema rozroblena na Oberoni ye naborom moduliv iz procedurnimi interfejsami cherez yaki moduli obminyuyutsya danimi u tomu chisli j ob yektami Pri comu vsi zasobi inkapsulyaciyi diyut tilki v mizhmodulnij vzayemodiyi sho robit zruchnim sistemne programuvannya z vikoristannyam ob yektiv Ob yektno oriyentovane programuvannya Zasobi ob yektnogo programuvannya interpretuyutsya v Oberoni yak prirodnij rozvitok zasobiv roboti iz zapisami v modulnij sistemi tochnishe yak tehnichnij instrumentarij dlya virishennya konkretnogo arhitekturnogo zavdannya zabezpechiti efektivnij podil praci mizh riznimi modulyami pri roboti z dinamichnimi tipami j strukturami danih napriklad robota iz vkazivnikami v spisku mozhe buti prihovana razom iz vidpovidnimi polyami v odnomu moduli a viznachennya j robota z konkretnim napovnennyam elementiv spisku zadavatisya v inshomu abo chastishe inshih U comu sensi tehnologiya ob yektnogo programuvannya v Oberoni pidporyadkovana koncepciyi modulnosti vona tut ye skorishe zasobom opisu danih nizh zasobom pobudovi arhitekturi zastosunka v cilomu Vpliv Oberona na inshi moviZa tverdzhennyam Virta rozrobniki movi Java za kilka rokiv do yiyi stvorennya vivchili vihidni kodi Oberona j zokrema vihidni kodi oberonivskih zbirachiv smittya Potim voni zipsuvali Oberon sintaksisom Si j nazvali otrimane slovom Java Hocha vid usnogo vistupu ne mozhna vimagati absolyutnoyi tochnosti formulyuvan ale u vsyakomu razi bezsumnivna podibnist ideologij Oberona j Java pragnennya do minimalizmu j strogoyi tipizaciyi obmezhennya mnozhinnogo uspadkuvannya avtomatichne keruvannya pam yattyu kazhe pro te sho tut maye misce pevnij konsensus shodo togo yaki zasobi povinni skladati yadro suchasnoyi movi programuvannya zagalnogo priznachennya Ochevidno j te sho iz dvoh mov Oberon sproektovanij nabagato retelnishe U rodinu mov Oberon vhodyat takozh Component Pascal Active Oberon tosho Versiyi moviVihidna versiya Oberon klasichnij Oberon najkorotsha z najmenshoyu kilkistyu klyuchovih sliv i sintaksichnih konstrukcij Vona bula vikoristana yak baza dlya stvorennya rodini mov kozhna z yakih rozshiryuye klasichnu movu v yakomu nebud napryamku abo vidriznyayetsya vid neyi deyakimi detalyami Oberon 2 U 1992 roci Niklaus Virt i jogo uchen Hanspeter Mesenbek Hanspeter Moessenboek nini profesor Universitetu im Joganna Keplera v Linci opublikuvali opis dopovnenogo varianta Oberona sho otrimav nazvu Oberon 2 Vin ye utochnenoyu versiyeyu klasichnogo Oberona Dopovnennya vneseni v Oberon 2 oformleni duzhe ekonomno j polyagayut u nastupnomu dodani proceduri sho pov yazani z tipom i dopuskayut pereviznachennya dlya porodzhenih tipiv nablizhenij analog virtualnih metodiv v inshih ob yektno oriyentovanih movah u movu povernuto operator FOR ciklu iz krokom dodana mozhlivist eksportu opisiv u rezhimi tilki dlya chitannya Cikavo sho nezvazhayuchi na rozshirennya movi obsyag formalnogo opisu sintaksisu Oberona 2 menshij nizh obsyag opisu klasichnogo Oberona Ce stalosya v rezultati optimizaciyi opisu sintaksisu Isnuye optimizuvalnij kompilyator dlya Oberon 2 Ye takozh kompilyator movi Oberon 2u bajt kod virtualnoyi mashini Yava Java Virtual Machine Rozroblenij S Sverdlovim Vologda VDPU v 1998 roci kompilyator pracyuye v Windows 95 NT Generuye fajli klasiv class yaki mozhut zavantazhuvatisya j vikonuvatisya virtualnoyu mashinoyu movi Yava Dozvolyaye stvoryuvati zastosunki j apleti Mistit standartni dlya Oberona vimogi biblioteki a takozh interfejsi dlya Java API realizaciyi yakogo ye dlya bagatoh obchislyuvalnih platform Komponentnij Paskal Component Pascal Oberon 2 vidrazu pislya opublikuvannya v 1992 roci rozglyadavsya yak kandidat na rol standartu movi konferenciya Oakwood Conference Croydon 1993 ale praktichnij dosvid nakopichenij pri stvorenni velikih programnih kompleksiv viyaviv deyaki slabosti novovveden i bazhanist podalshih utochnen sho zajvij raz pidkreslyuye mudrist konservatizmu viyavlenogo Virtom u viznachenni klasichnogo Oberona Ci utochnennya buli pochati u varianti Oberona 2 nazvanomu i opublikovanomu v 1999 roci kompaniyeyu utvorenoyi v 1992 roci uchnyami Virta sam Virt stav chlenom radi direktoriv Yak i pri perehodi vid Oberona do Oberona 2 ci utochnennya zrobleni maksimalno ekonomno Zokrema teper mova povnistyu pidtrimuye metodologiyu komponentno oriyentovanogo programuvannya Zavdyaki ostannij obstavini Komponentnij Paskal teper ye mabut najdoskonalishim sered pryamih nashadkiv klasichnogo Oberona Odnak vin mozhe buti skorochenij ne tilki do pidmnozhini ekvivalentnoyi pervisnomu Oberonu ale j do inshoyi povnocinnoyi minimalistichnoyi pidmnozhini u yakij spadkuvannya j pereviznachennya metodiv dopuskayetsya tilki dlya chisto interfejsnih tipiv i metodiv viznachenih z atributom ABSTRACT Cya obstavina viyavlyaye desho promizhnij harakter Oberona 2 U Komponentnij Paskal u porivnyanni z Oberonom 2 dodani zasobi sho dozvolyayut rozrobnikovi povnistyu kontrolyuvati rozshirennya eksportovanih tipiv i pereviznachennya metodiv atributi EXTENSIBLE ABSTRACT NEW EMPTY a takozh mozhlivist obmezhenogo eksportu metodu tilki dlya realizaciyi Dodano blok zavershennya tila modulya klyuchove slovo CLOSE i napered viznachenij porozhnij metod FINALIZE Sistema osnovnih elementarnih tipiv privedena u vidpovidnist iz tipami Java Uvedeno neyavnij ryadkovij tip Kompaniya Oberon Microsystems sho viznachila vipustila takozh biblioteku BlackBox Component Framework i seredovishe vizualnogo programuvannya neveliki za rozmirom i nevimoglivi do resursiv cilkom pobudovani na Komponentnomu Paskali Zgodom BlackBox buv rozshirenij seredovishem kros programuvannya Denia sho dozvolyaye vikonuvati kros programuvannya dlya JBed yaka tezh povnistyu realizovana na Komponentnomu Paskali JBed priznachena dlya vbudovanih sistem sho pracyuyut u realnomu chasi napriklad dlya promislovih avtomativ Oberon SA i Oberon 07 ce versiya movi Oberon rozroblena N Virtom dlya procesora vikoristovuvanogo v bezpilotnomu vertoloti Na osnovi dosvidu rozrobki N Virt u 2007 roci pidgotuvav zmini j dopovnennya do klasichnogo Oberona dlya strogishoyi pidtrimki strukturnogo programuvannya nizh napriklad v Oberon 2 abo Komponentnomu Paskali Nova versiya movi otrimala nazvu Oberon 07 Ale vidnosno pidtrimki ob yektno oriyentovanogo programuvannya mova Oberon 07 ne jde za Oberonom 2 a prodovzhuye minimalistichnu liniyu klasichnogo Oberona vklyuchayuchi vidsutnist pidtrimki procedur sho priv yazani do tipiv zapisiv maye taki osnovni vidminnosti vid klasichnogo Oberona u cikli WHILE dozvoleni kilka ohoronyuvanih gilok ELSIF DO Tim samim zabezpechena povna yavna pidtrimka Ranishe cikl Dejkstri modelyuvavsya za dopomogoyu ciklu LOOP vidpovidno viklyuchenij nestrukturovanij cikl LOOP razom z operatorom EXIT vihid iz ciklu u proceduri teper mozhe buti tilki odna tochka vihodu fiksovana naprikinci tila proceduri RETURN po suti perestav buti operatorom peretvorivshis u taku zh sintaksichnu chastinu opisu proceduri yak klyuchove slovo PROCEDURE i t d dodanij operator ciklu FOR viklyuchene neyavne zvedennya tipu INTEGER do REAL i tipiv iz riznoyu rozryadnistyu odin do odnogo dozvoleni posilannya tilki na zapisi utochnene pravilo importu eksportu eksport zminnih dozvolenij tilki dlya chitannya specifikator eksportu odin utochneni tipi danih CHAR pidtrimuye mnozhinu Latin 1 INTEGER 2 31 2 31 1 REAL i LONGREAL IEEE Standard 32 i 64 biti vidpovidno SET mnozhinu cilih mizh 0 i 31 Avstralijska kompaniya CFB Software m Brisben pri Universiteti shtatu Kvinslend rozrobila IDE Astrobe dlya movi Oberon 07 i sintaksichni diagrami movi Oberon 07 Movi rodini OberonActive Oberon Zonnon Ci movi vzhe mozhna nazivati ne rozshirennyami chi versiyami Oberona a samostijnimi movami U nih istotno rozshireno sintaksis uvedeno konstrukciyi dlya opisu klasichnih vlastivostej property z kontrolem chitannya zapisu chislovi tipi z rozmirom sho zadayetsya u bitah Uvedeno pidtrimku aktivnih ob yektiv sho obminyuyutsya povidomlennyami u formati obumovlenomu RBNF opisom obrobka vinyatkiv Glagol U Rosiyi rozrobleno movu Glagol strukturno duzhe blizku do Oberona 2 Golovna yiyi vidminnist polyagaye u vikoristanni rosijskih sluzhbovih sliv Krim cogo mova maye she ryad vidminnostej vid Oberona 2 vilucheni metodi funkciyi ta proceduri sho pov yazani z tipom ne vikoristovuyutsya psevdonimi v ogoloshennyah importu moduliv dodana vihidnih tekstiv dodana mozhlivist bezposeredno vkazuvati shlyah do vikoristovuvanih moduliv dodana specialna poznachka dlya golovnogo modulya programi sho zapuskayetsya dodanij vbudovanij tip iterator dlya priskorennya poslidovnogo dostupu do masivu zmineni poznachki eksportu dlya zminnih konstant i procedur a takozh sposib ukazannya parametriv zminnih zminenij sintaksis operatora WITH DLYa zaboronena peredacha cherez parametri procedur masiviv i zapisiv zmineni rozmiri deyakih tipiv danih zminenij nabir ubudovanih procedur i sklad sistemnih moduliv Mova pidtrimuye yunikod Realizovano kompilyator nazivanij peretvoryuvachem dlya platform Windows i PocketPC a takozh seredovishe rozrobki takozh dlya Windows Cikavi faktiZa pidrahunkami opublikovanimi v statti Sergiya Sverdlova Arifmetika sintaksisu liniya Virta yak vin yiyi nazvav liniya sho vklyuchaye Paskal Modulu 2 Oberon i Oberon 2 ce yedinij priklad genetichnoyi liniyi mov nashadkiv Algolu 60 u yakij skladnist movi viznachena z neobhidnimi zasterezhennyami yak kilkist leksem u yiyi opisi stabilno znizhuvalasya j u cej chas viyavlyayetsya nizhchoyu nizh u zagalnogo prabatka Algolu 60 Usi movi liniyi Virta prostishi za Algol 60 i kozhna nastupna mova v cij liniyi prostisha za poperednyu U toj zhe chas Ada bilsh nizh udvichi skladnisha za svogo poperednika Paskalya C priblizno v 1 7 raza skladnishij za Si a v linijci Paskal Turbo Paskal riznih versij Object Pascal skladnist eksponencialno zrostaye vid versiyi do versiyi Epigrafom do opisu originalnogo Oberona bula obrana fraza Ejnshtejna Robi nastilki prosto naskilki mozhlivo ale ne prostishe cogo V opisi Oberona 2 cogo epigrafa nemaye Primitki Arhiv originalu za 19 veresnya 2011 Procitovano 18 serpnya 2010 N Wirth and J Gutknecht Project Oberon Addison Wesley 1992 N Wirth The Programming Language Oberon Software Practice and Experience Vol 18 No 7 p 671 690 C Szyperski Component Software Beyond Object Oriented Programming Addison Wesley 1998 Lekciya N Virta v Nizhnogorodskomu derzhavnomu universiteti im M I Lobachevskogo Mova programuvannya Oberon 2 31 lipnya 2011 u Wayback Machine H Messenbek N Virt A Description of the Oberon 2 Language Paul Floyd angl XDS Family of Products Arhiv originalu za 23 serpnya 2011 Procitovano 18 serpnya 2010 Arhiv originalu za 21 serpnya 2010 Procitovano 18 serpnya 2010 Oberon microsystems AG Povidomlennya pro movu Komponentnij Paskal Arhiv originalu za 18 grudnya 2019 Procitovano 18 serpnya 2010 PDF Arhiv originalu PDF za 26 travnya 2011 Procitovano 26 travnya 2011 PDF Arhiv originalu PDF za 6 sichnya 2012 Procitovano 6 sichnya 2012 PDF Arhiv originalu PDF za 19 04 2009 Procitovano 19 04 2009 E Dejkstra Disciplina programuvannya Mir Moskva 1978 IDE Astrobe dlya movi Oberon 07 Sintaksichni diagrami movi Oberon 07 nedostupne posilannya z chervnya 2019 Rozrobki na Glagoli Arhiv originalu za 21 serpnya 2011 Procitovano 18 serpnya 2010 glagol nad ru Oficijnij sajt movi Glagol Arhiv originalu za 21 serpnya 2011 Procitovano 18 serpnya 2010 Literatura Piter 2007 ISBN 978 5 469 00378 6 ros dali anglijskoyu movoyu NY ACM Press 1992 ISBN 0 201 56543 9 22Mb 1 2 Mb 4 2Mb PDF N Wirth The Programming Language Oberon nedostupne posilannya z chervnya 2019 91Kb 400KbPosilannya angl Mova Oberon Korotkij putivnik Ruslan Bogatirov Mir PK zhovten 2005 ros Mesenbek N Virt Mova programuvannya Oberon 2 Institut komp yuternih sistem ETH Cyurih 1996 ros pdf nedostupne posilannya z kvitnya 2019 ros Mova programuvannya Oberon pershij rosijskij resurs 1998 ros Portal OberonCore ru ros ros Movi programuvannya j tehnologiyi Oberon perspektivi dlya industriyi ta osviti Orlovskij DU materiali sekciyi seminaru 30 bereznya 2006 r ros Pidgotovka navchalnih posibnikiv rosijskoyu movoyu ros Div takozhPascal