Заинтересовал
spamsink меня алголами, я потыркался и вытащил на свет божий компилятор Algol W. Это исторический язык, разработанный легендарным Никлаусом Виртом в 1966 году как продолжение Алгола-60. Язык вполне развитый и имевший практическую полезность. Но в титанической борьбе Вирта с ван Вейнгаарденом победил Алгол-68, крайне сложный и бестолковый. На нём линия Алгола сникла и ушла в небытие.
После этого Вирт бросил Алгол и начал делать Паскаль. Дальнейшую историю вы знаете.
Изначальный компилятор Algol W был написан на ассемблере IBM/360. Исходники сохранились, но мало кого нынче интересуют. Нынешний компилятор Algol W был создан девять лет назад Глином Вебстером. Написан он в основном на языке OCaml и немного Си. Компилятор преобразует исходник на Алголе W в Си, и дальше компилирует его посредством GCC. Причём CLANG не годится, поскольку используются вложенные процедуры, не реализованные в кланге.
Из нетривиальных примеров на языке Algol W есть игра Wumpus: wumpus.alw
После этого Вирт бросил Алгол и начал делать Паскаль. Дальнейшую историю вы знаете.
Изначальный компилятор Algol W был написан на ассемблере IBM/360. Исходники сохранились, но мало кого нынче интересуют. Нынешний компилятор Algol W был создан девять лет назад Глином Вебстером. Написан он в основном на языке OCaml и немного Си. Компилятор преобразует исходник на Алголе W в Си, и дальше компилирует его посредством GCC. Причём CLANG не годится, поскольку используются вложенные процедуры, не реализованные в кланге.
Из нетривиальных примеров на языке Algol W есть игра Wumpus: wumpus.alw

no subject
Date: 2021-07-14 05:20 (UTC)Вон, С++ никто по описанию стандарта не учит, а читают Скотта Майерса (Scott Meyers).
no subject
Date: 2021-07-14 06:25 (UTC)no subject
Date: 2021-07-14 17:38 (UTC)Смотреть надо сюда: http://www.softwarepreservation.org/projects/ALGOL/algol68impl
Проблема была, КМК, в сложности не столько компилятора, сколько рантайма. Полную реализацию, с арифметикой произвольной точности и пр. делать было или лень, или она в память не поместилась бы.
no subject
Date: 2021-07-14 19:22 (UTC)no subject
Date: 2021-07-14 20:25 (UTC)Не такой уж компактный компилятор: 27000 строк на Алголе-68. И еще 15000 в рантайме, плюс 6000 строк на Си.
Бинарник Hello_World получается около 300 килобайт:
$ cat hello.a68 PROGRAM hello CONTEXT VOID USE standard BEGIN print(("Hello, Algol-68!", newline)) END FINISH $ ca hello.a68 $ ./hello Hello, Algol-68! $ size ./hello text data bss dec hex filename 307993 6572 283024 597589 91e55 ./hellono subject
Date: 2021-07-15 01:56 (UTC)begin procedure foo; begin a := b + c end; integer a, b, c; b := 3; c := 5; foo; вывести a endВ компиляторе настоящего Алгола (marst) и в бэсмовских это работает.
no subject
Date: 2021-07-15 02:05 (UTC)$ cat foo.alw begin procedure foo; begin a := b + c end; integer a, b, c; b := 3; c := 5; foo; write(a) end $ awe foo.alw $ ./foo 8no subject
Date: 2021-07-15 02:30 (UTC)Синтаксис прикольный довольно.
no subject
Date: 2021-07-15 02:42 (UTC)no subject
Date: 2021-07-15 04:01 (UTC)begin procedure foo; begin a := b + c end; integer a, b, c; b := 3; c := 5; begin integer a, b, c; b := 30; c := 50; foo; write(a) end; foo; write(a) endИли ты будешь сразу смеяться, или после того, как я тебе скажу, что делает marst и бэсмовские компиляторы.
no subject
Date: 2021-07-15 04:48 (UTC)no subject
Date: 2021-07-15 04:56 (UTC)$ ./foo2 32705 8no subject
Date: 2021-07-15 05:05 (UTC)$ cat foo2.a68 PROGRAM foo2 CONTEXT VOID USE standard BEGIN INT a, b, c; PROC foo = VOID: BEGIN a := b + c END; b := 3; c := 5; BEGIN INT a, b, c; b := 30; c := 50; foo; print((a, newline)) END; foo; print((a, newline)) END FINISH $ ./foo2 +0 +8no subject
Date: 2021-07-15 06:22 (UTC)no subject
Date: 2021-07-15 06:24 (UTC)no subject
Date: 2021-07-15 06:58 (UTC)no subject
Date: 2021-07-15 07:06 (UTC)no subject
Date: 2021-07-15 07:20 (UTC)В РФ так или иначе проводятся конференции по Оберону. Существуют какие-то мелкие проекты применения самописных оберонов на микроконтроллерах, какая-то автоматизация АЭС, спутники связи, и то мне кажется это просто из-за того что там Аду не смогли пропихнуть. А сишечку боятся ну потому что там есть указатели :) Как итог - костыль там на костыле, нет ни библиотек, ни поддержки сообщества и т.д. а в чатах и форумах споры о том как лучше делать ООП, хотя нафиг бы оно кому в 2021 году сдалося.
Из забавных проектов отмечу - https://free.oberon.org/
no subject
Date: 2021-07-15 16:12 (UTC)no subject
Date: 2021-07-15 17:27 (UTC)https://github.com/AntKrotov/oberon-07-compiler.git
https://github.com/Vostok-space/vostok.git
Я взял исходники родного виртовского компилятора из Проекта Оберон, и попробовал собрать его на Линуксе. Фиг вам: ни один из этих компиляторов не справился. Нужен нестандартный тип LONGINT. В общем, разброд и шатание в обероновском мире.
no subject
Date: 2021-07-15 18:08 (UTC)Из Оберона 2 спёрли ценное и сделали Жабу, после чего распиарили это безобразие. Лишённый преимуществ оно заглохло естественным образом.
no subject
Date: 2021-07-15 18:50 (UTC)en.wikipedia.org/wiki/BlackBox_Component_Builder
blackboxframework.org