Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Алгол ( / æ л ɡ ɒ л , - ɡ ɔ л / , короткий для « алгоритмического языка ») [1] представляет собой семейство императивных компьютера языков программирования , первоначально разработанный в 1958 году Алголом сильно повлияли на многих других языках , и был стандартным методом для описания алгоритма используется Ассоциацией вычислительной техники (ACM) в учебниках и академических источниках более тридцати лет. [2]

В том смысле, что синтаксис большинства современных языков «похож на Алгол» [3], он, возможно, был самым влиятельным из четырех языков программирования высокого уровня, среди которых он был примерно современным: FORTRAN , Lisp и COBOL . [4] Он был разработан , чтобы избежать некоторых из выявленных проблем с FORTRAN и в конечном итоге привело многих других языков программирования, в том числе PL / I , Симула , BCPL , B , Pascal и C .

В ALGOL введены кодовые блоки и пары begin... endдля их разграничения. Это был также первый язык, реализующий определения вложенных функций с лексической областью видимости . Более того, это был первый язык программирования, в котором особое внимание было уделено формальному определению языка, и в отчете Algol 60 была введена форма Бэкуса – Наура , основная форма записи формальной грамматики для проектирования языков.

Существовали три основные спецификации, названные в честь годов, в которые они были впервые опубликованы:

  • АЛГОЛ 58 - первоначально предлагалось называть IAL , для международного алгебраического языка .
  • АЛГОЛ 60 - впервые реализован как X1 ALGOL 60 в середине 1960 года. Пересмотрено в 1963 году. [5] [6]
  • АЛГОЛ 68 - введены новые элементы, включая гибкие массивы, срезы, параллелизм, идентификацию операторов. Пересмотрено в 1973 г. [7]

АЛГОЛ 68 существенно отличается от АЛГОЛА 60 и не был хорошо принят, так что в целом «Алгол» означает АЛГОЛ 60 и его диалекты.

Важные реализации [ править ]

Международный алгебраический язык (IAL), переименованный в АЛГОЛ 58 , имел большое влияние и обычно считался родоначальником большинства современных языков программирования (так называемых языков, подобных алголу). Кроме того, объектный код ALGOL был простой, компактной и основанной на стеке архитектурой набора команд, обычно используемой при обучении построению компиляторов и других языков высокого порядка; из которых Алгол обычно считается первым.

История [ править ]

Алгол был разработан совместно комитетом европейских и американских компьютерных ученых на встрече в 1958 году в Швейцарском федеральном технологическом институте в Цюрихе ( ETH Zurich ; см. ALGOL 58 ). Он определяет три разных синтаксиса: синтаксис ссылки, синтаксис публикации и синтаксис реализации. Различный синтаксис позволял использовать разные имена ключевых слов и соглашения для десятичных знаков (запятые и точки) для разных языков.

Алгол использовался в основном учеными-компьютерщиками в Соединенных Штатах и ​​Европе. Его использованию в коммерческих приложениях мешало отсутствие стандартных средств ввода / вывода в его описании и отсутствие интереса к языку со стороны крупных поставщиков компьютеров, помимо Burroughs Corporation . Однако АЛГОЛ 60 действительно стал стандартом для публикации алгоритмов и оказал глубокое влияние на развитие языков в будущем.

Генеалогическое древо династии языков программирования Algol, Fortran и COBOL

Джон Бэкус разработал метод нормальной формы Бэкуса для описания языков программирования специально для АЛГОЛА 58. Он был переработан и расширен Питером Науром для Алгола 60 и по предложению Дональда Кнута переименован в форму Бэкуса-Наура . [8]

Питер Наур: «Как редактор бюллетеня ALGOL я был вовлечен в международные дискуссии по этому языку и в ноябре 1959 года был выбран в группу разработчиков европейских языков. В этом качестве я был редактором подготовленного отчета ALGOL 60. в результате встречи Алгола 60 в Париже в январе 1960 года ». [9]

На встрече в Париже (с 1 по 16 января) присутствовали следующие люди:

  • Фридрих Л. Бауэр , Петер Наур , Хайнц Рутисхаузер , Клаус Самельсон , Бернар Вокуа , Адриан ван Вейнгаарден и Майкл Вудгер (из Европы)
  • Джон В. Бэкус , Жюльен Грин , Чарльз Кац , Джон Маккарти , Алан Дж. Перлис и Джозеф Генри Вегштейн (из США).

Алан Перлис дал яркое описание встречи: «Встречи были изнурительными, бесконечными и волнующими. Одно раздражало, когда его хорошие идеи отбрасывались вместе с плохими другими. Тем не менее, усердие сохранялось на протяжении всего периода. 13 было превосходно ".

АЛГОЛ 60 вдохновил многие последовавшие за ним языки. Тони Хоар заметил: «Этот язык настолько опередил свое время, что стал не только улучшением своих предшественников, но и почти всех его преемников». [10] Язык программирования Scheme , вариант Lisp, который принял блочную структуру и лексическую область видимости ALGOL, также принял формулировку «Revised Report on the Algorithmic Language Scheme» для своих документов стандартов в знак уважения к ALGOL. [11]

Алгол и исследование языков программирования [ править ]

Как отметил Питер Ландин , ALGOL был первым языком, который органично сочетал императивные эффекты с лямбда-исчислением ( вызов по имени ) . Возможно, наиболее элегантная формулировка языка принадлежит Джону К. Рейнольдсу , и она лучше всего демонстрирует синтаксическую и семантическую чистоту. Идеализированный Алгол Рейнольдса также представил убедительный методологический аргумент относительно пригодности локальных эффектов в контексте языков вызова по имени, в отличие от глобальных эффектов, используемых в языках вызова по значению, таких как ML . Концептуальная целостность языка сделала его одним из основных объектов семантических исследований, наряду с программированием вычислимых функций (PCF) и ML.[12]

График внедрения IAL [ править ]

На сегодняшний день существует не менее 70 дополнений, расширений, производных и подъязыков Алгола 60. [13]

Диалекты Берроуза включали специальные диалекты начальной загрузки, такие как ESPOL и NEWP . Последний до сих пор используется в системном программном обеспечении Unisys MCP.

Свойства [ править ]

Алгол 60, как он официально определен, не имел средств ввода-вывода ; реализации определяли свои собственные способы, которые редко были совместимы друг с другом. В противоположность этому , алгол 68 предложил обширную библиотеку transput (вход / выход) объектов.

Алгол 60 допускает две стратегии оценки для передачи параметров : общий вызов по значению и вызов по имени . Вызов по имени имеет определенные эффекты в отличие от вызова по ссылке . Например, без указания параметров в качестве значения или ссылки невозможно разработать процедуру, которая будет менять местами значения двух параметров, если фактические параметры, которые передаются, являются целочисленной переменной и массивом, который индексируется той же целочисленной переменной. . [20]Подумайте о передаче указателя на swap (i, A [i]) в функцию. Теперь, когда на своп ссылаются, он переоценивается. Скажем, i: = 1 и A [i]: = 2, поэтому каждый раз, когда используется своп, он будет возвращать другую комбинацию значений ([1,2], [2,1], [1,2] и т. Д. ). Аналогичная ситуация происходит со случайной функцией, переданной как фактический аргумент.

Функция вызова по имени известна многим разработчикам компиляторов благодаря интересным « переходникам », которые используются для ее реализации. Дональд Кнут разработал « тест человека или мальчика » для разделения компиляторов, которые правильно реализовали « рекурсию и нелокальные ссылки». Этот тест содержит пример вызова по имени.

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

Примеры и проблемы переносимости [ править ]

Сравнение примеров кода [ править ]

АЛГОЛ 60 [ править ]

(Способ написания полужирного текста зависит от реализации, например, «INTEGER» - включая кавычки - для целых чисел . Это называется заштрихованием .)

процедура Absmax (a) Размер: (n, m) Результат: (y) Индексы: (i, k); значение n, м; массив a; целое число n, m, i, k; реальный y;комментарий Абсолютно наибольший элемент матрицы a размером n на m передается в y, а индексы этого элемента в i и k;начало  целого числа p, q; у: = 0; i: = k: = 1; для p: = 1 шаг 1 до n выполнить  для q: = 1 шаг 1 до m выполнить  если abs (a [p, q])> y then  begin y: = abs (a [p, q]); i: = p; k: = q конец конец Absmax

Вот пример того, как создать таблицу, используя АЛГОЛ Elliott 803. [21]

 ТЕСТ АЛГОЛА ПЛАВАЮЩЕЙ ТОЧКИ ' НАЧАТЬ РЕАЛЬНОЕ A, B, C, D '   ПРОЧИТАЙТЕ D '   ДЛЯ A: = 0,0 ШАГ D ДО 6,3 ДЕЛАТЬ НАЧИНАТЬ ПУАНСОН ДЛЯ ПЕЧАТИ (3), £ $$ L ?? ' B: = SIN (A) ' C: = COS (A) ' ПУАНСОН ДЛЯ ПЕЧАТИ (3), SAMELINE, ВЫРОВНЕННЫЙ (1,6), A, B, C ' КОНЕЦ' КОНЕЦ'

PUNCH (3) отправляет вывод на телетайп, а не на перфорацию ленты.
SAMELINE подавляет возврат каретки + перевод строки, обычно печатаемый между аргументами.
ALIGNED (1,6) управляет форматом вывода с 1 цифрой до и 6 после десятичной точки.

АЛГОЛ 68 [ править ]

Следующие примеры кода представляют собой версии Алгола 68 вышеупомянутых примеров кода Алгола 60.

Реализации Алгола 68 использовали подходы Алгола 60 к сглаживанию . В случае АЛГОЛА 68 токены, выделенные жирным шрифтом, являются зарезервированными словами, типами ( режимами ) или операторами.

proc abs max = ([,] real a, ref  real y, ref  int i, k) real : comment Абсолютно наибольший элемент матрицы a размером ⌈a на 2⌈aпередается в y, а индексы этого элемента в i и k; комментарий start  real y: = 0; i: = ⌊a; k: = 2⌊a; для p от ⌊a до ⌈a do  для q от 2⌊a до 2⌈a do,  если  abs a [p, q]> y, то y: = abs a [p, q]; i: = p; k: = q fi  od  od ; yконец # абс макс #

Примечание: нижняя (⌊) и верхняя (⌈) границы массива, а также нарезка массива доступны программисту напрямую.

тест algol68 с плавающей запятой:( реальные a, b, c, d;   # Printf - отправляет вывод на файл  выделиться . # # printf ($ p $); - выбирает новую страницу # printf (($ pg $, "Введите d:"));  читать (d);   для шага от 0 пока a: = step * d; a <= 2 * pi do printf ($ l $); # $ l $ - выбирает новую строку . # б: = грех (а); c: = cos (a); printf (($ zd.6d $, a, b, c)) # форматирует вывод с 1 цифрой до и 6 после десятичной точки. # od)

Хронология: Привет, мир [ править ]

Вариации и отсутствие переносимости программ от одной реализации к другой легко демонстрируется классической программой hello world .

АЛГОЛ 58 (IAL) [ править ]

В Алголе 58 не было средств ввода-вывода.

Семейство АЛГОЛ 60 [ править ]

Поскольку в Алголе 60 не было средств ввода-вывода, в Алголе нет переносимой программы hello world . Следующие три примера взяты из Burroughs Extended Algol. Первые два прямого вывода на интерактивный терминал, на котором они работают. Первый использует символьный массив, аналогичный C. Язык позволяет использовать идентификатор массива в качестве указателя на массив и, следовательно, в операторе REPLACE.

НАЧИНАТЬ ФАЙЛ F (ВИД = УДАЛЕННЫЙ); EBCDIC ARRAY E [0:11]; ЗАМЕНИТЕ E НА «ПРИВЕТ, МИР!»; ЗАПИСАТЬ (F, *, E);КОНЕЦ.

Более простая программа, использующая встроенный формат:

НАЧИНАТЬ ФАЙЛ F (ВИД = УДАЛЕННЫЙ); НАПИСАТЬ (F, <"ПРИВЕТ, МИР!">);КОНЕЦ.

Еще более простая программа, использующая оператор Display. Обратите внимание, что его вывод будет на системной консоли ('SPO'):

НАЧАТЬ ОТОБРАЖЕНИЕ («ПРИВЕТ, МИР!») КОНЕЦ.

Альтернативный пример использования ввода-вывода Elliott Algol выглядит следующим образом. Эллиотт Алгол использовал разные символы для "кавычки-открытой строки" и "кавычки-закрытой строки":

 программа HiFolks; начать  печать «Привет, мир»; конец ;

Вот версия для Elliott 803 Algol (A104). Стандартный Elliott 803 использовал бумажную ленту с 5 отверстиями и, следовательно, имел только верхний регистр. В коде отсутствовали кавычки, поэтому знак фунта стерлингов (UK Pound Sign) использовался для открытой кавычки и? (Знак вопроса) для закрытия цитаты. Специальные последовательности были заключены в двойные кавычки (например, на телетайпе появилась новая строка с помощью £$ L ??).

 ПРИВЕТ НАРОД' НАЧИНАТЬ ПЕЧАТЬ £ ПРИВЕТ, МИР £ L ?? ' КОНЕЦ'

ИКТ 1900 серия Алгол ввод / вывод версия допускается ввод из бумажной ленты или перфокарты. Бумажная лента в «полном» режиме допускает строчные буквы. Вывод был на строчный принтер. Открывающая и закрывающая кавычки были представлены с помощью '(' и ')' и пробелов через%. [22]

 'НАЧИНАТЬ' НАПИСАТЬ ТЕКСТ ('(' ПРИВЕТ, МИР% ')'); 'КОНЕЦ'

АЛГОЛ 68 [ править ]

Код АЛГОЛА 68 был опубликован с зарезервированными словами, обычно в нижнем регистре, но выделенными жирным шрифтом или подчеркнутыми.

начинать printf (($ gl $, "Привет, мир!"))конец

На языке «Algol 68 Report» средства ввода / вывода все вместе назывались «Transput».

Временная шкала специальных символов АЛГОЛА [ править ]

Алголы были задуманы в то время, когда наборы символов были разнообразными и быстро развивались; Кроме того, АЛГОЛЫ были определены так, что требовались только прописные буквы.

1960: IFIP - Язык и отчет Algol 60 включают несколько математических символов, которые доступны на современных компьютерах и операционных системах, но, к сожалению, не поддерживаются большинством вычислительных систем в то время. Например: ×, ÷, ≤, ≥, ≠, ¬, ∨, ∧, ⊂, ≡, ␣ и ⏨.

1961 Сентябрь: ASCII - Набор символов ASCII, находившийся тогда на ранней стадии разработки, имел символ \ (обратная косая черта), добавленный к нему для поддержки логических операторов ALGOL / \ и \ / . [23]

1962: ALCOR - Этот набор символов включал необычный символ рунического креста «᛭» [24] для умножения и десятичный знак экспоненты «⏨» [25] для записи с плавающей запятой. [26] [27] [28]

1964: ГОСТ - Советский стандарт 1964 года ГОСТ 10859 разрешал кодирование 4-битных, 5-битных, 6-битных и 7-битных символов в АЛГОЛ. [29]

1968: «Отчет Algol 68» - использовались существующие символы ALGOL, а затем были приняты символы →, ↓, ↑, □, ⌊, ⌈, ⎩, ⎧, ○, ⊥ и ¢, которые можно найти на клавиатуре IBM 2741 с вставлены печатающие головки типа " мяч" (или мяч для гольфа ) (например, мяч для гольфа APL ). Они стали доступны в середине 1960-х, когда разрабатывалась АЛГОЛ 68. Отчет был переведен на русский, немецкий, французский и болгарский языки и позволял программировать на языках с более крупными наборами символов, например, кириллица советского БЭСМ- 4. Все символы ALGOL также являются частью стандарта Unicode, и большинство из них доступны в нескольких популярных шрифтах..

2009 Октябрь: Unicode - (Десятичный экспоненциальный символ) для записи с плавающей запятой был добавлен в Unicode 5.2 для обратной совместимости с историческим программным обеспечением ALGOL программы Buran . [30]

См. Также [ править ]

  • Адресный язык программирования
  • Атлас Автокод
  • Коралловый 66
  • Эдинбург IMP
  • Устройство Дженсена
  • Я ПЛАВАЮ
  • Веселый
  • Трон (видеоигра)
  • НЕЛИАК
  • Симула
  • S-алгол
  • Схема (язык программирования)

Ссылки [ править ]

  1. ^ Название этой языковой семьи иногда дается в смешанном регистре ( Algol 60, заархивировано 25 июня 2007 г. на Wayback Machine ), а иногда и в верхнем регистре ( ALGOL68, заархивировано 13 сентября 2014 г. на Wayback Machine ). Для простоты в этой статье используется АЛГОЛ .
  2. ^ Собрание алгоритмов ACM. Архивировано 17 октября 2011 г. в Wikiwix. Сжатые архивы алгоритмов. ACM .
  3. ^ О'Хирн, PW; Теннент, Р. Д. (сентябрь 1996 г.). «Алголообразные языки. Введение» . Архивировано из оригинального 14 ноября 2011 года.
  4. ^ «Язык программирования ALGOL». Архивировано 6 октября 2016 г. в Wayback Machine , Мичиганский университет в Дирборне.
  5. ^ Backus, JW; Бауэр, Флорида; Green, J .; Katz, C .; McCarthy, J .; Перлис, AJ; Rutishauser, H .; Самельсон, К .; Vauquois, B .; Wegstein, JH; van Wijngaarden, A .; Вудгер, М. (май 1960 г.). Наур, Питер (ред.). Отчет по алгоритмическому языку АЛГОЛ 60 . Копенгаген. DOI : 10.1145 / 367236.367262 . ISSN 0001-0782 . 
  6. ^ "Пересмотренный отчет по алгоритмическому языку Algol 60" . 1963. Архивировано 25 июня 2007 года . Проверено 8 июня 2007 года .
  7. ^ "Пересмотренный отчет по алгоритмическому языку ALGOL 68" (PDF) . 1973. Архивировано 13 сентября 2014 года (PDF) . Проверено 13 сентября 2014 года .
  8. ^ Кнут, Дональд Э. (1964). «Нормальная форма Бэкуса против формы Бэкуса Наура». Коммуникации ACM . 7 (12): 735–736. DOI : 10.1145 / 355588.365140 .
  9. ^ Цитата на премию ACM: Питер Наур. Архивировано 2 апреля 2012 г. в Archive-It , 2005 г.
  10. ^ «Советы по дизайну языков программирования». Архивировано 15 сентября 2009 г. в Wayback Machine , CAR Hoare, декабрь 1973 г., стр. 27. (Это утверждение иногда ошибочно приписывают Эдсжеру В. Дейкстре , также участвовавшему в реализации первого компилятора ALGOL 60.)
  11. ^ Дыбвиг, РК; и другие. Рис, Джонатан; Клингер, Уильям; Абельсон, Хэл (ред.). «Пересмотренный (3) отчет по алгоритмической языковой схеме (посвященный памяти АЛГОЛА 60)» . Архивировано 14 января 2010 года . Проверено 20 октября 2009 года .
  12. ^ О'Хирн, Питер ; Теннент, Роберт Д. (1997). Алголообразные языки . Кембридж, Массачусетс, США: Birkhauser Boston. DOI : 10.1007 / 978-1-4612-4118-8 . ISBN 978-0-8176-3880-1.
  13. ^ "Энциклопедия компьютерных языков" . Архивировано из оригинального 27 сентября 2011 года . Проверено 20 января 2012 года .
  14. ^ История компьютерного музея Архивировано 20 августа 2010 года в Wayback Machine , Исторический Zuse-Computer Z23, восстановленный Конрадом Цузе Шуле в Хюнфельде, для Центра истории компьютерного музея в Маунтин-Вью (Калифорния), США.
  15. ^ Дневной свет, EG (2011). «Призыв Дейкстры к обобщению: появление рекурсивной процедуры, конец 1950-х - начало 1960-х годов» . Компьютерный журнал . 54 : 1756–1772. CiteSeerX 10.1.1.366.3916 . DOI : 10.1093 / comjnl / bxr002 . Архивировано 12 марта 2013 года. 
  16. ^ Kruseman Арец, FEJ (30 июня 2003). «Компилятор Алгола 60 Дейкстра-Зонневельда для Electrologica X1». Программная инженерия (PDF) . История компьютерных наук. Kruislaan 413, 1098 SJ Amsterdam: Centrum Wiskunde & Informatica. Архивировано 4 марта 2016 года (PDF) из оригинала. CS1 maint: location (link)
  17. Перейти ↑ Hoare, Antony (1980). «Старая одежда императора» . Коммуникации ACM . 24 (2). DOI : 10.1145 / 358549.358561 . Архивировано 13 сентября 2017 года.
  18. ^ Коффман, Элиот. «Все, что мне действительно нужно знать, я узнал в CS1» (PDF) . Архивировано из оригинального (PDF) 12 октября 2012 года . Проверено 20 мая 2012 года .
  19. ^ "ГОГОЛЬ - PDP-1 Алгол 60 (компьютерный язык)" . Интернет-историческая энциклопедия языков программирования. Архивировано 2 февраля 2018 года . Проверено 1 февраля 2018 .
  20. ^ Ахо, Альфред В .; Сетхи, Рави ; Ульман, Джеффри Д. (1986). Составители: принципы, методы и инструменты (1-е изд.). Эддисон-Уэсли. ISBN 0-201-10194-7., Раздел 7.5 и ссылки в нем
  21. ^ "803 ALGOL" Архивировано 29 мая 2010 г. в Wayback Machine , руководство для Elliott 803 ALGOL
  22. ^ "Серия ICL 1900: Язык Алгола" . Техническая публикация ICL 3340. 1965.
  23. Как ASCII получил обратную косую черту. Архивировано 11 июля 2014 г. в Wayback Machine , Боб Бемер.
  24. ^ железо / рунический крест
  25. ^ Десятичный знак экспоненты
  26. Перейти ↑ Baumann, R. (октябрь 1961 г.). "Руководство по Алголу группы ALCOR, Часть 1" [Руководство по Алголу Группы ALCOR]. Elektronische Rechenanlagen (на немецком языке): 206–212.
  27. Перейти ↑ Baumann, R. (декабрь 1961 г.). "Руководство по Алголу группы ALCOR, Часть 2" [Руководство по Алголу Группы ALCOR]. Elektronische Rechenanlagen (на немецком языке). 6 : 259–265.
  28. Перейти ↑ Baumann, R. (апрель 1962 г.). "Руководство по Алголу группы ALCOR, Часть 3" [Руководство по Алголу Группы ALCOR]. Elektronische Rechenanlagen (на немецком языке). 2 .
  29. ^ «Стандарт ГОСТ 10859» . Архивировано из оригинального 16 -го июня 2007 года . Проверено 5 июня 2007 года .
  30. ^ Брухису Леонид (22 января 2008). «Пересмотренное предложение по кодированию символа десятичной экспоненты» (PDF) . www.unicode.org . ISO / IEC JTC 1 / SC 2 / WG 2. Архивировано (PDF) из оригинала 31 июля 2015 года . Проверено 24 января +2016 . Это означает, что необходимость в перекодировании программного обеспечения и документации на основе ГОСТ все еще может возникнуть: устаревшие числовые алгоритмы (некоторые из которых могут представлять интерес, например, для автоматической посадки шаттла Буран ...), оптимизированные для операций с плавающей запятой, отличных от IEEE. представление БЭСМ-6 нельзя просто перекомпилировать и ожидать, что оно будет работать надежно, и может потребоваться вмешательство человека.

Дальнейшее чтение [ править ]

  • Ф.Л. Бауэр, Р. Бауман, М. Фелисиано, К. Самельсон, Введение в Алгол . Прентис Холл, 1964, ISBN 0-13-477828-6 
  • Брайан Рэнделл и Л. Дж. Рассел, Реализация Алгола 60: Перевод и использование программ Алгола 60 на компьютере . Academic Press, 1964. Дизайн компилятора Whetstone . Одно из ранее опубликованных описаний реализации компилятора. См соответствующие документы: Ветстоун Алголь Revisited и The точильный KDF9 Алголь Переводчик от Brian Randell
  • Дейкстра, E.W (1961), перевод на Algol 60: переводчик на algol 60 для x1 и создание переводчика для algol 60 (PDF) , отчет MR 35/61, Амстердам: Mathematisch Centrum
  • Пересмотренный отчет по алгоритмическому языку Algol 60 Питера Наура и др. Определение АЛГОЛА
  • Петер Наур "Европейская сторона последней фазы развития Алгола 60".

Внешние ссылки [ править ]

  • История АЛГОЛА в Музее компьютерной истории
  • Веб-компилятор ALGOL-F для небольших экспериментов [ постоянная мертвая ссылка ]