АЛГОЛ 58 - ALGOL 58
Парадигма | процедурный, императив, структурированный |
---|---|
Семья | АЛГОЛ |
Разработано | Фридрих Л. Бауэр, Герман Боттенбрух, Хайнц Рутисхаузер, Клаус Самельсон, Джон Бэкус, Чарльз Кац, Алан Перлис, Джозеф Генри Вегштейн |
Впервые появился | 1958 |
Печатная дисциплина | Статический, сильный |
Объем | Лексический |
Под влиянием | |
FORTRAN, ЭТО, Plankalkül,[1] Суперплан, Sequentielle Formelübersetzung | |
Под влиянием | |
Большинство последующих императивных языков (Алголоподобный ) |
АЛГОЛ 58, первоначально названный IAL, является одним из семьи АЛГОЛ компьютер языки программирования. Это был ранний компромиссный дизайн, вскоре замененный АЛГОЛ 60. В соответствии с Джон Бэкус[2]
"Цюрихская конференция ACM-GAMM имела два основных мотива при предложении IAL: (а) предоставить средства передачи числовых методов и других процедур между людьми, и (б) предоставить средства реализации заявленного процесса на различных машины ... "
Алгол 58 ввел фундаментальное понятие составное заявление, но это было ограничено поток управления только, и это не было привязано к область идентификатора так, как Алгол 60-х блоки мы.
Имя
Бауэр приписывает имя Герман Боттенбрух, кто придумал термин алгоритмический язык (algorithmische Sprache) в 1957 году, «по крайней мере, в Германии».[3]
История
Были предложения универсального языка от Ассоциация вычислительной техники (ACM), а также немецким Gesellschaft für Angewandte Mathematik und Mechanik («Общество прикладной математики и механики») (ГАММ). Было решено организовать совместное собрание, чтобы объединить их. Встреча проходила с 27 мая по 2 июня 1958 г. в г. ETH Цюрих и присутствовали следующие люди:
- Фридрих Л. Бауэр, Герман Боттенбрух, Хайнц Рутисхаузер, и Клаус Самельсон (из ГАММ)
- Джон Бэкус, Чарльз Кац, Алан Перлис, и Джозеф Генри Вегштейн (из ACM).
Язык изначально предлагалось назвать IAL (Международный алгебраический язык), но согласно Перлису,[4]это было отвергнуто как «невыразимая и напыщенная аббревиатура». Вместо этого был предложен АЛГОЛ, хотя официально он был принят только год спустя. Публикация после собрания по-прежнему использовала название IAL.[5]
К концу 1958 года ZMMD-group построила рабочий компилятор Алгола 58 для Z22 компьютер. ZMMD было аббревиатурой Цюриха (где работал Рутисхаузер), Мюнхена (рабочее место Бауэра и Самельсона), Майнца (местонахождение компьютера Z22), Дармштадта (рабочее место Боттенбруха).
Алгол 58 претерпел некоторые усилия по реализации на IBM, но усилия конкурировали с FORTRAN, и вскоре заброшены. Это также было реализовано на Дартмутский колледж на LGP-30, но эта реализация вскоре превратилась в АЛГОЛ 60. Реализация для Берроуз 220 звонков БАЛГОЛ также развивалась по своим собственным линиям, но сохранила большую часть оригинального характера Алгола 58.[6]
Основной вклад АЛГОЛА 58 был в более поздние языки; он был использован в качестве основы для Веселый, СУМАСШЕДШИЙ, NELIAC и АЛГО. Он также использовался в 1959 году для публикации алгоритмы в CACM, положив начало тенденции использования нотации Алгола в публикациях, которая продолжалась много лет.
Хронология реализации вариантов АЛГОЛА 58
Имя | Год | Автор | Состояние | Описание | Целевой ЦП |
---|---|---|---|---|---|
ZMMD-реализация | 1958 | Фридрих Л. Бауэр, Хайнц Рутисхаузер, Клаус Самельсон, Герман Боттенбрух | Германия | Z22 | |
NELIAC | 1958 | Лаборатория морской электроники | Соединенные Штаты Америки | AN / USQ-17 | |
Веселый | 1960 | Жюль Шварц | Соединенные Штаты Америки | Был DOD HOL до Ада (язык программирования) | Разное (см. Статью) |
БАЛГОЛ | 1960 | Джоэл Мернер и др. | Соединенные Штаты Америки | Корпорация Берроуз B220 | |
СУМАСШЕДШИЙ | 1960 | университет Мичигана | Соединенные Штаты Америки | IBM 7090 / 7094 мэйнфрейм, затем в середине 1960-х годов перенесен на Univac 1108 | |
Дартмутский АЛГОЛ 30 | 1962 | Томас Юджин Курц и другие. - превратился в АЛГОЛ 60 | Соединенные Штаты Америки | LGP-30 | |
СУБАЛГОЛЬ | 1962 | Боб Брейден, Лоуренс М. Брид и Роджер Мур, Стэндфордский Университет | Соединенные Штаты Америки | Расширение BALGOL | IBM 7090 |
АЛГО | ~ | Bendix Corporation | Соединенные Штаты Америки | Бендикс G-15 |
Влияние АЛГОЛА 58 на АЛГОЛ 60
- IAL представил трехуровневую концепцию языка ссылок, публикаций и аппаратных средств, а также концепцию «разделителей слов», имеющих отдельное представление от свободно выбранных идентификаторов (следовательно, без зарезервированных слов). Алгол 60 сохранил эту трехуровневую концепцию.[7]
- Различие между присвоением (
:=
представляет собой стрелку, направленную влево) и отношение равенства=
был введен в IAL и сохранен в АЛГОЛе 60. - И IAL, и ALGOL 60 позволяют использовать массивы с произвольными нижними и верхними границами нижнего индекса и позволяют определять границы нижнего индекса с помощью целочисленных выражений.
- И IAL, и АЛГОЛ 60 допускают вложение объявлений процедур и соответствующих областей идентификаторов.
- В отчете IAL подстановка параметров описывалась примерно так же, как и в отчете ALGOL 60, оставляя открытой возможность позвонить по имени. Неясно, было ли это реализовано в то время.
- IAL допускает числовые метки операторов, которые сохраняет АЛГОЛ 60.
- На возможность включения кода, не относящегося к Алголу, в программу уже намекали в контексте параметров процедур.
- И IAL, и ALGOL 60 имеют обозначение переключателя, но не связанные с оператор переключения на C и других языках.
- Встроенные функции формы ж(Икс) := Икс / 2; были предложены в IAL, но упавший в АЛГОЛ 60.
- Объявления процедур IAL предоставляют отдельные списки объявлений для входных и выходных параметров, процедура может возвращать несколько значений; этот механизм был заменены в АЛГОЛ 60 с ценить декларация.
- Объявления переменных в IAL могут быть размещены куда угодно в программе и не обязательно в начале процедуры. Напротив, объявления в блоке ALGOL 60 должны выполняться перед все операторы исполнения.
- В за-запись имеет вид
для i: = базовый предел (приращение)
, прямо напоминающий цикл языка программирования Рутисхаузера Суперплан, заменяя=
с:=
и заменив его ключевое слово на немецкомМех
с прямым английским переводомза
; Алгол 60 заменил круглые скобки разделителями слов.шаг
идо того как
, так что предыдущий оператор вместо этого будетя:=основание шаг приращение до того как предел
. - IAL если-в заявлении нет тогда-пункт или еще-пункт; это скорее охранники последующее заявление. IAL предоставляет если либо-Заявление, позволяющее проводить тестирование в нескольких условиях. Оба были заменены на ALGOL если-тогда построить, с введением "болтающийсяеще "двусмысленность.
- IAL обеспечивает макроподстановку делать-утверждение; это было исключено в АЛГОЛ 60.
- IAL позволяет пропускать один или несколько индексов массива при передаче массивов процедурам и предоставлять любые или все аргументы процедуры, передаваемой другой процедуре.
- Инфиксные логические операторы IAL имеют одинаковый уровень приоритета. Показатели показаны парными стрелками вверх и вниз, что устранило любую путаницу относительно правильной интерпретации вложенных показателей; Алгол 60 заменил парные стрелки одной стрелкой вверх, функция которой эквивалентна ФОРТРАНУ. **.
- В отчете IAL не указывается явно, какие стандартные функции должны были быть предоставлены, а делается расплывчатая ссылка на «стандартные функции анализа». Отчет ALGOL 60 имеет более подробный список стандартных функций.
Рекомендации
- ^ Рохас, Рауль; Хашаген, Ульф (2002). Первые компьютеры: история и архитектура. MIT Press. п. 292. ISBN 978-0262681377. Получено 25 октября, 2013.
- ^ Backus, J.W. (1959). "Синтаксис и семантика предлагаемого международного алгебраического языка Цюрихской конференции ACM-GAMM". Материалы Международной конференции по обработке информации. ЮНЕСКО. С. 125–132.
- ^ Аспрей, Уильям (17 февраля 1987 г.), Интервью с Фридрихом Л. Бауэром (PDF), Институт Чарльза Бэббиджа, заархивировано из оригинал (PDF) 22 апреля 2012 г.
- ^ Перлис, А.Дж. (1981). «Беседа о вычислениях в пятидесятые годы». Национальная конференция ACM. Нэшвилл ,. TN. Лос-Аламито, Калифорния, 1995: (стенограмма в J. A. N. Lee (ed.), Computer Pioneers, IEEE Computer Society Press. Pp. 545–556).CS1 maint: location (связь)
- ^ Перлис, А.Дж.; Самельсон, К. (1958). «Предварительный отчет: международный алгебраический язык». Коммуникации ACM. 1 (12): 8–22. Дои:10.1145/377924.594925. S2CID 28755282.
- ^ "Реализации и диалекты Алгола 58", Группа сохранения программного обеспечения, Музей истории компьютеров. Дональд Кнут цитируется на BALGOL: «Я учусь на втором году в Калифорнийском технологическом институте, и я был консультантом Берроуза. Закончив работу над компилятором для Берроуза, я присоединился к отделу планирования продукции. Отдел планирования продукции в основном состоял из людей, написавших лучшее программное обеспечение, когда-либо созданное в мире до того времени, которым был компилятор Алгола Берроуза для компьютеров 220. Это был большой шаг вперед для программного обеспечения. Это было первое программное обеспечение, которое использовало обработку списков и структуры данных высокого уровня в интеллектуальном Они взяли идеи Ньюэлла и Саймона и применили их к компиляторам. Он обошел все остальные вещи, которые мы делали ». [Дон Кнут, Устная история ЧМ, 2007, стр. 9]
- ^ Наур, П (редактор) (1962). Пересмотренный отчет по алгоритмическому языку ALGOL 60 (PDF). Международная федерация обработки информации.CS1 maint: дополнительный текст: список авторов (связь)
внешняя ссылка
- Алгол 58 в Группе сохранения программного обеспечения (см. Музей истории компьютеров )
- Отчет на языке Algol 58 от CACM в группе сохранения программного обеспечения