АЛГОЛ 60

Член семейства языков программирования АЛГОЛ.
АЛГОЛ 60
Парадигмыпроцедурный , императивный , структурированный
СемьяАЛГОЛ
РазработаноБэкус , Бауэр , Грин, Кац , Маккарти , Наур , Перлис , Рутисхаузер , Самельсон , ван Вейнгаарден , Вокуа , Вегштейн , Вуджер
Впервые появился1960 ; 65 лет назад ( 1960 )
Дисциплина печатиСтатичный , сильный
ОбъемЛексический
Под влиянием
АЛГОЛ 58
Под влиянием
Большинство последующих императивных языков (так называемых АЛГОЛ-подобных языков), например, PL/I , Simula , CPL , Pascal , Ada , C

ALGOL 60 (сокращение от Algorithmic Language 1960 ) является членом семейства языков программирования ALGOL . Он появился после ALGOL 58 , в котором были введены блоки кода и пары и для их разграничения, что стало ключевым шагом в развитии структурного программирования . ALGOL 60 был одним из первых языков, реализующих определения функций (которые можно было вызывать рекурсивно). Определения функций ALGOL 60 могли быть вложены друг в друга (что было впервые введено любым языком программирования [ необходимо разъяснение ] ), с лексической областью действия . Он дал начало многим другим языкам, включая CPL , PL/I , Simula , BCPL , B , Pascal и C. Практически каждый компьютер той эпохи имел язык системного программирования, основанный на концепциях ALGOL 60.beginend

Никлаус Вирт создал свой собственный ALGOL W на основе ALGOL 60, прежде чем перейти к разработке Pascal . Algol-W должен был стать следующим поколением ALGOL, но комитет ALGOL 68 принял решение о более сложном и продвинутом дизайне, а не о чистом упрощенном ALGOL 60. Официальные версии ALGOL названы в честь года их первой публикации. ALGOL 68 существенно отличается от ALGOL 60 и частично подвергался критике за это, так что в целом «ALGOL» относится к диалектам ALGOL 60.

Стандартизация

ALGOL 60 и COBOL были первыми языками, стремившимися к стандартизации.

  • ISO 1538:1984 Языки программирования – ALGOL 60 (стабилизированный)
  • ISO/TR 1672:1977 Аппаратное представление основных символов АЛГОЛа ... (в настоящее время отозван)

История

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

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

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

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

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

Первоначально язык не включал рекурсию . Она была включена в спецификацию в последнюю минуту, вопреки желанию некоторых членов комитета. [3]

ALGOL 60 вдохновил многие последующие языки. Тони Хоар заметил: «Это язык, который настолько опередил свое время, что он был не только лучше своих предшественников, но и почти всех своих последователей». [4] [5]

Хронология реализаций ALGOL 60

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

ИмяГодАвторСостояниеОписаниеЦелевой ЦП
X1 АЛГОЛ 60Август 1960 г. [7]Эдсгер В. Дейкстра и Яап А. Зонневельд НидерландыПервая реализация АЛГОЛа 60 [8]Электрологика X1
Алгол1960 [9]Эдгар Т. Айронс СШААЛГОЛ 60ЦКЗ 1604
Берроуз Алгол
(несколько вариантов)
1961Burroughs Corporation (при участии Хоара , Дейкстры и других) СШАОснова компьютеров Burroughs (теперь Unisys на базе MCP )Burroughs Большие системы
и системы среднего уровня
Случай АЛГОЛ1961 СШАSimula изначально была задумана как расширение моделирования Case ALGOL.УНИВАК 1107
ГОГОЛЬ1961Уильям М. Маккиман СШАДля системы разделения времени ODINПДП-1
ДАСК АЛГОЛ1961Петер Наур , Йорн Йенсен ДанияАЛГОЛ 60DASK в Regnecentralen
СМИЛ АЛГОЛ1962Торгиль Экман, Карл-Эрик Фрёберг ШвецияАЛГОЛ 60SMIL в Лундском университете
ГИР АЛГОЛ1962Петер Наур , Йорн Йенсен ДанияАЛГОЛ 60GIER в Regnecentralen
Дартмутский АЛГОЛ 30 [10]1962Томас Юджин Курц , Стивен Дж. Гарланд, Роберт Ф. Харгрейвс, Энтони В. Кнапп , Хорхе Л. Ласер СШААЛГОЛ 60ЛГП-30
Алькор Майнц 20021962Урсула Хилл-Замельсон, Ханс Лангмаак ГерманияСименс 2002
ALCOR-Иллинойс 70901962
[11] [12]
Манфред Пауль, Ханс Рюдигер Виле, Давид Грис и Рудольф Байер США , Западная Германия ALGOL 60,
реализованный в Иллинойсе и TH München , 1962-1964 гг.
IBM7090
USS 90 Алгол1962Л. Петроне Италия
Эллиотт АЛГОЛ1962КАР Хоар ВеликобританияОбсуждалось в его лекции на вручении премии Тьюринга в 1980 годуЭллиотт 803 и Эллиотт 503
АЛГОЛ 601962Роланд Штробель [13] Восточная ГерманияРеализовано Институтом прикладной математики Немецкой академии наук в Берлине.Zeiss-Rechenautomat ZRA 1
АЛГОЛ 601962Бернар Вокуа , Луи Болье [14] ФранцияИнститут информатики и прикладных математических технологий Гренобля (IMAG) и Compagnie des Machines BullБулл Гамма 60
Переводчик Алгола1962Г. ван дер Мей и В.Л. ван дер Поэль НидерландыStaatsbedrijf der Posterijen, Telegrafie en TelefonieЗЕБРА
Кидсгроув Алгол1963ФГ Дункан ВеликобританияАнглийская электрическая компания KDF9
СКАЛЬП [15]1963Стивен Дж. Гарланд, Энтони В. Кнапп , Томас Юджин Курц СШААвтономный процессор ALgol для подмножества ALGOL 60ЛГП-30
ВАЛГОЛ1963Валь Шорре СШАТест компилятора META II
FP6000 Алгол1963Роджер Мур Канаданаписано для Saskatchewan Power Corp.ФП6000
Точильный камень1964Брайан Рэнделл и Лоуфорд Джон Рассел ВеликобританияПодразделение атомной энергетики компании English Electric Company. Предшественник реализаций Ferranti Pegasus , National Physical Laboratories ACE и English Electric DEUCEАнглийская электрическая компания KDF9
АЛГОЛ 601964Жан-Клод Буссар [16] ФранцияИнститут информатики и прикладной математики Гренобля  [ фр ]IBM7090
АЛГОЛ-ГЕНИЙ1964Бёрье Лангефорс ШвецияДобавлены записи данных и ввод/вывод в стиле COBOLДатасааб D-21
АЛГОЛ 601965Клод Пэр  [fr] [17] ФранцияЦентр расчета факультета наук НансиIBM1620
Дартмутский АЛГОЛ1965Стивен Дж. Гарланд, Сарр Блумсон, Рон Мартин СШААЛГОЛ 60Система разделения времени Dartmouth для GE 235
НУ АЛГОЛ1965 НорвегияЮНИВАК
АЛГОЛ 601965 [18]FEJ Круземан Аретц НидерландыКомпилятор MC для EL-X8Электрологика X8
АЛГЕК1965 Советский СоюзМинск-22АЛГЭК, на основе АЛГОЛ 60 и поддержки КОБОЛа , для экономических задач
МАЛГОЛ1966опубл. А. Виил, М. Котли и М. Рахенди, Эстонская ССРМинск-22
АЛЬГАМЫ1967Группа GAMS (ГАМС, группа автоматизации программирования для машин среднего класса), сотрудничество Академий наук СЭВ.СЭВМинск-22 , позднее ЕС ЭВМ , БЭСМ
АЛГОЛ/ЗАМ1967 ПольшаПольский компьютер ZAM
Китайский Алгол1972 КитайКитайские иероглифы, выраженные с помощью системы символов
ДГ/Л1972 СШАСемейство компьютеров DG Eclipse
НАСЕ1990Эрик Шенфельдер ГерманияУстный переводчикLinux и MS Windows
МАРСТ2000Андрей Махорин РоссияТранслятор ALGOL 60 в CВсе процессоры, поддерживаемые коллекцией компиляторов GNU; MARST является частью проекта GNU

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

Характеристики

ALGOL 60, как официально определено, не имел средств ввода/вывода; реализации определяли свои собственные способами, которые редко были совместимы друг с другом. Напротив, ALGOL 68 предлагал обширную библиотеку средств transput (термин ALGOL 68 для ввода/вывода).

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

Call-by-name известен многим разработчикам компиляторов по интересным " thunks ", которые используются для его реализации. Дональд Кнут разработал " тест man or boy ", чтобы отделить компиляторы, которые правильно реализовали " рекурсию и нелокальные ссылки". Этот тест содержит пример call-by-name.

Уровни языка

Отчеты ALGOL 60 распознают три различных уровня языка, т. е. язык Reference, язык Publication и несколько Hardware Representations. Язык Reference и Publication не имеют зарезервированных слов, однако отчеты рекомендуют [20] резервировать некоторые идентификаторы для стандартных функций.

В отчетах кратко описываются аппаратные представления. Реализации различаются по аппаратным представлениям подчеркнутых независимых базовых символов [21]

  1. Зарезервированные слова
  2. Правка

Зарезервированные слова ALGOL 60 и ограниченные идентификаторы

В измененном отчете содержится 24 зарезервированных слова:

  • ARRAY
  • BEGIN
  • BOOLEAN
  • COMMENT
  • DO
  • ELSE
  • END
  • FALSE
  • FOR
  • GOTO
  • IF
  • INTEGER
  • LABEL
  • OWN
  • PROCEDURE
  • REAL
  • STEP
  • STRING
  • SWITCH
  • THEN
  • TRUE
  • UNTIL
  • VALUE
  • WHILE

В стандартном подъязыке больших систем Берроуза имеется 35 таких зарезервированных слов :

  • ALPHA
  • ARRAY
  • BEGIN
  • BOOLEAN
  • COMMENT
  • CONTINUE
  • DIRECT
  • DO
  • DOUBLE
  • ELSE
  • END
  • EVENT
  • FALSE
  • FILE
  • FOR
  • FORMAT
  • GO
  • IF
  • INTEGER
  • LABEL
  • LIST
  • LONG
  • OWN
  • POINTER
  • PROCEDURE
  • REAL
  • STEP
  • SWITCH
  • TASK
  • THEN
  • TRUE
  • UNTIL
  • VALUE
  • WHILE
  • ZIP

В стандартном подъязыке Burroughs Large Systems имеется 71 такой ограниченный идентификатор:

  • ACCEPT
  • AND
  • ATTACH
  • BY
  • CALL
  • CASE
  • CAUSE
  • CLOSE
  • DEALLOCATE
  • DEFINE
  • DETACH
  • DISABLE
  • DISPLAY
  • DIV
  • DUMP
  • ENABLE
  • EQL
  • EQV
  • EXCHANGE
  • EXTERNAL
  • FILL
  • FORWARD
  • GEQ
  • GTR
  • IMP
  • IN
  • INTERRUPT
  • IS
  • LB
  • LEQ
  • LIBERATE
  • LINE
  • LOCK
  • LSS
  • MERGE
  • MOD
  • MONITOR
  • MUX
  • NEQ
  • NO
  • NOT
  • ON
  • OPEN
  • OR
  • OUT
  • PICTURE
  • PROCESS
  • PROCURE
  • PROGRAMDUMP
  • RB
  • READ
  • RELEASE
  • REPLACE
  • RESET
  • RESIZE
  • REWIND
  • RUN
  • SCAN
  • SEEK
  • SET
  • SKIP
  • SORT
  • SPACE
  • SWAP
  • THRU
  • TIMES
  • TO
  • WAIT
  • WHEN
  • WITH
  • WRITE

а также названия всех внутренних функций.

Стандартные операторы

ПриоритетОператор
первая арифметикапервый↑ (мощность)
второй×, / (действительное), ÷ (целое)
третий+, -
второй<, ≤, =, ≥, >, ≠
третий¬ (нет)
четвертый∧ (и)
пятый∨ (или)
шестой⊃ (подразумевание)
седьмой≡ (эквивалентность)

Примеры и проблемы переносимости

Сравнение образцов кода

АЛГОЛ 60

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

Реализации различаются тем, как должен быть написан текст, выделенный жирным шрифтом. Слово 'INTEGER', включая кавычки, должно использоваться в некоторых реализациях вместо integer , выше, тем самым обозначая его как особое ключевое слово.

Ниже приведен пример создания таблицы с использованием АЛГОЛа Эллиотта 803 : [22]

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

Семейство АЛГОЛ 60

Поскольку ALGOL 60 не имел средств ввода-вывода, в ALGOL нет переносимой программы hello world . Следующая программа могла бы (и все еще будет) компилироваться и запускаться на реализации ALGOL для мэйнфрейма Unisys A-Series и является простым упрощением кода, взятого из The Language Guide [23] на кафедре компьютерных и информационных наук Мичиганского университета в Дирборне Hello world! Страница программы-примера ALGOL. [24]

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

Где * и т. д. представляли спецификацию формата, используемую в FORTRAN, например [25]

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

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

Еще более простая программа, использующая оператор Display:

НАЧАЛО  ОТОБРАЖЕНИЯ ( "ПРИВЕТ, МИР!" )  КОНЕЦ .

Альтернативный пример, использующий ввод-вывод Эллиотта Алгола, выглядит следующим образом. Эллиотт Алгол использовал разные символы для "open-string-quote" и "close-string-quote", представленные здесь как  ' и  ' .

 программа HiFolks ; начало печати ' Привет, мир ' конец ;      

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

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

Версия Algol I/O серии ICT 1900 допускала ввод с бумажной ленты или перфокарты. Режим бумажной ленты «full» допускал строчные буквы. Вывод осуществлялся на строчный принтер. Обратите внимание на использование '(', ')' и %. [26]

 «ПРОГРАММА» (ПРИВЕТ) 'НАЧИНАТЬ' «КОММЕНТАРИЙ» ОТКРЫТАЯ КАВАЧКА ЭТО '(', ЗАКРЫТАЯ КАВАЧКА ЭТО ')', ПЕЧАТНОЕ МЕСТО ДОЛЖНО БЫТЬ ЗАПИСЫВАТЬСЯ КАК %, ПОТОМУ ЧТО ПРОБЕЛЫ ИГНОРИРУЮТСЯ; НАПИШИТЕ ТЕКСТ('('ПРИВЕТ%МИР')'); 'КОНЕЦ' 'ЗАКАНЧИВАТЬ'

ПРЫГНУТЬ

LEAP — это расширение языка программирования ALGOL 60, которое обеспечивает ассоциативную память троек. Три элемента в тройке обозначают связь, что Атрибут Объекта имеет определенное Значение. LEAP был создан Джеромом Фельдманом (Калифорнийский университет в Беркли) и Полом Ровнером (MIT Lincoln Lab) в 1967 году. LEAP также был реализован в SAIL.

Смотрите также

Ссылки

  1. ^ Кнут, Дональд Э. (декабрь 1964 г.). «Нормальная форма Бэкуса против формы Бэкуса-Наура». Сообщения ACM . 7 (12): 735– 6. doi : 10.1145/355588.365140 . S2CID  47537431.
  2. ^ Цитата премии ACM / Питер Наур, 2005 г.
  3. ^ ван Эмден, Маартен (2014). «Как рекурсия попала в программирование: история интриг, предательства и продвинутой семантики языков программирования». Место программиста .
  4. ^ Хоар, К. А. Р. (декабрь 1973 г.). «Советы по проектированию языков программирования» (PDF) . стр. 27.(Это утверждение иногда ошибочно приписывают Эдсгеру В. Дейкстре , также участвовавшему в реализации первого компилятора ALGOL 60. )
  5. ^ Абельсон, Хэл ; Дибвиг, Р.К.; и др. Рис, Джонатан; Клингер, Уильям (ред.). "Пересмотренный(3) отчет о схеме алгоритмического языка (посвященный памяти АЛГОЛа 60)" . Получено 20 октября 2009 г.
  6. Энциклопедия компьютерных языков. Архивировано 27 сентября 2011 г. на Wayback Machine.
  7. ^ Daylight, EG (2011). «Объединяющий клич Дейкстры для обобщения: появление рекурсивной процедуры, конец 1950-х – начало 1960-х». The Computer Journal . 54 (11): 1756–1772 . doi :10.1093/comjnl/bxr002.
  8. ^ Kruseman Aretz, FEJ (30 июня 2003 г.). "Компилятор Dijkstra-Zonneveld ALGOL 60 для Electrologica X1" (PDF) . Программная инженерия . История компьютерных наук. Амстердам: Centrum Wiskunde & Informatica. ISSN  1386-3711. Архивировано из оригинала (PDF) 2004-01-17.
  9. Айронс, Эдгар Т., Синтаксически направленный компилятор для ALGOL 60, Communications of the ACM, т. 4, стр. 51. (январь 1961 г.)
  10. ^ Курц 1978.
  11. ^ Gries, D.; Paul, M.; Wiehle, H. R (1965). «Некоторые методы, используемые в ALCOR Illinois 7090». Сообщения ACM . 8 (8): 496–500 . doi : 10.1145/365474.365511 . S2CID  18365024.
  12. ^ Bayer, R.; Gries, D.; Paul, M.; Wiehle, HR (1967). "Посмертный сброс ALCOR Illinois 7090/7094". Сообщения ACM . 10 (12): 804– 808. doi : 10.1145/363848.363866 . S2CID  3783605.
  13. ^ Rechenautomaten mit Trommelspeicher, Förderverein der Technischen Sammlung Dresden
  14. ^ Mounier-Kuhn, Pierre (2014). «Algol во Франции: от универсального проекта к встроенной культуре». IEEE Annals of the History of Computing . 36 (4): 6– 25. doi :10.1109/MAHC.2014.50. ISSN  1058-6180.
  15. ^ Курц 1978, стр. 517.
  16. ^ Буссар, Жан-Клод (июнь 1964 г.). Etude et réalisation d'un compilateur Algol60 sur Calculator éléctronique du type IBM 7090/94 et 7040/44 [ Разработка и реализация компилятора Algol60 на электронных калькуляторах IBM 7090/94 и 7040/44 ] (доктор философии) (на французском языке). Университет Жозефа-Фурье - Гренобль I.
  17. Клод Пэйр (27 апреля 1965 г.). Описание компилятора АЛГОЛА . Группа пользователей Европейского региона 1620 . ИБМ.
  18. ^ Круземан Арец, FEJ (1973). Компилятор Алгола 60 в Алголе 60 . Трактаты Математического центра. Амстердам: Математический центр.
  19. ^ Ахо, Альфред В.; Сети , Рави ; Ульман, Джеффри Д. (1986). Компиляторы: принципы, методы и инструменты (1-е изд.). Addison-Wesley. ISBN 978-0-201-10194-2., Раздел 7.5 и ссылки в нем
  20. ^ Наур и др. 1963, 3.2.4. Стандартные функции.
  21. ^ Naur et al. 1963, 2.1. Буквы: (1) Следует особо отметить, что во всем справочном языке подчеркивание [здесь это выглядит как подчеркнутое; NL] используется для определения независимых базовых символов (см. разделы 2.2.2 и 2.3). Предполагается, что они не имеют никакого отношения к отдельным буквам, из которых они составлены. В настоящем отчете подчеркивание не будет использоваться ни для каких других целей.
  22. ^ "803 ALGOL", руководство для Elliott 803 ALGOL
  23. ^ "Язык программирования ALGOL". www.engin.umd.umich.edu . Архивировано из оригинала 10 февраля 2010 . Получено 11 января 2022 .
  24. ^ "Hello world! Example Program". www.engin.umd.umich.edu . Архивировано из оригинала 4 февраля 2010 . Получено 11 января 2022 .
  25. ^ Fortran#Пример "Hello, World!"
  26. ^ "ICL 1900 series: Algol Language". Техническая публикация ICL 3340. 1965.

Библиография

Дальнейшее чтение

  • Дейкстра, Эдсгер В. (1961). «Трансляция АЛГОЛа 60: Транслятор АЛГОЛа 60 для X1 и создание транслятора для АЛГОЛа 60 (PDF) (Технический отчет). Амстердам: Mathematisch Centrum. 35.
  • Рэнделл, Брайан ; Рассел, Лоуфорд Джон (1964). Реализация АЛГОЛа 60: Трансляция и использование программ АЛГОЛа 60 на компьютере . Academic Press. OCLC  526731.Проект компилятора Whetstone . Одно из первых опубликованных описаний реализации компилятора. См. соответствующие статьи: Whetstone Algol Revisited и The Whetstone KDF9 ALGOL Translator Брайана Рэнделла
  • Гус, Герхард [на немецком языке] (7 августа 2017 г.). Geschichte der deutschsprachigen Informatik - Programmiersprachen und Übersetzerbau [ История информатики в немецкоязычных странах - Языки программирования и проектирование компиляторов ] (PDF) (на немецком языке). Карлсруэ, Германия: Факультет информатики, Технологический институт Карлсруэ (KIT). Архивировано (PDF) из оригинала 19 мая 2022 г. Проверено 14 ноября 2022 г.(11 страниц)
  • Пересмотренный отчет об алгоритмическом языке ALGOL 60 Питера Наура и др. Определение ALGOL
  • Краткое описание синтаксиса BNF АЛГОЛа 60
  • «Старые одежды императора» — речь Хоара на вручении премии Тьюринга ACM 1980 года, в которой обсуждается история ALGOL и его участие
  • MARST, бесплатный транслятор ALGOL-C
  • Реализация ALGOL 60 для FP6000 Архивировано 25 июля 2020 г. на Wayback Machine Обсуждение некоторых вопросов реализации.
  • Наур, Питер (август 1978 г.). «Европейская сторона последней фазы развития ALGOL 60». ACM SIGPLAN Notices . 13 (8): 15– 44. doi :10.1145/960118.808370. S2CID  15552479.
  • Эдинбургский университет написал компиляторы для Algol60 (позже обновленные для Algol60M) на основе своих компиляторов Atlas Autocode, изначально загруженных из Atlas в KDF-9. Эдинбургские компиляторы сгенерировали код для ICL1900, ICL4/75 (клон IBM360) и ICL2900. Вот BNF для Algol60 (архив 2020-05-15 на Wayback Machine) и исходный код компилятора ICL2900 (архив 2020-05-15 на Wayback Machine) , библиотечная документация (архив 2020-05-15 на Wayback Machine ) и значительный набор тестов (архив 2020-05-15 на Wayback Machine), включая тесты Брайана Вихмана. Архивировано 15.05.2020 на Wayback Machine. Также существует довольно поверхностный транслятор исходного кода с Algol60 на Atlas Autocode. Архивировано 15.05.2020 на Wayback Machine .
  • Музей ретрокомпьютеров Эрика С. Рэймонда , среди прочего, ссылка на интерпретатор NASE ALGOL 60, написанный на языке C.
  • Интерпретатор NASE
  • Истории о B5000 и людях, которые там были: специализированный компьютер ALGOL [1], [2]
  • Боттенбрух, Герман (1961). Структура и использование АЛГОЛа 60 (Отчет). doi : 10.2172/4020495 . OSTI  4020495.
  • NUMAL Библиотека числовых процедур на языке ALGOL 60, разработанная законным владельцем Stichting Centrum Wiskunde & Informatica ( правопреемника Stichting Mathematich Centrum).
  • Ресурсы ALGOL 60: переводчики, документация, программы
  • ALGOL 60 включен в Racket
Взято с "https://en.wikipedia.org/w/index.php?title=ALGOL_60&oldid=1268277890"