Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Алгол Печать
Еще до появления Кобола наметилась попытка разработать третий универсальный компьютерный язык. Алгол (ALGOL, ALGOrithmic Language - алгоритмический язык), подобно Фортрану, был алгебраическим языком, разработанным преимущественно для решения численных задач. Как и Кобол, он родился в прокуренной комнате заседаний комитета и тоже дитя конфликтов и компромиссов. Но на этом сходство кончается.

После многолетних споров комитет по Алголу дал миру язык, который скорее вызвал интерес, чем привлек потребителей. Это, видимо, первый язык, который можно было без натяжки назвать «изящным» - термин, который Грейс Хоппер определила так: «Похож на большую поэму: простой и ясный с точки зрения математики, но отнюдь не практичный».

Толчком к разработке Алгола послужило появление и широкое распространение в 1957 г. Фортрана. Программистскую общественность Европы беспокоил диктат IBM и других агрессивных американских фирм на европейском рынке компьютеров. В это время программисты США были озабочены проблемой определения единого языка для научного программирования. Эта озабоченность приняла международный характер.

Первое обсуждение состоялось в Федеральном техническом университете в Цюрихе (Швейцария) 27 мая 1958 г. Когда через неделю встреча прервалась, язык, получивший название Алгол-58, уже возник.

В Цюрихе собрались восемь наиболее уважаемых авторитетов в области компьютеров: четверо из Европы и четверо из США. На встрече присутствовали создатель Фортрана Джон Бекус и Джозеф Уэгстен, который в последующем стал председателем кратковременного комитета по Коболу.

Конференция взяла девизом слова Вольтера «Лучшее - враг хорошего», означавшие, что нельзя затягивать работу, пытаясь выполнить ее в совершенстве. Но все равно дела продвигались медленно. Американцы настаивали на языке, который был бы близок к уже используемым на компьютерах. Европейцев интересовали не столько компьютеры, сколько мощь языка при решении сложных математических задач. На второй день обсуждение едва не зашло в тупик из-за мелкого, но вызвавшего бурю эмоций пункта - десятичной точки.

Один из европейцев, ударив кулаком по столу, воскликнул: «Нет! Я никогда не буду использовать точку в десятичных дробях!» Американцы же пренебрежительно отнеслись к европейской привычке использовать в десятичных дробях запятую. В эту ночь неутомимый Уэгстен носился из комнаты в комнату, пытаясь утихомирить «десятичную бурю».

Окончательное решение проблемы, предложенное Уэгстеном, обеспечило новому языку одно из его наиболее замечательных свойств. Алгол подразделяется на три уровня: язык описаний, определяющий основные понятия; язык публикаций, позволяющий писать и обсуждать программы, и язык аппаратного уровня, реализуемый на компьютере.

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

С редким единодушием комитет по разработке Алгола-60 «голосует» для этой групповой фотографии, сделанной на конференции в Париже 1960 г. В работе комитета участвовали американский специалист по компьютерам Джон Бекус (ближайший к камере справа) и датский астроном Петер Наур (четвертый слева), в честь которых система описания языков программирования получила название «форма Бекуса - Наура». (Фотографию сделал Джон Маккарти, создатель языка Лисп.)

Язык, созданный на конференции в Цюрихе, многое унаследовал от Фортрана, но в Алголе основные понятия Фортрана были собраны в более логичную, можно даже сказать, изящную структуру. Однако из-за недостатка времени и необходимости компромиссов было допущено немало оплошностей. Одна из них заключалась в отсутствии процедур ввода и вывода данных. Участники совещания намеренно не касались этой области, где многое зависит от типа компьютера, полагая, что процедуры ввода и вывода должен написать разработчик компилятора языка.

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

Одним из таких оптимистов был Джон Бекус. В феврале 1959 г. он ознакомил с Алголом мощную организацию SHARE потребителей компьютеров фирмы IBM. Его доклад был воспринят с энтузиазмом, и от фирмы настойчиво потребовали реализовать Алгол.

IBM официально сообщила о проекте разработки транслятора, но практически работа не велась. Поскольку фирма IBM, мировой лидер в продаже компьютеров, повсюду внедряла Фортран, было наивно надеяться, что она станет на сторону конкурирующего языка. По мере того как капиталовложения членов организации SHARE в Фортран росли, их энтузиазм в отношении Алгола угасал. Но это не остановило Бекуса. Несмотря на явное отсутствие интереса со стороны потребителей, он продолжал активно участвовать в развитии Алгола.

Вернувшись в Цюрих, он заинтересовался синтаксисом, т. е. правильным расположением слов и знаков в языке; в применении к компьютеру синтаксис определяет, верна ли программа грамматически. Бекус разработал строгую и точную систему определения каждой структуры языка логическим образом. Например, определяя элемент «цифра», он писал: «<цифра> : = 0|1|2| ... |9|».

Вскоре программисты стали называть этот подход к описанию синтаксиса нормальной формой Бекуса, или БНФ. (Последующее уточнение этой работы датским астрономом Питером Науром привело к тому, что такой подход часто стали называть «форма Бекуса-Наура», (сокращение осталось то же - БНФ).

БНФ оказала длительное влияние на разработку языков программирования, в частности была положена в основу второго этапа разработки Алгола.

Поскольку начали вставать проблемы реализации языка, а надежды, зародившиеся в Цюрихе, блекли, авторы Алгола пришли к выводу, что их язык образца 1958 г. всего лишь эскиз. Стало очевидным, что требуется дальнейшая работа.

В январе 1960 г. 13 представителей стран Европы и США, включая 7 человек из прошлой цюрихской группы, встретились в Париже, чтобы «залатать дыры», оставшиеся в первом варианте Алгола. Одним из вновь прибывших был Наур, предложивший вариант измененного Алгола, записанный при помощи БНФ. Было объявлено, что группа приняла решение по языку единогласно, причем этот момент запечатлен на фотографии. После восьми дней трудных переговоров участники конференции покинули Париж в приподнятом настроении, считая, что согласие достигнуто и даже самые ярые критики Алгола должны отныне умолкнуть. На самом деле все сложилось иначе.

Едва американские участники конференции сошли с трапа самолета, на Алгол-60 обрушился огонь критики со стороны. Кроме того, небольшая группа участников конференции указала на неоднозначности, оставшиеся в языке, и приступила к их «рекламированию». Другие критики подчеркивали, что в язык так и не включены средства ввода-вывода.

В Америке Алгол-60 встретили холодно. Ассоциация SHARE переметнулась на сторону Фортрана. Те, кто попытался использовать Алгол, обнаружили, что его трудно реализовать. Даже самые сложные компьютеры того времени не могли воспринимать набор из 116 литер, которые встречались в языке описаний. Однако некоторые более возвышенно настроенные американские программисты увидели в Алголе «предмет ошеломляющего очарования» - поэтическая метафора Грейс Хоппер. И они не были одиноки.

Европейцы сразу приняли Алгол. Он давал им возможность обмениваться интересными и сложными идеями, невзирая на границы и языковые барьеры. Кроме того, он позволил европейской компьютерной индустрии обрести независимость от американской технологии.

Подобно тому как министерство обороны США оказало решительную поддержку Коболу, независимый исследовательский совет Германии и другие правительственные организации западноевропейских стран поддержали Алгол.

Энергичные усилия по реализации этого языка способствовали тому, что Алгол распространился от Великобритании до Советского Союза. Некоторые из попыток реализации Алгола закончились неудачей. Например, претенциозная британская система программирования была отвергнута, когда пользователи обнаружили, что их компилятор Алгола может обрабатывать лишь два знака в секунду. Однако большинство компиляторов оказались удачными, и вскоре Алгол был признан международным языком европейских программистов.

В США дела обстояли иначе. Разумеется, Алгол в конце концов пробился ко многим американским компьютерам, но так и не одолел Фортран, стартовавший первым и уже завоевавший рынок.

Алгол не стал универсальным языком, как надеялись некоторые, поскольку такой его статус всерьез задел бы американские интересы. Однако теоретическое влияние Алгола было в США так же сильно, как и в Европе. «Сообщение об Алголе-60» стало настольной книгой для целого поколения программистов и студентов, изучающих языки программирования. «Подобно Библии, «Сообщение об Алголе» предназначено для толкования, а не для чтения и понимания», - заявил позднее один из специалистов по информатике. Наиболее упорные приверженцы этого языка заслужили названия его адвокатов.
 
Многие языки, возникшие позднее, базировались (по крайней мере, частично) на Алголе, и его вклад в их развитие связан с несколькими основными идеями.

Одна из наиболее важных - блочная структура, позволяющая делить программы на замкнутые единицы, разрабатываемые независимо.

Другая идея - рекурсия, т. е. способность про грамм повторно обращаться к себе.
Третья идея БНФ, формализованное определение синтаксиса, т. е. способа размещения слов в языке.

Эти и другие фундаментальные идеи, составляющие основу, достались в наследство разработчикам других языков.