vak: (Default)
[personal profile] vak
Заинтересовал [personal profile] spamsink меня алголами, я потыркался и вытащил на свет божий компилятор Algol W. Это исторический язык, разработанный легендарным Никлаусом Виртом в 1966 году как продолжение Алгола-60. Язык вполне развитый и имевший практическую полезность. Но в титанической борьбе Вирта с ван Вейнгаарденом победил Алгол-68, крайне сложный и бестолковый. На нём линия Алгола сникла и ушла в небытие.

После этого Вирт бросил Алгол и начал делать Паскаль. Дальнейшую историю вы знаете.

Изначальный компилятор Algol W был написан на ассемблере IBM/360. Исходники сохранились, но мало кого нынче интересуют. Нынешний компилятор Algol W был создан девять лет назад Глином Вебстером. Написан он в основном на языке OCaml и немного Си. Компилятор преобразует исходник на Алголе W в Си, и дальше компилирует его посредством GCC. Причём CLANG не годится, поскольку используются вложенные процедуры, не реализованные в кланге.

Из нетривиальных примеров на языке Algol W есть игра Wumpus: wumpus.alw

Date: 2021-07-14 05:20 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Говорят, что на самом деле в Алголе-68 нет ничего особенно сложного, и он довольно толковый, поскольку компиляторы получаются весьма компактные; просто в то время не нашлось человека, который бы написал книжку, объясняющую синтаксис и семантику языка не заумно-выпендрежным образом, а по-человечески.

Вон, С++ никто по описанию стандарта не учит, а читают Скотта Майерса (Scott Meyers).

Date: 2021-07-14 17:38 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Он не "остался", он был written from scratch.

Смотреть надо сюда: http://www.softwarepreservation.org/projects/ALGOL/algol68impl

Проблема была, КМК, в сложности не столько компилятора, сколько рантайма. Полную реализацию, с арифметикой произвольной точности и пр. делать было или лень, или она в память не поместилась бы.

Date: 2021-07-14 19:22 (UTC)
From: [personal profile] dijifi
Мне кажется речь идет о FLACC
Edited Date: 2021-07-14 19:26 (UTC)

Date: 2021-07-15 01:56 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Если awe у тебя работает, попробуй
begin
    procedure foo; begin a := b + c end;
    integer a, b, c;
    b := 3; c := 5;
    foo; вывести a
end

В компиляторе настоящего Алгола (marst) и в бэсмовских это работает.

Date: 2021-07-15 04:01 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Ты уже понял, к чему я клоню?
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 и бэсмовские компиляторы.

Date: 2021-07-15 06:22 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Всё честно. Просто тела процедур парсятся не сразу, а в конце объявлений блока. Поэтому foo работает с переменными верхнего уровня, откуда бы она ни вызывалась.

Date: 2021-07-15 07:06 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Но печатается-то локальная a!

Date: 2021-07-15 02:30 (UTC)
x86128: (Default)
From: [personal profile] x86128
Вот значит как язык Паскаль появился.

Синтаксис прикольный довольно.

Date: 2021-07-15 04:48 (UTC)
x86128: (Default)
From: [personal profile] x86128
Настолько сильно, что он пошел дальше - сделал язык для описания аппаратуры Lola который транслируется в verilog и на нем забацал ProjectOberon http://www.projectoberon.com/ который работает на макетке, реализует целую ОС с поддержкой сети и VGA.

Date: 2021-07-15 07:20 (UTC)
x86128: (Default)
From: [personal profile] x86128
КМК, он больше человек академический. Все какие проекты я видел (из свежего) они все были так или иначе в соавторстве, либо выполнены его учениками. А поскольку нынче Паскаль-подобные языки не в моде, то и последователей недостаточно для того чтобы выложить пакеты под все ОС.

В РФ так или иначе проводятся конференции по Оберону. Существуют какие-то мелкие проекты применения самописных оберонов на микроконтроллерах, какая-то автоматизация АЭС, спутники связи, и то мне кажется это просто из-за того что там Аду не смогли пропихнуть. А сишечку боятся ну потому что там есть указатели :) Как итог - костыль там на костыле, нет ни библиотек, ни поддержки сообщества и т.д. а в чатах и форумах споры о том как лучше делать ООП, хотя нафиг бы оно кому в 2021 году сдалося.

Из забавных проектов отмечу - https://free.oberon.org/

Date: 2021-07-15 18:08 (UTC)
vit_r: default (Default)
From: [personal profile] vit_r
Самое лучшее определение: "Язык, который был проще чем нужно".

Из Оберона 2 спёрли ценное и сделали Жабу, после чего распиарили это безобразие. Лишённый преимуществ оно заглохло естественным образом.
Edited Date: 2021-07-15 18:09 (UTC)

Date: 2021-07-15 18:50 (UTC)
euthanasepam: Ла-ла-ла-ла! Ла-ла-ла-ла! (Default)
From: [personal profile] euthanasepam
> оно заглохло естественным образом


en.wikipedia.org/wiki/BlackBox_Component_Builder

blackboxframework.org