Как стать автором
Обновить

Оберон умер, да здравствует Оберон! Часть 1. Некоторые любят поактивней

Время на прочтение 5 мин
Количество просмотров 26K
Всего голосов 42: ↑38 и ↓4 +34
Комментарии 41

Комментарии 41

НЛО прилетело и опубликовало эту надпись здесь
Да, это реальный человек, не очередной виртуал.

Насколько я знаю, в его компании промышленно используют Active Oberon (а еще Модулу-3 например).
Ну, Активный Оберон, в отличии от Великого Оберона, интересен скорее наличием фич, чем их отсутствием.

Я бы не стал смешивать эти языки.
А вот Active Oberon я практически не смотрел. Спасибо, интересно.

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

Вот это действительно круто. Я время от времени думаю, почему в Rust не хотят сделать аннотаций «не выделяет память», чтобы как раз помечать функции, безопасные для использования в контексте какого-нибудь обработчика сигналов, например.

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

Ещё: так работает любой Оберон, или именно Активный?

Правильно я понимаю, что язык по сути неотделим от среды исполнения, которая, можно сказать, является одновременно ОС и IDE? У меня сложилось впечатление, что Оберон-Система — это вот про это.

Можно ли использовать Активный Оберон (или любой Оберон) на Линуксе?
Ещё: так работает любой Оберон, или именно Активный?

Именно Активный. Active Oberon это отдельный ЯП, дальнейшее развитие системы и языка в стенах Швейцарской высшей технической школы Цюриха

Использова Active Oberon в линуксе или винде можно, примерно также как можно использовать смалтолк/squeak. Хотя Kemet лучше расскажет, возможно там есть реализации которые не тащат с собой например всю среду.

В плане любых оберонов — там разное бывает. Во-первых есть реализации ОС Оберон в виде приложения (не эмулятора, а именно приложения, опять же, привет smalltalk/squeak только с учетом того, что Оберон компиляется в реальные машкоды целевой архитектуры, например x86 — никаких эмуляторов). А во-вторых довольно много самых разных компиляторов оберона и оберона-2, как в x86, так и в Си например.

То есть Оберон (не Active — про Active я лично просто не в курсе) бывает без среды под винду или линукс. В качестве IDE были какие-то плагины к eclipse, ну или можно использовать Sublime Text. Мною к sublime был даже плагин писан для того, чтобы было удобней код набирать (в частности ключевые слова там становились КАПСОМ автоматом, не нужно никаких шифтов жать).
Сборщик мусора реального времени есть для среды времени выполнения Активного Оберона ( в варианте реализации этой среды в ОС A2, в которой есть подсистема реального времени ) и для классического Оберона в реализации XOberon — ОСРВ на базе Oberon System

Для функционирования программ на Активном Обероне достаточно использовать среду времени выполнения (RTL):
Trace.Mod — Low-level trace output based on KernelLog
*.Machine.Mod — Bootstrapping, configuration and machine interface
Heaps.Mod — Heap management and garbage collector
Modules.Mod — Modules and types
Objects.Mod — Active object runtime support
Kernel.Mod — Implementation-independent kernel interface

Использовать АО(Активный Оберон) на ОС, отличных от A2, можно посредством вариантов A2, работающих поверх Windows, Unix/Linux/Darwin — там вся A2, за исключением железа, но работают и сетевые протоколы и сервисы и медиа. Можно собрать консольную программу, оставив рантайм и свой код.
Из других Оберонов под Линукс можно использовать OO2C или XDS
А моя консольная программа будет линковаться к рантайму как к динамической библиотеке? Или там что-то похожее на большую виртуальную машину типа Java?
Пока статическая линковка всех модулей.
Но эта статически собранная программа может загружать динамические модули, то есть можно написать некий стартер, которому в качестве параметров передавать команды для запуска приложений.
Но лучше использовать UnixAos полностью
Забыл, есть ещё Oxford Oberon-2 Compiler, который в том числе и под Линукс
Я время от времени думаю, почему в Rust не хотят сделать аннотаций «не выделяет память», чтобы как раз помечать функции

На самом деле, кода в Rust ещё использовалась концепция typestate, почти так оно и было. Потом от typestate отказались, потому что она приводит к проблемам с композицей (вот здесь есть ещё информация). Та же самая штука была с pure-функциями (они тоже были, и от них тоже отказались).
Здесь можно сказчать старые реализации различных Oberon System (наследники Project Oberon), под разные платформы. Есть версия на дискете для x86-32.
  1. Сделать виртуалов
  2. Неделю писать с них всякий неадекват
  3. Написать нормальный пост с настоящего пользователя
  4. На контрасте получить отличные оценки (ура, не все пользователи Оберона — сумасшедшие фрики!)
  5. PROFIT

Это шутка, конечно.
Кстати, а где они, наши виртуальчики? Наконец-то нормальный пост, интересно что бы они сказали, а их нету…
В бане.
А потом будует с трагизмом рассказывать в своём уютненьком коммьюнити, как ихего, такихого непонятыхого, отверг заскорузлый мейнстрим в лице Хабра, напрочь отказавшийся впитывать свет познания.
6. Разоблачить «настоящий аккаунт» и получить еще больше PROFITa.
Добавил в статью ссылку на форум поддержки, там, в принципе, есть ссылки на свежие сборки нативной A2, WinAOS, UnixAos
У меня только один вопрос — кто-то запилил уже нормальную IDE, или это все так и осталось на уровне наколенных поделок?
Смотря что под нормальной IDE подразумевать :-) Вот Sublime Text — это нормальная IDE? А допустим гошная LiteIDE? А Code::Blocks? А vim? А CLion?

Скажи что нужно, расскажем что есть, а чего нет, но что есть вместо этого.
Сейчас у меня есть куча древнего кода на Oberon 2, который можно компилить только при помощи кросс-компилятора под MC68332 из совершенно эзотерической среды этого самого Oberon под Win (где половина операций по средней кнопке мыши). Поэтому правки кода я делаю в pspad, а для компиляции запускаю среду. Учитывая, что ничего нового на этом разрабатываться уже не будет никогда, хотелось бы просто автоматизировать компиляцию.
Погоди, а это не ты ли на RSDN с годик назад искал какого-нибудь оберонщика на тему правки древних-древних сырцов оберона? ( http://rsdn.ru/forum/job/5715649.all )

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

Версия 2.4.5, если я ничего не путаю. Как версию можно узнать точно, не совсем понятно.
Может, поможет дата создания oberon.exe — 1997 год.
Похоже это PluginOberon? У меня есть консольная версия
Не, это обычный цюриховский оберон, в который некими умельцами еще напихан кросс-компилятор под мотороллу и какие-то свои утилиты.
это именно PluginOberon от ETH, на публичном ftp лежит как WinOberon, и компилер под моторолу тоже. Тоже можно сделать консольным
А подробности?
Что за ftp? Который с сайта ETH, у меня почему-то сейчас не открывается.
Этого компилятора там точно нет :-)
Ну может быть, но это не отменяет того факта, что его можно выдрать из ОберонСистемы и сделать консольным. Я также знаю человека, который может тебе переписать его на фрипаскале и дать IDE для Оберона
Можно, но пока не ясно, кто за это заплатит :-)
Строго говоря, если бы это было коммерчески осмысленным, я бы сам заморочился и выдрал. И даже переписал бы его на Delphi :-)
да он просто так сделает, у него хобби такое
Есть, например, Astrobe
Вот спасибо. После просмотра нормального примера кода на Обероне без однобуквенных имен переменных и процедур, не такими уж и плохими кажутся BEGIN-END вместо скобок
Пожалуйста. Также, в Активном Обероне ( как и в Zonnon'е ) ключевые слова можно писать в нижнем регистре
Добавил в статью выдержку из диссертации Патрика Реали, создателя многопоточного компилятора Активного Оберона, JVM для A2 и вообще внёсшего существенный вклад в Оберон-Технологии. Критика Языка Оберон от отцов-основателей, «чтобы в корне пресечь кривотолки»
Многопоточный компилятор — это мощно. Хочется сказать, беспрецедентно. Для каких-то ещё языков были многопоточные компиляторы?
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации