Статью про язык программирования Оберон я не мог начать много раз.
Любое упоминание Оберона в непрофильных, а нередко и в профильных сообществах, приводит к таким «дракам», что камня на камне не остается!
Я видел смерть нескольких сообществ, посвященных Оберону, эпичнейшие сражения в комментариях и прочие атрибуты «религиозных войн». Дошло до того, что когда я упомянул в нашем сообществе «Ворчалки о программировании», что собираюсь писать эту статью, ко мне в личку пришел человек и попросил не писать!
Я долго не мог понять этот феномен, пока однажды не увидел воочию, как происходит обсуждение картины «Чёрный квадрат» Казимира Малевича. И тут пазл сложился.
Явления и события
Мы живем во времени и все, что с нами происходит, расставлено по шкале. Новый год, день рождения, новая версия операционной системы, покупка квартиры. Это все события. У них есть дата, участники, какие‑то другие свойства.
А бывают явления. Это события, которые делят историю на «до» и «после».
Таким явлением, несомненно, стал упомянутый уже «Квадрат». На Хабр есть статьи на эту тему. Упомяну также, что труды ВХУТЕМАС легли в основу того, как выглядят товары ИКЕА и то, каким стал iPhone. Таким же явлением стал и Оберон.
Личность Вирта
Мне не довелось быть знакомым с Никлаусом Виртом, равно как и не удалось попасть на его лекции, но довелось общаться с людьми, знавшими его лично и работавшими с ним.
Это, несомненно, был талантливейший человек. Особо ценным качеством было то, что он был одновременно сильным инженером и прекрасным педагогом. Вирт был скромным человеком в обычной жизни. Он больше 20 лет ездил на машине Toyota Corolla, хотя как профессор с мировым именем, мог позволить себе многое. У него был хороший дом, но без какого‑то особого шика.
При этом в работе и преподавании был чрезвычайно требовательным.
Ученики вспоминали, что он мог заставить заменить хеш‑таблицу на линейный список, если хеш‑таблица была избыточна, даже если использовались готовые модули.
Стремление к упрощению всего, что можно, красной нитью проходит через все работы Вирта.
Отмечу одну, возможно неочевидную со стороны, особенность процесса создания языков программирования. Когда создаешь языки, соблазн (и легкость!) добавления очень велик. Добавить в язык что‑то легко, удалить (или отказаться от добавления) гораздо труднее. Вот и Чарльз Энтони Ричард Хоар не устоял, добавив null в Algol‑W, откуда он перетек много куда. Разгребаем теперь всей индустрией.
Вирт явно или подспудно это знал. Его последователи даже проследили феномен, который так и назвали — «линия Вирта».

Каждый последующий язык уменьшал количество идентификаторов в грамматике. Редчайшее явление в языкостроении, скажу я вам.
Триумф минимализма
А.Недоря рассказывал, с каким нетерпением они с коллегами ждали отчета о языке Оберон, надеясь на исправление проблем Модулы-2, с которыми к тому времени уже столкнулись. А получили … это.
Нет ООП, вернее есть, но совсем неожиданное. Управление памятью через сборщик мусора. Нет цикла FOR! Его то за что?
Это был шок. Настолько радикально, что в голове не укладывается…
И тем не менее, на этом написана ОС, причем на железе, специально созданном для этого.
Значит, что‑то в этом все‑таки есть.
А что, собственно, есть?
Оберон был не первый статически типизированный язык программирования, использующий сборку мусора. До него были Симула-67, Алгол-68 и ML, который в 70-х совершил свой прорыв благодаря выводу типов. Но Оберон был первый системный язык, позволяющий запускать ОС на голом железе и делать это со сборкой мусора!
Т.е. Вирт показал тот минимум, на котором можно создать целую вселенную.
Для своего времени это была фантастика. Комбинированный текстово‑графический интерфейс, где командой мог стать практически любой текст, мгновенная компиляция, динамическая загрузка‑выгрузка. И это с великолепной производительностью!
Почему не взлетело?
Вирта не интересовала коммерческая сторона вопроса. Кроме того, при огромном обилии плюсов, были и очевидные минусы.
Мало языковых фич, сложно разрабатывать, непросто отлаживать. Кооперативная многозадачность. Это, впрочем, было бы преодолимо, но Вирта не особо интересовало, и как такового коммерческого продвижения практически не было. Успех получили производные продукты.
Так, коммерчески успешным можно признать BlackBox Component Builder, написанный на языке Component Pascal, к которому Вирт также приложил руку, пусть и опосредованно.
Эта среда получила награду Best Development Software журнала Byte.
Компания Oberon Microsystems, авторы Component Pascal и BlackBox сделали продукт Jbed — операционную систему и быструю JVM для микроконтроллеров, работающую прямо на «голом железе».
А вообще, ученики ETH, которым руководил Вирт выпустил уже более 660 проектов.
Но мне то что?
А вот что «взлетело», так это колоссальное влияние на индустрию. Многие, очень многие задались вопросом «А что, так можно было?» Использование GC в тяжелых задачах с высокой производительностью стало инженерной реальностью, а не научным изысканием.
Динамическую загрузку в комбинации с модульностью, на мой вкус, до сих пор не повторил никто. Скорость компиляции и скорость генерации на высоте. Все это, и многое другое на годы вперед определило направление развития языков, если не синтаксически, так семантически. Java и Go — прямые наследники Оберона, хотя о «прямости» наследования и объемах «наследства» можно поспорить.
Про Java доподлинно известно, что руководство Sun купило максимальный лицензионный пакет материалов по Оберон и это существенно повлияло на дизайн рантайма языка. Кроме того, Sun лицензировали Jbed, что повлияло на рантайм языка Java. Клеменс Шиперский много лет работал в Microsoft, что повлияло на дизайн среды CLR.
Что сегодня?
Также, как и «Чёрный квадрат» Малевича (равно как и «Круг» и «Крест»), Оберон сегодня вряд ли применим прямо. Индустрия и наука шагнули далеко вперед и прямое использование не имеет смысла само по себе.
Но с этим языком очень важно познакомиться. Борьба со сложностью, в этом языке воплощенная, — прекрасный образец инженерного мышления, реализующего сразу несколько целей:
-
экономия человеческих ресурсов;
-
решение комплексных задач минимальными средствами;
-
предотвращение разрастания языка.
Это кристаллизованное воплощение инженерного гения, способного отыскать баланс между сложностью задачи, требуемыми ресурсами и качеством и надежностью результата.
В мире и России есть энтузиасты, которые занимаются Обероном и Компонентным Паскалем и делают на нем великолепные проекты: АСУТП, разработка железа, образовательные продукты. Это люди с определенным складом характера, способные на пересмотр того, какими инструментами они решают задачи и не боящиеся пойти наперекор большинству.
Разумеется, Оберон хорошо показал себя в образовании.
Послесловие
Надо ли вам знакомиться с Обероном? Вопрос открытый. От одного хочу предостеречь. Глядя на «Чёрный квадрат» Малевича, многие говорят «Ну, я так намалевать могу, чё за фигню он тут наляпал? Почему это в галерее, а не на помойке?»
Потому,что эта картина стала явлением и была важна в начале 20-го века, определив, каким будет дизайн обычных вещей на ближайшее столетие. iPhone появился в том числе благодаря этому.
Также и с Обероном. На дизайн языков он точно повлиял. На столетие ли, будут разбираться историки. Но нужно понимать, что любые попытки что‑то изменить в Обероне по сути своей будут похожи на желание нанести мазки на картину (или отковырнуть кусочки краски). Цельная картина разрушится.
Именно поэтому с Обероном стоит познакомиться, но точно не стоит менять (предлагать что‑то добавить/исправить/изменить/убрать).
Вот что точно стоит делать, так это продолжать использовать наследие языка в своих проектах. Борьба со сложность имеет значение в системах любого масштаба.
Я намеренно обошел стороной вопросы преемственности языков Оберон — Оберон-2 — Оберон-07, оставляя удовольствие от знакомства пытливому читателю.
Перечень материалов по языку:
Краткий путеводитель по языку Оберон
ссылка на оригинал статьи https://habr.com/ru/articles/1055996/