Comments 21
Спасиб за статью. Было бы здорово несколько примеров кода увидеть для наглядности
Язык создавался для удобства компилятора, а не программиста. Синтаксический сахар отсутствует, полностью диетический.
Игнорировались новые тенденции в программировании - отсутствие встроенной работы со строками, многопоточность, ООП, методы обработки ошибок, дженерики.
В таблице не хватает Modula-3, Active Oberon (на котором та самая ОС и написана).
Еще стоит посмотреть на Oberon+ и Eberon, где пытались некоторые недостатки исправить.
Меня всегда интересовали языки программирования, фичи, языковой дизайн. Статья интересная с исторической точки зрения, но в ней крайне мало подробностей про сам язык, про его особенности в сравнении с другими языками...
Ваш вопрос сильно связан с личностью Н.Вирта. О чем в статье немного сказано.
Во время создания языка Pascal системные ресурсы накладывали значительные ограничения на компиляторы. Так вот, начиная с Паскаля, Вирт придумывал языки, ориентированные на компилятор: возможность быстрой компиляции за один проход.
Сейчас, в эпоху "а зачем нам дебажить утечку памяти? лучше добавим пару гигов (или вообще: OOM сам рестартует контейнер)", актуальность инженерных подходов значительно ниже. Многие вопросы решают просто деньгами (в эпоху виртуализации вам не нужно вытаскивать тяжеленные сервер из стойки, чтобы проапгрейдиться - просто плати больше). Поэтому сравнивать с современными языками, большинство из которых было создано с единственной целью снизить влияние компетенции разработчика на результат разработки, особого смысла не имеет.
Нам, людям воспитанным на книгах Н.Вирта, это очень неприятно видеть. Поэтому я ушел из программировния много лет назад. Пишу только для себя. На C. Для MCU с 2K RAM. Это все еще действительно искусство.
Жду похожую статью про Ada.
Оберон очень похож на "Structured Text (ST) — IEC 61131-3".
Интересно, это параллельное развитие, или один на другой повлиял?
Слишком лирическая статья получилась.


Чёрный квадрат - как слова выдернутые из контекста.
Ну FOR цикл это древнейший пример синтаксического сахара. DO-WHILE цикл может заменить его в любых ситуациях. Вообще то что сейчас твориться с языками программирования это какойто ужас. Уже давно ценится не умение кодить а знание кучи мешков синтаксического сахара и здоровенного склада набитого "стандартными типами" которыми, как считается, должен обзавестись каждый уважающий себя язык программирования. Все давно забыли что стандартный тип должен уметь набить на коленке любой, хоть сколько нибудь вменяемый, программист а великое и могучее ООП это по сути простенькие манипуляции с пространствами имён...
Диаграмма, иллюстрирующая эволюцию языков программирования, взята, полагаю, отсюда: https://informatika-21.ru/princypKalashnikova.htm. Исходную диаграмму С. Свердлова переделали и линии языков продолжили во времени. От этого диаграмма увеличилась вправо и вверх. Есть некоторые вопросы, ответы на которые не знаю, где получить.
Для подсчёта лексем С. Свердлов использовал некое приложение, анализирующее правила языков в РБНФ. Новая версия диаграммы построена с использованием того же приложения? Оно вообще где-то есть? Или оно ушло вместе с С. Сверловым и его сайтом?
На диаграмме все невиртовские языки демонстрируют рост числа правил со временем. На их фоне языки Вирта выглядят минималистичными. Однако в этой диаграмме отсутствуют важные языки: Форт и Лисп. В Форте всего 15 правил (https://compiler.su/arifmetika-sintaksisa-3.php#10), а в Лиспе — 20 (https://compiler.su/arifmetika-sintaksisa-3.php#22).
Если бы эти языки в диаграмме были, то сразу было бы ясно, что языки Вирта отнюдь не самые лаконичные. Чемпион по минимализму — Форт. Вот где триумф минимализма. Более того, соотношение возможности/простота показало бы превосходство Форта и Лиспа над Обероном.
Строго говоря, Форт не вписывается в эти правила, поскольку это не совсем язык, а скриптовая система, которая парсит входной поток и одновременно как компилирует новый код, так и выполняет уже откомпилированный. И правила можно менять на ходу, дополняя синтаксис, поскольку исполняемые слова могут перехватить входной поток прямо во время компиляции и исполнить что угодно. И при желании можно хоть весь С++ насахарить в свой собственный синтаксис.
Вы, возможно, пропустили, но именно Форт и Лисп - языки трилогии про важные языки: https://habr.com/ru/articles/934030/ и https://habr.com/ru/articles/852174/
Я действительно взял диаграмму у Ткачева, он ссылался на книгу Свердлова 2007 года. Сам я не повторял эту диаграмму. Подсчет сделать просто - нужно взять одинаковые диаграммы и выделить из них нетерминалы. Для Antlr это сделать почти тривиально, для официальных грамматик придется приводить к общему знаменателю.
На диаграмме важно не столько то, что грамматика маленькая, тут чемпионом будут языки BrainFuck и производные, а то, что линия идет вниз.
Вы, возможно, пропустили
Это не я пропустил. Пропустил автор диаграммы Свердлов, за ним Ткачёв, а потом и Вы. Хотя было бы логично исправить ошибку и отметить на диаграмме Форт и Лисп — они же важные и их нельзя пропустить. Не знаю, специально это было сделано или нет.
важно не столько то, что грамматика маленькая, тут чемпионом будут языки BrainFuck и производные, а то, что линия идет вниз.
Да, будь Вирт жив, графики Оберона и BrainFuck когда-нибудь пересеклись бы.
Пардон за оффтопик, тема навеяла. Студентом в конце 80-х в составе студенческого коллектива я работал над реализацией Modula-2 (нашими продуктами были компилятор в байткод + интерпретатор байткода на советском IBM 370, мэйнфрейм EC 1045 - байткод был также бэкендом другого, значительно более сложного компилятора Algol-68). Благодаря мудрому руководству А.Н.Терехова у нас было "машинное время", терминальный доступ к EC 1045 в ("машинном зале") в некоем ящике под названием НИИ Звезда.
И вот, на адрес НИИ Звезда на имя А.Н.Терехова приходит телеграмма следующего содержания:
"Встречайте. Готовьте закуску, спирт. Проездом в Союзе - Никлаус Вирт."
Телеграмму доставили ночью и вахтёр позвонил Терехову, разбудив того. Терехов не оценил шутку, был очень зол, идентифицировал виновника (моего друга) и подверг оного страшному наказанию - лишению доступа в машинный зал.
Кстати, Вирт действительно приезжал в СССР - в Новосибирск, там реализовали и успешно использовали Модулу в проекте Кронос (но это - другая история).
Важные языки. Часть 3. Оберон