Г-н Фаршеклоакин (spamsink) wrote,
Г-н Фаршеклоакин
spamsink

Category:

Перефразируя Скалигера-Прокоповича

Вместо эпиграфа:

Если в мучительские осужден кто руки,
Ждет бедная голова печали и муки,
Не вели томить его делом кузниц трудных,
Не посылать в тяжкие работы мест рудных:
Пусть компилятор делает – то одно довлеет,
Всех мук роды сей един труд в себе имеет.


Будучи созданным комитетом лиц из академической среды, язык Алгол-60, по выражению википедии, в остальном довольно разумно организованный, содержит особенности, примечательные удивительным сочетанием полной практической бесполезности с чрезвычайной сложностью и неэффективностью реализации.

Вот одна из этих особенностей, о которой я недавно узнал. Полная реализация языка в соответствии с "Пересмотренным сообщением об Алголе-60" от 1962 года должна была компилировать следующую программу (детали синтаксиса оператора вывода могли варьироваться):
begin
    procedure call(Q); procedure Q;
        begin Q(3); end;
    procedure jump(A); label A;
        begin goto A end;
    procedure out(B); real B;
        begin print(` value', b) end;
    call(out);
    if true then
        call(jump)
    else
        3: print(` label 3')
end


Эта программа должна была успешно выполняться и печатать что-то типа "value 3.00000 label 3".

(Для тех, кто не любитель птичьих языков: цифра 3 в конструкции Q(3) в этой программе означает не пойми что - то ли число, то ли метку - и компилятор этого не знает, пока не просмотрит всю программу. Когда он это узнает, то выясняется, что так можно было, и нужно порождать выполняемый код.)

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

Алгол БЭСМ-6 имени В. М. Курочкина компилирует и выполняет программу правильно.

К чести стандартизаторов языка, это безумие было в конце концов устранено в "Модифицированном сообщении об Алголе-60" к середине 1970-х годов путём ликвидации меток, обозначаемых числами.

This entry was originally posted at https://spamsink.dreamwidth.org/1220252.html. Please comment there using OpenID.
Tags: retrocomputing
Subscribe

Recent Posts from This Journal

  • Нас скоро ждёт масса веселья

    Если кто не знает, богоспасаемый штат Техас, известный своей любовью к пложению и размножению человеков помимо их воли, недавно принял закон,…

  • Борьба снаряда и брони

    Последние несколько недель я повадился смотреть на ютубе Jeopardy (кто следит, тот знает, почему именно сейчас) раньше, чем она выходит в эфир на…

  • Я вам одну понятную вещь скажу, только вы не обижайтесь

    Чувство, что что-то понимаешь - это такое же внутреннее ощущение, как, например, ощущение равновесия, проприоцепция или боль, которое в норме…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 19 comments

Recent Posts from This Journal

  • Нас скоро ждёт масса веселья

    Если кто не знает, богоспасаемый штат Техас, известный своей любовью к пложению и размножению человеков помимо их воли, недавно принял закон,…

  • Борьба снаряда и брони

    Последние несколько недель я повадился смотреть на ютубе Jeopardy (кто следит, тот знает, почему именно сейчас) раньше, чем она выходит в эфир на…

  • Я вам одну понятную вещь скажу, только вы не обижайтесь

    Чувство, что что-то понимаешь - это такое же внутреннее ощущение, как, например, ощущение равновесия, проприоцепция или боль, которое в норме…