Как Паскаль выпил Алголя и закусил Ершолом

В школе я учил информатику – тогда только ввели ее курс, и в ее рамках мы писали программы на некоем языке программирования с русскими служебными словами. Еще тогда у меня появился вопрос: почему в этом языке присваивание обозначается так странно – “:=”, то есть двоеточием и равно. В других языках просто “равно” (я знал про Си и Бейсик). Ну, допустим, язык придумывали математики, а у них нездоровая чувствительность и они считают, что присваивание – это не равенство. Ладно. Но при чем тут двоеточие?
Затем оказалось, что так же точно присваивание пишется в Паскале и его потомках. В современных языках ему тоже нашлось применение, например, в Перле 6 с двоеточием “привязка”, а без – простое присваивание. В Го тоже есть какие-то правила на этот счет.
Вообще на такие вопросы отвечать сложно – символы могли быть выбраны когда-то кем-то по каким-то соображениям, а потом просто становятся традицией, которую копируют не задумываясь. Кто сейчас знает, что символ “равно” изображает параллельные прямые, потому что по замыслу автора ничего равнее их быть не может?
Впрочем, иногда в древних книгах можно найти ответы.
Итак, про двоеточие – равно.
Курс информатики был внедрен в советское образование по настоянию академика Ершова. В то время считалось, что скоро компьютеры будут окружать нас повсюду и умение программировать будет требоваться каждому как умение читать.
Через тридцать лет, правда, выяснилось, что все наоборот. Компьютеры и правда окружают со всех сторон, но уже никто ничего не читает, не говоря уже о программировании. И то, и другое стало уделом профессионалов.
Ершов был одним из пионеров программирования в СССР, входил в комитет по созданию языка Алгол и разрабатывал для него компилятор. Соответственно, язык, который он поместил в школьную программу, был сильно урезанной версией все того же Алгола с русскими словами. Остряки именовали его Ершол или РАЯ (русский алгоритмический язык).
Следовательно, двоеточие-равно пришло из Алгола, и оттуда же попало в Паскаль, который был его непосредственным потомком. Но как оно появилось в Алголе?
Алгол задумывался как международный универсальный язык, понятный всем в мире – его первоначальное название вообще было IAL – Internattional Algorithmic Language. Разрабатывала его группа специалистов из разных стран мира, а где группа – там и свары, и компромиссы.
Исходно присваивание в Алголе было правым и обозначалось вполне логичной стрелкой:
5 => A
Затем решили, что на некоторых устройства ввода и вывода нету знака “больше” (не забывайте, это были пятидесятые!), поэтому для убогих перфораторов знак упростили: равно и двоеточие, как некий намек на стрелку:
5 =: А
Потом начались разногласия между американцами и европейцами. Американцы, скорее всего под влиянием Фортрана, настаивали на левом присваивании и в конце концов убедили комитет.
Так и родилось пресловутое
А := 5
А вы понимаете разницу между правым и левым присваиванием?
Некоторые жЭ читают справа налево..
Во фсём виноваты микран ты.
На практике левое присваивание вызывает некоторые неудобства, например, визуальный переизбыток скобок при цепочном приведении типов для урегулирования приоритетов. В чистом функциональном программировании не используются переменные, и явный оператор присваивания не нужен. Пиндосы – тупые, в общем.
Способ рассуждения “сделаем, а потом куда-нибудь засунем” против “сначала определим, что менять, а потом сделаем”. Второй лучше.