АЛГОЛ 58
Парадигма | процедурный , императивный , структурированный |
---|---|
Семья | АЛГОЛ |
Разработано | Фридрих Л. Бауэр , Герман Боттенбрух , Хайнц Рутисхаузер , Клаус Самельсон , Джон Бэкус , Чарльз Кац , Алан Перлис , Джозеф Генри Вегштейн |
Впервые появился | 1958 год |
Дисциплина набора текста | Статический , сильный |
Объем | Лексический |
Под влиянием | |
ФОРТРАН , ИТ, Планкалкюль , [1] Суперплан , последовательный перевод формул | |
Под влиянием | |
Большинство последующих императивных языков ( алголоподобных ) |
АЛГОЛ 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 , и на ней присутствовали следующие люди:
- Фридрих Л. Бауэр , Герман Боттенбрух , Хайнц Рутисхаузер и Клаус Самельсон (из GAMM)
- Джон Бэкус , Чарльз Кац , Алан Перлис и Джозеф Генри Вегштейн (из ACM).
Первоначально язык предлагалось называть IAL ( Международный алгебраический язык ), но, по словам Перлиса, [5] это было отвергнуто как «невыразимая» и напыщенная аббревиатура. Вместо этого был предложен АЛГОЛ, хотя официально он был принят лишь год спустя. В публикации после встречи по-прежнему использовалось название IAL. [6]
К концу 1958 года группа ZMMD создала работающий компилятор АЛГОЛА 58 для компьютера Z22 . ZMMD было аббревиатурой Цюриха (где работал Рутисхаузер), Мюнхена (рабочее место Бауэра и Самельсона), Майнца (место расположения компьютера Z22), Дармштадта (рабочее место Боттенбруха).
предприняла некоторые попытки внедрения ALGOL 58 IBM , но эти усилия конкурировали с FORTRAN , и вскоре от них отказались. Он также был реализован в Дартмутском колледже на LGP-30 , но вскоре эта реализация превратилась в АЛГОЛ 60 . Реализация Burroughs 220 под названием BALGOL также развивалась по своему собственному пути, но сохранила большую часть исходного характера ALGOL 58. [7]
Основной вклад АЛГОЛа 58 был в развитие более поздних языков; он был использован как основа для JOVIAL , [4] МЭД , НЕЛИАК [4] и АЛГО . Он также использовался в 1959 году для публикации алгоритмов в CACM , положив начало тенденции использования нотации ALGOL в публикациях, которая продолжалась в течение многих лет.
шкала реализации вариантов АЛГОЛА Временная 58
Имя | Год | Автор | Состояние | Описание | Целевой процессор |
---|---|---|---|---|---|
ZMMD-реализация | 1958 | Фридрих Л. Бауэр , Хайнц Рутисхаузер, Клаус Самельсон, Герман Боттенбрух | Германия | Z22 | |
НЕЛИАК | 1958 | Лаборатория военно-морской электроники | олень | АН/USQ-17 | |
ВЕСЕЛЫЙ | 1960 | Жюль Шварц | олень | Был ли DOD HOL до появления Ады (языка программирования) | Разное (см. статью) |
БАЛГОЛ | 1960 | Джоэл Мернер и др. | олень | Корпорация Берроуз B220 | |
БЕЗУМНЫЙ | 1960 | Мичиганский университет | олень | Мэйнфрейм IBM 7090/7094 , затем середина 1960-х годов, портированный на Univac 1108. | |
Дартмутский Алгол 30 | 1962 | Томас Юджин Курц и др. - превратился в АЛГОЛ 60 | олень | ЛГП-30 | |
СУБАЛГОЛ | 1962 | Боб Брейден , Лоуренс М. Брид и Роджер Мур , Стэнфордский университет | олень | Расширение БАЛГОЛ | ИБМ 7090 |
ЧТО-НИБУДЬ | ~ | Бендикс Корпорация | олень | Бендикс G-15 |
АЛГОЛА 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 должны происходить перед всеми операторами выполнения.
- The for -оператор имеет форму
for i:=base(increment)limit
, прямо напоминающий цикл языка программирования Рутисхаузера Superplan , заменяющий=
с:=
и заменив его ключевое слово на немецком языкеFür
с прямым английским переводомfor
; АЛГОЛ 60 заменил круглые скобки разделителями слов.step
иuntil
, так что предыдущий оператор вместо этого будетi:=base step increment until limit
. - IAL if -statement не имеет тогда -предложение или еще -предложение; он скорее охраняет последующее утверждение. IAL предоставляет if либо -оператор, который позволяет чисто проверить несколько условий. Оба были заменены Алголом. если - затем построить, с введением " висячих " иначе "двусмысленность".
- IAL обеспечивает макрозамещение с помощью делать - утверждение; это было исключено в АЛГОЛе 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 г.
- ^ Jump up to: Перейти обратно: а б с Гус, Герхард [на немецком языке] (7 августа 2017 г.). История немецкоязычной информатики - языки программирования и проектирование компиляторов [ История информатики в немецкоязычных странах - Языки программирования и проектирование компиляторов ] (PDF) (на немецком языке). Карлсруэ, Германия: Факультет компьютерных наук Технологического института Карлсруэ (KIT). Архивировано (PDF) из оригинала 19 мая 2022 г. Проверено 14 ноября 2022 г. (11 страниц)
- ^ Перлис, Эй Джей (1981). «Разговор о компьютерах в пятидесятые годы». Национальная конференция ACM. Нэшвилл, Теннесси . Лос-Аламито, Калифорния: (Стенограмма ЯН Ли (ред.), Computer Pioneers, IEEE Computer Society Press (опубликовано в 1995 г.), стр. 545–556).
- ^ Перлис, Эй Джей ; Самельсон, К. (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 в группе по сохранению программного обеспечения