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

Алгол 58 , первоначально названный МВЛ , является одним из семейства Алгол компьютера языков программирования . Это был ранний компромиссный проект, который вскоре был заменен Алголом 60 . По словам Джона Бэкуса [2]

"Цюрихская конференция ACM-GAMM имела два основных мотива при предложении IAL: (а) предоставить средства передачи числовых методов и других процедур между людьми, и (б) предоставить средства реализации заявленного процесса на различных машины ... "

Алгол 58 ввел фундаментальное понятие составного оператора , но он был ограничен только потоком управления и не был привязан к области действия идентификатора , как блоки в Алголе 60 .

Имя [ редактировать ]

Бауэр приписывает это имя Герману Боттенбруху , который ввел термин « алгоритмический язык» (algorithmische Sprache) в 1957 году, «по крайней мере, в Германии». [3]

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

Были предложения по универсальному языку от Ассоциации вычислительной техники (ACM), а также от немецкого Gesellschaft für Angewandte Mathematik und Mechanik («Общество прикладной математики и механики») (GAMM). Было решено организовать совместное собрание, чтобы объединить их. Встреча проходила с 27 мая по 2 июня 1958 года в ETH Zurich и на ней присутствовали следующие люди:

Первоначально предполагалось, что этот язык будет называться IAL ( Международный алгебраический язык ), но, по словам Перлиса [4], он был отвергнут как «невыразимая» и напыщенная аббревиатура. Вместо этого был предложен АЛГОЛ, хотя официально он был принят только год спустя. В публикации после собрания все еще использовалось название IAL. [5]

К концу 1958 года ZMMD-group построила рабочий компилятор ALGOL 58 для компьютера Z22 . ZMMD было аббревиатурой от Цюриха (где работал Рутисхаузер), Мюнхена (рабочее место Бауэра и Самельсона), Майнца (местонахождение компьютера Z22), Дармштадта (рабочее место Боттенбруха).

В IBM были предприняты некоторые усилия по внедрению ALGOL 58 , но они конкурировали с FORTRAN , и вскоре от них отказались. Он также был реализован в Дартмутском колледже на LGP-30 , но вскоре эта реализация превратилась в АЛГОЛ 60 . Реализация Burroughs 220 под названием BALGOL также развивалась по своим собственным направлениям, но сохранила большую часть оригинального характера ALGOL 58. [6]

Основным вкладом АЛГОЛА 58 были более поздние языки; он был использован в качестве основы для JOVIAL , MAD , NELIAC и ALGO . Он также использовался в течение 1959 г. для публикации алгоритмов в CACM , положив начало тенденции к использованию нотации АЛГОЛ в публикации, которая продолжалась много лет.

Хронология реализации вариантов АЛГОЛА 58 [ править ]

Влияние АЛГОЛА 58 на АЛГОЛ 60 [ править ]

  • IAL представил трехуровневую концепцию языка ссылок, публикаций и аппаратных средств, а также концепцию «разделителей слов», имеющих отдельное представление от свободно выбранных идентификаторов (следовательно, без зарезервированных слов). Алгол 60 сохранил эту трехуровневую концепцию. [7]
  • Различие между присваиванием ( :=представляющим стрелку влево) и отношением равенства =было введено в IAL и сохранено в АЛГОЛе 60.
  • И IAL, и ALGOL 60 позволяют использовать массивы с произвольными нижними и верхними границами нижнего индекса и позволяют определять границы нижнего индекса с помощью целочисленных выражений.
  • И IAL, и АЛГОЛ 60 позволяют вложение объявлений процедур и соответствующих областей идентификатора.
  • В отчете IAL подстановка параметров описывалась примерно так же, как и в отчете ALGOL 60, оставляя открытой возможность вызова по имени . Неясно, было ли это реализовано в то время.
  • IAL допускает числовые метки операторов, которые поддерживает АЛГОЛ 60.
  • На возможность включения кода, не относящегося к Алголу, в программу уже намекали в контексте параметров процедур.
  • И IAL, и ALGOL 60 имеют указатель переключателя , который, однако, не связан с оператором switch в C и других языках.
  • Встроенные функции вида f ( x ): = x / 2; были предложены в IAL, но опущены в АЛГОЛ 60.
  • Объявления процедур IAL предоставляют отдельные списки объявлений для входных и выходных параметров, процедура может возвращать несколько значений; этот механизм был заменен в АЛГОЛЕ 60 объявлением значения .
  • Объявления переменных в IAL могут быть размещены в любом месте программы, но не обязательно в начале процедуры. Напротив, объявления в блоке ALGOL 60 должны появляться перед всеми операторами выполнения.
  • Для -statement имеет форму for i:=base(increment)limit, непосредственно напоминающую петлю языка программирования Rutishauser в Superplan , замена =с :=, и заменить его немецкое ключевое слово Fürс прямым переводом на английском языке for; В АЛГОЛе 60 круглые скобки заменены разделителями слов stepи until, так что вместо этого будет использоваться предыдущий оператор .i:=base step increment until limit
  • МВЛ , если -statement не имеет то -clause или еще -clause; это скорее охраняет последующее утверждение. IAL предоставляет формулировку if any, которая позволяет полностью протестировать несколько условий. Оба были заменены на Алгол - х , если - то построить, с введением « dangling- еще » двусмысленности.
  • IAL обеспечивает макро-подстановку с do -statement; это было исключено в АЛГОЛ 60.
  • IAL позволяет опускать один или несколько индексов массива при передаче массивов процедурам и предоставлять любые или все аргументы процедуры, передаваемой другой процедуре.
  • Инфиксные логические операторы IAL имеют одинаковый уровень приоритета. Показатели показаны парными стрелками вверх и вниз, что устранило любую путаницу в правильной интерпретации вложенных показателей; Алгол 60 заменил парные стрелки одной стрелкой вверх, функция которой эквивалентна ** в ФОРТРАНЕ .
  • В отчете IAL явно не указывается, какие стандартные функции должны были быть предоставлены, а делается расплывчатая ссылка на «стандартные функции анализа». Отчет ALGOL 60 содержит более подробный список стандартных функций.

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

  1. ^ Рохас, Рауль; Хашаген, Ульф (2002). Первые компьютеры: история и архитектура . MIT Press. п. 292. ISBN. 978-0262681377. Проверено 25 октября 2013 года .
  2. Перейти ↑ Backus, JW (1959). "Синтаксис и семантика предлагаемого международного алгебраического языка Цюрихской конференции ACM-GAMM". Материалы Международной конференции по обработке информации . ЮНЕСКО. С. 125–132.
  3. ^ Aspray, Уильям (17 февраля 1987), интервью с Ф. Л. Бауэр (PDF) , Чарльз Бэббидж институт , архивируются с оригинала (PDF) 22 апреля 2012
  4. Перейти ↑ Perlis, AJ (1981). «Разговор о вычислениях в пятидесятые годы». Национальная конференция ACM. Нэшвилл ,. TN . Лос-Аламито, Калифорния, 1995: (стенограмма в JAN Lee (ed.), Computer Pioneers, IEEE Computer Society Press. Стр. 545–556).CS1 maint: location (link)
  5. ^ Перлис, AJ ; Самельсон, К. (1958). «Предварительный отчет: международный алгебраический язык». Коммуникации ACM . 1 (12): 8–22. DOI : 10.1145 / 377924.594925 . S2CID 28755282 . 
  6. ^ "Реализации и диалекты Алгола 58" , Группа сохранения программного обеспечения , Музей истории компьютеров . Дональд Кнутцитируется на BALGOL: «Я учусь на втором курсе в Калифорнийском технологическом институте, и я был консультантом Берроуза. Закончив работу над компилятором для Берроуза, я присоединился к отделу планирования продукции. Отдел планирования продукции в основном состоял из людей, написавших лучшее программное обеспечение, когда-либо созданное в мире до того времени, которым был компилятор Алгола Берроуза для компьютеров 220. Это был большой шаг вперед для программного обеспечения. Это было первое программное обеспечение, которое использовало обработку списков и структуры данных высокого уровня в интеллектуальном Они взяли идеи Ньюэлла и Саймона и применили их к компиляторам. Это обошло все остальное, что мы делали ». [Дон Кнут, Устная история ЧМ, 2007, стр. 9]
  7. ^ Наур, П (редактор) (1962). Доработанный отчет по алгоритмическому языку ALGOL 60 (PDF) . Международная федерация обработки информации. CS1 maint: extra text: authors list (link)

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

  • Алгол 58 в группе сохранения программного обеспечения (см. Музей истории компьютеров )
  • Отчет на языке Algol 58 от CACM в группе сохранения программного обеспечения