vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2021-07-13 08:55 pm

Algol W

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

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

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

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

spamsink: (Default)

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

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

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

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

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

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

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

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

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

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

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

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

Синтаксис прикольный довольно.
x86128: (Default)

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

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

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

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

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

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

[personal profile] euthanasepam 2021-07-15 06:50 pm (UTC)(link)
> оно заглохло естественным образом


en.wikipedia.org/wiki/BlackBox_Component_Builder

blackboxframework.org