Pull to refresh

Comments 26

Оберон лучше всех бы подошёл в качестве первого языка программирования. Самый простой язык из всех. Все основные идеи на нем можно объяснить прекрасно и доступно. Но почему-то все хотят в качестве первого языка иметь промышленный язык, который изначально совсем не предназначен для обучения.

Чисто ради интереса спрошу, чем оберон лучше того же паскаля, питона или бейсика? Питон как по мне очень простой и вполне подходит для обучения ещё и промышленным является, паскаль я особо не трогал, но он, вроде как, предшественник оберона. Бейсик очень простой, у меня в своё время сложностей, связанных конкретно с использованием бейсика в качестве обучающего языка не было.

Оберон я как-то хотел потрогать, но так и не понял, какой компилятор использовать и забил

У Оберона синтаксис, пожалуй, ещё проще паскалевского, хотя все достоинства Паскаля он сохранил. На классическом Бейсике нельзя изучить изрядную часть полезностей -- в частности, там нет процедур/функций, только подпрограммы с передачей параметров через глобальные переменные (так как локальных переменных или параметров тоже нет).

На классическом Бейсике

Я имел дело только с Visual Basic, там таких проблем не было. Насчёт простоты оберона могу только поверить на слово, так как дел с ним не имел

Ну, у ВизуалБейсика от классического только название; ничего общего они не имеют.

Ну возьмите более поздний BASIC, например QBasic из какой-то поставки MS-DOS или более современный какой-нибудь - полноценные процедуры-функции там есть. Оберон же, если использовать - тоже явно не версию из 80х)

На классическом Бейсике нельзя изучить изрядную часть полезностей

Вы всерьёз думаете, что под словом Basic сегодня все понимают то, что было 60 лет назад? Это всё равно, что говорить Fortran и представлять именно тот, которым он родился. Посмотрите самый доступный на всех платформах

https://www.freebasic.net/wiki/DocToc

p.s. и особенно вот по этой ссылке весело про полезности

https://www.freebasic.net/wiki/CatPgUserDefTypes

На классическом Бейсике нельзя изучить изрядную часть полезностей -- в частности, там .

Классический Basic закончился на восьмибитных машинах во второй половине 80-х, и все те ужасы которые вы расписываете (нет процедур/функций, только подпрограммы с передачей параметров через глобальные переменные (так как локальных переменных или параметров тоже нет) уже отсутствуют. Что в TurboBasic, что в QBasic/Quick/PDS/Visual Basic for DOS.

Python выглядит простым. Но внутри очень очень непрост. Лазить в кишки этого языка школьнику...

У Оберона же есть книжка средней толщины, внутри которой учебник, полный код компилятора и операционной системы. Просто у Вирта была идея создать простой язык с минимальным синтаксисом. Он ее с успехом выполнил, правда прошло немало итераций.

Лазить в кишки этого языка школьнику...

Не помню, чтобы мне приходилось лазить. Я не питонист, но периодически пишу простые скрипты. Полагаю, что школьникам с их задачами тоже лазить не придётся. Как по мне тому же школьнику сложнее разобраться, а где мне взять компилятор оберона и какой именно?

найдите в телеге группу - там быстрее ответят. Их просто несколько разных, каждый может под себя компилятор подкрутить.

найдите в телеге группу

Уже сложнее, чем пайтон. Совершать столько усилий ради языка, который почти нигде не используется, мне лень.

Присоединюсь к соседнему комментарию: есть ли возможность использовать Оберон как промышленный язык? Если да, то какой стэк окружения вы посоветуете?

Лучше вам задать вопрос на их форуме, или в группе в Телеграме. Там есть специалисты, которые используют Оберон на БПЛА и атомных электростанциях.

Сразу оговорюсь, что я не призываю на этих языках разрабатывать (хотя это было бы неплохо), нужны очень веские причины, чтобы принять такое решение. Но знакомство с ними — важная часть профессионального роста.

Однако, после прочтения не понятно, почему стоит попробовать форт. Тут даже примеров кода на нём не было. Было интересно прочитать историческую справку, но всё равно хотелось бы примеров и подтверждения данного в начале тезиса. Сразу скажу, что немного на форте я писал, так разные простые задачки чисто для гимнастики, но не сказал бы что его прямо стоит попробовать. Гораздо больше мне в своё время сломали шаблон язык ассемблера и хаскель.

У Форта поучительно написать интерпретатор в качестве простейшего примера реализации языка программирования. Но использовать сам Форт в наше время, когда из коробки есть тот же Питон, странно.

В языке статьи есть запах ChatGPT и нет примеров кода на Форте. А Оберон имхо язык просто никакой, зачем его вспоминать?

Языков много не потому, что старые хуже. Просто есть разные сферы использования языков, каждая из которых имеет свои особенности и свои требования к языку. Оберон по сочетанию многих характеристик уникален.

Насколько я понимаю, Оберон - это Модула-2 с наследованием типа. А сама Модула-2 - это Паскаль с модулями/пакетами. А Паскаль - это Алгол-60 с указателями и записями. Где уникальность Оберона? Это все было в других языках.

Уникальные языки: Фортран, Алгол-58 (предшественник Алгол-60, не путать с Алгол-68), Симула-67 (классы до C++), Лисп (списки), Пролог (ленивая эвалюация), Verilog (моделирование сигналов и вентилей), Snobol (шаблоны), Форт (стековая машина с минимализмом), Occam (каналы для многопроцессорныз систем) итд

  1. Смотрите на уникальное сочетание характеристик, а не на одну. Вы же в работе при выборе смотрите на комплекс характеристик, а не одну единственную.

  2. Оберон (и его вариант Компонентный Паскаль) в отличие от Модула-2 имеют автоматическое управление памятью, что как бы существенно разделяет сферы применения этих языков.

  3. Тут задача понять не в каком первом языке появились какие-то фичи, а в котором они сейчас пригодны для использования. Уникальность - это уже давно не про одну характеристику. Какой из перечисленных языков имеет автоматическое управление памятью, компактен снаружи и внутри? Разве что Лисп с Фортом могут конкурировать с Обероном по своей простоте. В этом смысле автор правильно их хочет рассматривать группой. Но к последним двум надо немного дольше привыкать.

  4. Ветка потомков Алгола вообще очень разделилась.

Автоматическое управление памятью - вы имеете в виду garbage collection? Дык она появилась еще в 1960-е годы, это не уникальная фича.

Оберон - это Модула-2 с наследованием типа. А сама Модула-2 - это Паскаль с модулями/пакетами. А Паскаль - это Алгол-60 с указателями и записями. Где уникальность Оберона? Это все было в других языках.

Уникальные языки: Фортран, Алгол-58 (предшественник Алгол-60, не путать с Алгол-68), Симула-67 (классы до C++), Лисп (списки), Пролог (ленивая эвалюация), ( . . .), Snobol (шаблоны), Форт (стековая машина с минимализмом), Occam (каналы для многопроцессорных систем) и т.д.

Немного о персоналиях:

=
Фёдор Васильевич Ткачёв (1956—2021) — российский физик-теоретик, доктор физико-математических наук (с 2003 года), ведущий научный сотрудник отдела теоретической физики Института ядерных исследований РАН. Он был разработчиком элементов теории многопетлевых вычислений в квантовой теории поля, что является значительным вкладом в современную теоретическую физику. Кроме того, Ткачёв был основателем проекта ИНФОРМАТИКА-21.

Его научные методы и результаты получили признание на мировом уровне и продолжают использоваться в современной физике элементарных частиц. Ткачёв оставил заметный след в области квантовой теории поля и теоретической физики в целом.
=

У него, как и у Вас Юрий, был широкий спектр интересов.

Позволю себе процитировать Фёдора Васильевича ( предисловие (?) "О новой версии классического учебника Никлауса Вирта" к книге Вирт Н. Алгоритмы и структуры данных. Новая версия для Оберона + CD / Пер. с англ. Ф. В. Ткачев. – М.: ДМК Пресс, 2010. – 272 с.: ил. ISBN 978-5-94074-584-6.):

=
Оберон – последний большой проект Никлауса Вирта, выдающегося инженера, ученого и педагога, вместе с Бэкусом, А. Ершовым, Дейкстрой, Хоаром и другими пионерами компьютерной информатики превратившего программирование в систематическую дисциплину и лучше всего известного созданием серии все более совершенных языков программирования – Паскаля (1970), Модулы-2 (1980) и, наконец, Оберона (1988, 2007). В этих языках отражалось все более полное понимание проблематики эффективного программирования. Языки эти сохраняют идейную и стилевую преемственность, и коммерсант, озабоченный сохранением доли рынка, не назвал бы их по-разному
=

В другой статье Ф.В. Ткачёва, указывается, что имеет смысл говорить о Pascal-70, Pascal-80, Pascal-88.

И, собственно, про уникальность:

-- известный эксперимент в "Pascal-88" ( иллюстрация - с OpenNet.Ru) :

=
FOR есть :Pascal (1970)  
FOR есть :│  
FOR есть :└─→ Modula (1975)  
FOR есть :     │  
FOR есть :     └─→ Modula-2 (1978-1980)  
FOR есть :          │
FOR-а нет:          ├─→ Oberon (1988)  
FOR есть :          │    │  
FOR есть :          │    └─→ Oberon-2 (1991)  
FOR есть :          │         │  
FOR есть :          │         ├─→ Component Pascal (1994)
FOR есть :          │         ├─→ Active Oberon (1998)
FOR есть :          │         └─→ Oberon-07 (2007)
FOR есть :          │  
FOR есть :          └─→ Modula-3 (1988)  
=

-- одна из областей применения "Pascal-80":

Язык программирования Modula-2 успешно применялся для разработки бортового программного обеспечения спутников, в частности в СССР и, позднее, России. Он был выбран для создания ПО спутников в рамках проекта ГЛОНАСС и других спутников связи и навигации, разрабатываемых ОАО «Информационные спутниковые системы» имени академика М.Ф. Решетнёва [1] [2] [4].

Основные факты и контекст применения Modula-2 в космической сфере:

  • Первая попытка применения Modula-2 для бортового ПО спутников была сделана в НПО ПМ (подмосковный Зеленоград) в конце 1980-х — начале 1990-х годов в сотрудничестве с Институтом систем информатики СО РАН (Новосибирск) [2].

  • Выбор Modula-2 был обусловлен его простотой, надежностью, строгой типизацией и структурированностью, что важно для долговременного сопровождения ПО спутников с длительным сроком эксплуатации (10-15 лет) [2].

  • На Modula-2 написано всё бортовое программное обеспечение, включая операционную систему реального времени, среду программного управления и подсистемы спутника. Объём кода превышает 90 000 строк, в разработке участвует несколько десятков программистов [2].

  • Программное обеспечение для спутников ГЛОНАСС-М и серии спутников связи «Экспресс-АМ» создавалось на Modula-2, что подтверждается более чем десятилетним опытом эксплуатации [4].

  • Modula-2 обеспечивает высокую переносимость программ, что позволяет использовать один и тот же код на разных бортовых вычислительных машинах, а также удобство тестирования и отладки [2] [4].

  • В настоящее время Modula-2 продолжает использоваться для программирования бортового ПО российских спутников связи, что подтверждается включением компилятора GNU Modula-2 в состав GCC и современными проектами [1] [5].

Таким образом, Modula-2 применяется в России для разработки бортового программного обеспечения спутников, в частности в проектах ГЛОНАСС и спутников связи, начиная с конца 1980-х годов и по настоящее время, благодаря своим техническим достоинствам и надёжности [1] [2] [4] [5].

Источники:
[1] https://ru.wikipedia.org/wiki/Модула-2
[2] http://www.kronos.ru/about/koltashev
[3] https://habr.com/ru/companies/ua-hosting/articles/391821/
[4] https://cyberleninka.ru/article/n/ispolzovanie-yazyka-programmirovaniya-modula-2-pri-sozdanii-rossiyskih-sputnikov-svyazi-i-navigatsii
[5] https://oberoncore.ru/infobase/modula-2
[6] https://informatika-21.ru/wirth/wirth.htm

Я имел опыт работы с языком Fift (это язык для TON блокчейна), который мало чем отличается от Forth. Так вот это было моим худшим опытом работы с новым языком программирования.

Во-первых, data flow через стек это просто ужасно. Мне много приходилось разбираться в чужом коде, если в обычных языках все данные кладутся в переменные - все наглядно, все можно отследить. То тут они лежат где-то в стеке, и каждая команда может изменить этот стек, поэтому приходится постоянно держать в уме что где лежит.

Во-вторых, (возможно актуально только для Fift) сложно отличить встроенные функции, функции из стандартной библиотеки и команды виртуальной машины. Непонятно, что сколько функция берет со стека, сколько кладет, приходится постоянно смотреть на ее реализацию. А их там сотни.

В общем никому не советую :)

Языки-потомки Forth, конечно, своеобразны. И работа через стек требует сноровки и насмотренности, согласен. Но в определенных условиях это оправдано, плюсы определенно есть.

Непонятно, что сколько функция берет со стека

Решается документацией, в шапке указывается сколько снимается со стека и сколько возвращается в стек. Не знаю, правда, как это сделано в TON.

Sign up to leave a comment.

Articles