Язык программирования
АЛГОЛ 58 , первоначально называвшийся IAL , является одним из семейств языков программирования ALGOL . Это был ранний компромиссный проект, вскоре замененный АЛГОЛом 60 . По словам Джона Бэкуса
Цюрихская конференция ACM-GAMM имела два основных мотива при предложении IAL: (а) предоставить средства обмена численными методами и другими процедурами между людьми и (б) предоставить средства реализации заявленного процесса на различных машинах. ... [2]
В АЛГОЛе 58 было введено фундаментальное понятие составного оператора , но оно было ограничено только потоком управления и не было привязано к области действия идентификатора , как это было с блоками Алгола 60 .
Имя
Бауэр приписывает это имя Герману Боттенбруху , который ввел термин алгоритмический язык (algorithmische Sprache) в 1957 году, «по крайней мере, в Германии». [3] [4]
История
Предложения об универсальном языке были выдвинуты Ассоциацией вычислительной техники (ACM), а также немецким Gesellschaft für Angewandte Mathematik und Mechanik («Общество прикладной математики и механики») (GAMM). Для их объединения было решено организовать совместное заседание. Встреча проходила с 27 мая по 2 июня 1958 года в ETH Zurich , и на ней присутствовали следующие люди:
Первоначально язык предлагалось называть IAL ( Международный алгебраический язык ), но, по словам Перлиса, [5]
это было отвергнуто как «невыразимая» и напыщенная аббревиатура. Вместо этого был предложен АЛГОЛ, хотя официально он был принят лишь год спустя. В публикации после встречи по-прежнему использовалось название IAL. [6]
К концу 1958 года группа ZMMD создала работающий компилятор АЛГОЛА 58 для компьютера Z22 . ZMMD было аббревиатурой Цюриха (где работал Рутисхаузер), Мюнхена (рабочее место Бауэра и Самельсона), Майнца (место расположения компьютера Z22), Дармштадта (рабочее место Боттенбруха).
IBM предприняла некоторые попытки внедрения ALGOL 58 , но эти усилия конкурировали с FORTRAN , и вскоре от них отказались. Он также был реализован в Дартмутском колледже на LGP-30 , но вскоре эта реализация превратилась в АЛГОЛ 60 . Реализация Burroughs 220 под названием BALGOL также развивалась по своему собственному пути, но сохранила большую часть исходного характера ALGOL 58. [7]
Основной вклад АЛГОЛа 58 был в развитие более поздних языков; он использовался в качестве основы для JOVIAL , [4] MAD , NELIAC [4] и ALGO . Он также использовался в 1959 году для публикации алгоритмов в CACM , положив начало тенденции использования нотации ALGOL в публикациях, которая продолжалась в течение многих лет.
График реализации вариантов АЛГОЛа 58
Влияние АЛГОЛА 58 на АЛГОЛ 60
- IAL представил трехуровневую концепцию языка ссылок, публикаций и аппаратного обеспечения, а также концепцию «разделителей слов», имеющих отдельное представление от свободно выбранных идентификаторов (следовательно, никаких зарезервированных слов). АЛГОЛ 60 сохранил эту трехуровневую концепцию. [8]
- Различие между присваиванием (
:=
представляющим стрелку, направленную влево) и отношением равенства =
было введено в IAL и сохранено в ALGOL 60. - И IAL, и ALGOL 60 допускают использование массивов с произвольными нижними и верхними границами индексов, а также позволяют определять границы индексов с помощью целочисленных выражений.
- И IAL, и ALGOL 60 допускают вложение объявлений процедур и соответствующих областей идентификаторов.
- Отчет IAL описывал подмену параметров примерно в тех же терминах, что и отчет ALGOL 60, оставляя открытой возможность вызова по имени . Неясно, было ли это реализовано в то время.
- IAL допускает числовые метки операторов, которые сохранил ALGOL 60.
- На возможность включения в программу кода, отличного от ALGOL, уже намекали в контексте параметров процедур.
- И IAL, и ALGOL 60 имеют указатель переключателя , однако не связанный с оператором переключения в C и других языках.
- Встроенные функции вида f ( x ) := x /2; были предложены в IAL, но исключены из ALGOL 60.
- Объявления процедур IAL предоставляют отдельные списки объявлений для входных и выходных параметров. Процедура может возвращать несколько значений; этот механизм был заменен в АЛГОЛе 60 объявлением значения .
- Объявления переменных в IAL можно размещать в любом месте программы, а не обязательно в начале процедуры. Напротив, объявления внутри блока ALGOL 60 должны происходить перед всеми операторами выполнения.
- Оператор for имеет форму
for i:=base(increment)limit
, прямо напоминающую цикл языка программирования Рутисхаузера Superplan , заменяя его =
на :=
и заменяя его немецкое ключевое слово Für
прямым английским переводом for
; В АЛГОЛе 60 круглые скобки были заменены словами-разделителями step
и until
, так что предыдущий оператор вместо этого был бы .i:=base step increment until limit
- В операторе if IAL нет предложения then или else ; он скорее охраняет последующее утверждение. IAL предоставляет оператор if либо , который позволяет легко протестировать несколько условий. Оба были заменены конструкцией if - then из АЛГОЛА с введением неоднозначности « висячее- иначе ».
- IAL обеспечивает макроподстановку с помощью оператора do ; это было исключено в АЛГОЛе 60.
- IAL позволяет опускать один или несколько индексов массива при передаче массивов процедурам и предоставлять любые или все аргументы процедуры, передаваемой другой процедуре.
- Все инфиксные логические операторы IAL имеют один и тот же уровень приоритета. Экспоненты обозначены парными стрелками вверх и вниз, что устранило путаницу в отношении правильной интерпретации вложенных экспонент; В АЛГОЛе 60 парные стрелки заменены одной стрелкой вверх, функция которой эквивалентна ** в Фортране .
- В отчете IAL не уточняется явно, какие стандартные функции должны быть предоставлены, а лишь туманно упоминаются «стандартные функции анализа». Отчет ALGOL 60 имеет более подробный список стандартных функций.
Рекомендации
- ^ Рохас, Рауль; Хашаген, Ульф (2002). Первые компьютеры: история и архитектура. МТИ Пресс. п. 292. ИСБН 978-0262681377. Проверено 25 октября 2013 г.
- ^ Бэкус, JW (1959). «Синтаксис и семантика предложенного международного алгебраического языка на Цюрихской конференции ACM-GAMM». Материалы международной конференции по обработке информации . ЮНЕСКО. стр. 125–132.
- ^ Эспрей, Уильям (17 февраля 1987 г.), Интервью с Фридрихом Л. Бауэром (PDF) , Институт Чарльза Бэббиджа , заархивировано из оригинала (PDF) 22 апреля 2012 г.
- ^ abc Goos, Герхард [на немецком языке] (07 августа 2017 г.). Geschichte der deutschsprachigen Informatik - Programmiersprachen und Übersetzerbau [ История информатики в немецкоязычных странах - Языки программирования и проектирование компиляторов ] (PDF) (на немецком языке). Карлсруэ, Германия: Факультет информатики, Технологический институт Карлсруэ (KIT). Архивировано (PDF) из оригинала 19 мая 2022 г. Проверено 14 ноября 2022 г.(11 страниц)
- ^ Перлис, AJ (1981). «Разговор о компьютерах в пятидесятые годы». Национальная конференция ACM. Нэшвилл, Теннесси . Лос-Аламито, Калифорния: (Стенограмма ЯН Ли (ред.), Computer Pioneers, IEEE Computer Society Press (опубликовано в 1995 г.), стр. 545–556).
- ^ Перлис, AJ ; Самельсон, К. (1958). «Предварительный отчет: международный алгебраический язык». Коммуникации АКМ . 1 (12): 8–22. дои : 10.1145/377924.594925 . S2CID 28755282.
- ^ «Реализации и диалекты Algol 58», Группа сохранения программного обеспечения , Музей истории компьютеров . Дональд Кнут цитируется в BALGOL: «Я учусь на втором курсе Калифорнийского технологического института и был консультантом Берроуза. После завершения работы над компилятором для Берроуза я присоединился к отделу планирования продукции. Отдел планирования продукции в основном состоял из людей, которые написал лучшее программное обеспечение, когда-либо созданное в мире на тот момент, а именно компилятор Берроуза АЛГОЛА для компьютера 220. Это был большой шаг вперед для программного обеспечения. Это было первое программное обеспечение, которое использовало обработку списков и структуры данных высокого уровня в разумным способом. Они взяли идеи Ньюэлла и Саймона и применили их к компиляторам. Это кружило вокруг всех других вещей, которые мы делали». [Дон Кнут, Устная история CHM, 2007, стр. 9]
- ^ Наур, П., изд. (1962). Пересмотренный отчет об алгоритмическом языке АЛГОЛ 60 (PDF) . Международная федерация обработки информации.
Внешние ссылки
- Алгол 58 в Группе сохранения программного обеспечения (см. Музей истории компьютеров )
- Отчет об Algol 58 от CACM в группе по сохранению программного обеспечения