Парадигма | Процедурные , императивные , структурированные |
---|---|
Семья | АЛГОЛ |
Разработано | Бауэр , Боттенбрух , Рутисхаузер , Самельсон , Бэкус , Кац , Перлис , Вегштейн , Наур , Вокуа , ван Вейнгаарден , Вудгер , Грин , Маккарти |
Впервые появился | 1958 |
Печатная дисциплина | Статичный , сильный |
Сфера | Лексический |
Под влиянием | |
Большинство последующих императивных языков (так называемые языки типа АЛГОЛ ), например PL / I , Simula , BCPL , B , Pascal , C |
Алгол ( / æ л ɡ ɒ л , - ɡ ɔ л / , короткий для « алгоритмического языка ») [1] представляет собой семейство императивных компьютера языков программирования , первоначально разработанный в 1958 году Алголом сильно повлияли на многих других языках , и был стандартным методом для описания алгоритма используется Ассоциацией вычислительной техники (ACM) в учебниках и академических источниках более тридцати лет. [2]
В том смысле, что синтаксис большинства современных языков «похож на Алгол» [3], он, возможно, был самым влиятельным из четырех языков программирования высокого уровня, среди которых он был примерно современным: FORTRAN , Lisp и COBOL . [4] Он был разработан , чтобы избежать некоторых из выявленных проблем с FORTRAN и в конечном итоге привело многих других языков программирования, в том числе PL / I , Симула , BCPL , B , Pascal и C .
В ALGOL введены кодовые блоки и пары begin
... end
для их разграничения. Это был также первый язык, реализующий определения вложенных функций с лексической областью видимости . Более того, это был первый язык программирования, в котором особое внимание было уделено формальному определению языка, и в отчете Algol 60 была введена форма Бэкуса – Наура , основная форма записи формальной грамматики для проектирования языков.
Существовали три основные спецификации, названные в честь годов, в которые они были впервые опубликованы:
- АЛГОЛ 58 - первоначально предлагалось называть IAL , для международного алгебраического языка .
- АЛГОЛ 60 - впервые реализован как X1 ALGOL 60 в середине 1960 года. Пересмотрено в 1963 году. [5] [6]
- АЛГОЛ 68 - введены новые элементы, включая гибкие массивы, срезы, параллелизм, идентификацию операторов. Пересмотрено в 1973 г. [7]
АЛГОЛ 68 существенно отличается от АЛГОЛА 60 и не был хорошо принят, так что в целом «Алгол» означает АЛГОЛ 60 и его диалекты.
Важные реализации [ править ]
Международный алгебраический язык (IAL), переименованный в АЛГОЛ 58 , имел большое влияние и обычно считался родоначальником большинства современных языков программирования (так называемых языков, подобных алголу). Кроме того, объектный код ALGOL был простой, компактной и основанной на стеке архитектурой набора команд, обычно используемой при обучении построению компиляторов и других языков высокого порядка; из которых Алгол обычно считается первым.
История [ править ]
Алгол был разработан совместно комитетом европейских и американских компьютерных ученых на встрече в 1958 году в Швейцарском федеральном технологическом институте в Цюрихе ( ETH Zurich ; см. ALGOL 58 ). Он определяет три разных синтаксиса: синтаксис ссылки, синтаксис публикации и синтаксис реализации. Различный синтаксис позволял использовать разные имена ключевых слов и соглашения для десятичных знаков (запятые и точки) для разных языков.
Алгол использовался в основном учеными-компьютерщиками в Соединенных Штатах и Европе. Его использованию в коммерческих приложениях мешало отсутствие стандартных средств ввода / вывода в его описании и отсутствие интереса к языку со стороны крупных поставщиков компьютеров, помимо Burroughs Corporation . Однако АЛГОЛ 60 действительно стал стандартом для публикации алгоритмов и оказал глубокое влияние на развитие языков в будущем.
Джон Бэкус разработал метод нормальной формы Бэкуса для описания языков программирования специально для АЛГОЛА 58. Он был переработан и расширен Питером Науром для Алгола 60 и по предложению Дональда Кнута переименован в форму Бэкуса-Наура . [8]
Питер Наур: «Как редактор бюллетеня ALGOL я был вовлечен в международные дискуссии по этому языку и в ноябре 1959 года был выбран в группу разработчиков европейских языков. В этом качестве я был редактором подготовленного отчета ALGOL 60. в результате встречи Алгола 60 в Париже в январе 1960 года ». [9]
На встрече в Париже (с 1 по 16 января) присутствовали следующие люди:
- Фридрих Л. Бауэр , Петер Наур , Хайнц Рутисхаузер , Клаус Самельсон , Бернар Вокуа , Адриан ван Вейнгаарден и Майкл Вудгер (из Европы)
- Джон В. Бэкус , Жюльен Грин , Чарльз Кац , Джон Маккарти , Алан Дж. Перлис и Джозеф Генри Вегштейн (из США).
Алан Перлис дал яркое описание встречи: «Встречи были изнурительными, бесконечными и волнующими. Одно раздражало, когда его хорошие идеи отбрасывались вместе с плохими другими. Тем не менее, усердие сохранялось на протяжении всего периода. 13 было превосходно ".
АЛГОЛ 60 вдохновил многие последовавшие за ним языки. Тони Хоар заметил: «Этот язык настолько опередил свое время, что стал не только улучшением своих предшественников, но и почти всех его преемников». [10] Язык программирования Scheme , вариант Lisp, который принял блочную структуру и лексическую область видимости ALGOL, также принял формулировку «Revised Report on the Algorithmic Language Scheme» для своих документов стандартов в знак уважения к ALGOL. [11]
Алгол и исследование языков программирования [ править ]
Как отметил Питер Ландин , ALGOL был первым языком, который органично сочетал императивные эффекты с лямбда-исчислением ( вызов по имени ) . Возможно, наиболее элегантная формулировка языка принадлежит Джону К. Рейнольдсу , и она лучше всего демонстрирует синтаксическую и семантическую чистоту. Идеализированный Алгол Рейнольдса также представил убедительный методологический аргумент относительно пригодности локальных эффектов в контексте языков вызова по имени, в отличие от глобальных эффектов, используемых в языках вызова по значению, таких как ML . Концептуальная целостность языка сделала его одним из основных объектов семантических исследований, наряду с программированием вычислимых функций (PCF) и ML.[12]
График внедрения IAL [ править ]
На сегодняшний день существует не менее 70 дополнений, расширений, производных и подъязыков Алгола 60. [13]
Имя | Год | Автор | Страна | Описание | Целевой ЦП |
---|---|---|---|---|---|
ZMMD-реализация | 1958 г. | Фридрих Л. Бауэр , Хайнц Рутисхаузер, Клаус Самельсон, Герман Боттенбрух | Германия | реализация АЛГОЛА 58 | Z22 (позже Zuse «S Z23 был доставлен с Алгол 60 компилятором) [14] |
X1 АЛГОЛ 60 | Август 1960 [15] | Эдсгер В. Дейкстра и Яап А. Зонневельд | Нидерланды | Первая реализация АЛГОЛА 60 [16] | Electrologica X1 |
Эллиотт АЛГОЛ | 1960-е | АВТОМОБИЛЬ Хоар | Соединенное Королевство | Тема лекции Тьюринга 1980 г. [17] | Elliott 803 , Elliott 503, Elliott серии 4100 |
Веселый | 1960 г. | Жюль Шварц | США | ДОД HOL до Ada | Разное (см. Статью) |
Алгол Берроуза (несколько вариантов) | 1961 г. | Burroughs Corporation (при участии Хора, Дейкстры и др.) | США | Основа компьютеров Burroughs (а теперь и Unisys MCP ) | Большие системы Берроуза, а также их средние частоты. |
Кейс АЛГОЛ | 1961 г. | Кейс технологический институт [18] | США | Изначально Simula была разработана как расширение для моделирования Case ALGOL. | UNIVAC 1107 |
ГОГОЛЬ | 1961 г. | Уильям М. МакКиман | США | Для системы разделения времени ODIN [19] | PDP-1 |
RegneCentralen АЛГОЛ | 1961 г. | Питер Наур , Йорн Йенсен | Дания | Реализация полного Алгола 60 | DASK в Regnecentralen |
Дартмутский АЛГОЛ 30 | 1962 г. | Томас Юджин Курц и др. | США | LGP-30 | |
USS 90 Алгол | 1962 г. | Л. Петроне | Италия | ||
Переводчик Алгола | 1962 г. | Г. ван дер Мей и В. Л. ван дер Поэль | Нидерланды | Staatsbedrijf der Posterijen, Telegrafie en Telefonie | ЗЕБРА |
Kidsgrove Algol | 1963 г. | Ф. Г. Дункан | Соединенное Королевство | Английская электрическая компания KDF9 | |
ВАЛГОЛ | 1963 г. | Валь Шорре | США | Тест компилятора компилятора META II | |
Точильный камень | 1964 г. | Брайан Рэнделл и Эл Джей Рассел | Соединенное Королевство | Подразделение Атомной Энергии Английской Электрической Компании. Предшественник Ferranti Pegasus , национальных физических лабораторий ACE и английских реализаций Electric DEUCE . | Английская электрическая компания KDF9 |
НУ АЛГОЛ | 1965 г. | Норвегия | UNIVAC | ||
АЛГЕК | 1965 г. | СССР | АЛГЭК на базе АЛГОЛ-60 и COBOL для хозяйственных задач. | Минск-22 | |
АЛГОЛ W | 1966 г. | Никлаус Вирт | США | Предлагаемый преемник АЛГОЛА 60 | IBM System / 360 |
МАЛГОЛ | 1966 г. | опубл. А. Виил, М. Котли и М. Рахенди, | Эстонская ССР | Минск-22 | |
АЛГАМЫ | 1967 | Группа GAMS (ГАМС, группа автоматизированного программирования для машин среднего класса), сотрудничество Академии наук Comecon | Comecon | Минск-22 , позже ЕС ЭВМ , БЭСМ | |
АЛГОЛ / ЗАМ | 1967 | Польша | Польский компьютер ZAM | ||
Симула 67 | 1967 | Оле-Йохан Даль и Кристен Найгаард | Норвегия | Алгол 60 с классами | UNIVAC 1107 |
Китайский Алгол | 1972 г. | Китай | Китайские иероглифы, выраженные через систему символов | ||
DG / L | 1972 г. | США | Семейство компьютеров DG Eclipse | ||
S-алгол | 1979 г. | Рон Моррисон | Соединенное Королевство | Добавление ортогональных типов данных с предполагаемым использованием в качестве языка обучения | PDP-11 с последующей реализацией на Java VM |
Диалекты Берроуза включали специальные диалекты начальной загрузки, такие как ESPOL и NEWP . Последний до сих пор используется в системном программном обеспечении Unisys MCP.
Свойства [ править ]
Алгол 60, как он официально определен, не имел средств ввода-вывода ; реализации определяли свои собственные способы, которые редко были совместимы друг с другом. В противоположность этому , алгол 68 предложил обширную библиотеку transput (вход / выход) объектов.
Алгол 60 допускает две стратегии оценки для передачи параметров : общий вызов по значению и вызов по имени . Вызов по имени имеет определенные эффекты в отличие от вызова по ссылке . Например, без указания параметров в качестве значения или ссылки невозможно разработать процедуру, которая будет менять местами значения двух параметров, если фактические параметры, которые передаются, являются целочисленной переменной и массивом, который индексируется той же целочисленной переменной. . [20]Подумайте о передаче указателя на swap (i, A [i]) в функцию. Теперь, когда на своп ссылаются, он переоценивается. Скажем, i: = 1 и A [i]: = 2, поэтому каждый раз, когда используется своп, он будет возвращать другую комбинацию значений ([1,2], [2,1], [1,2] и т. Д. ). Аналогичная ситуация происходит со случайной функцией, переданной как фактический аргумент.
Функция вызова по имени известна многим разработчикам компиляторов благодаря интересным « переходникам », которые используются для ее реализации. Дональд Кнут разработал « тест человека или мальчика » для разделения компиляторов, которые правильно реализовали « рекурсию и нелокальные ссылки». Этот тест содержит пример вызова по имени.
Алгол 68 был определен с использованием двухуровневого грамматического формализма, изобретенного Адрианом ван Вейнгаарденом и носящего его имя. Грамматики Ван Вейнгаардена используют контекстно-свободную грамматику для создания бесконечного набора продуктов, которые распознают конкретную программу на АЛГОЛе 68; в частности, они могут выражать требования, которые во многих других стандартах языков программирования обозначены как «семантика» и должны быть выражены в нечеткой тексте естественного языка, а затем реализованы в компиляторах как специальный код, прикрепленный к формальному языку. парсер.
Примеры и проблемы переносимости [ править ]
Сравнение примеров кода [ править ]
АЛГОЛ 60 [ править ]
(Способ написания полужирного текста зависит от реализации, например, «INTEGER» - включая кавычки - для целых чисел . Это называется заштрихованием .)
процедура Absmax (a) Размер: (n, m) Результат: (y) Индексы: (i, k); значение n, м; массив a; целое число n, m, i, k; реальный y;комментарий Абсолютно наибольший элемент матрицы a размером n на m передается в y, а индексы этого элемента в i и k;начало целого числа p, q; у: = 0; i: = k: = 1; для p: = 1 шаг 1 до n выполнить для q: = 1 шаг 1 до m выполнить если abs (a [p, q])> y then begin y: = abs (a [p, q]); i: = p; k: = q конец конец Absmax
Вот пример того, как создать таблицу, используя АЛГОЛ Elliott 803. [21]
ТЕСТ АЛГОЛА ПЛАВАЮЩЕЙ ТОЧКИ ' НАЧАТЬ РЕАЛЬНОЕ A, B, C, D ' ПРОЧИТАЙТЕ D ' ДЛЯ A: = 0,0 ШАГ D ДО 6,3 ДЕЛАТЬ НАЧИНАТЬ ПУАНСОН ДЛЯ ПЕЧАТИ (3), £ $$ L ?? ' B: = SIN (A) ' C: = COS (A) ' ПУАНСОН ДЛЯ ПЕЧАТИ (3), SAMELINE, ВЫРОВНЕННЫЙ (1,6), A, B, C ' КОНЕЦ' КОНЕЦ'
PUNCH (3) отправляет вывод на телетайп, а не на перфорацию ленты.
SAMELINE подавляет возврат каретки + перевод строки, обычно печатаемый между аргументами.
ALIGNED (1,6) управляет форматом вывода с 1 цифрой до и 6 после десятичной точки.
АЛГОЛ 68 [ править ]
Следующие примеры кода представляют собой версии Алгола 68 вышеупомянутых примеров кода Алгола 60.
Реализации Алгола 68 использовали подходы Алгола 60 к сглаживанию . В случае АЛГОЛА 68 токены, выделенные жирным шрифтом, являются зарезервированными словами, типами ( режимами ) или операторами.
proc abs max = ([,] real a, ref real y, ref int i, k) real : comment Абсолютно наибольший элемент матрицы a размером ⌈a на 2⌈aпередается в y, а индексы этого элемента в i и k; комментарий start real y: = 0; i: = ⌊a; k: = 2⌊a; для p от ⌊a до ⌈a do для q от 2⌊a до 2⌈a do, если abs a [p, q]> y, то y: = abs a [p, q]; i: = p; k: = q fi od od ; yконец # абс макс #
Примечание: нижняя (⌊) и верхняя (⌈) границы массива, а также нарезка массива доступны программисту напрямую.
тест algol68 с плавающей запятой:( реальные a, b, c, d; # Printf - отправляет вывод на файл выделиться . # # printf ($ p $); - выбирает новую страницу # printf (($ pg $, "Введите d:")); читать (d); для шага от 0 пока a: = step * d; a <= 2 * pi do printf ($ l $); # $ l $ - выбирает новую строку . # б: = грех (а); c: = cos (a); printf (($ zd.6d $, a, b, c)) # форматирует вывод с 1 цифрой до и 6 после десятичной точки. # od)
Хронология: Привет, мир [ править ]
Вариации и отсутствие переносимости программ от одной реализации к другой легко демонстрируется классической программой hello world .
АЛГОЛ 58 (IAL) [ править ]
В Алголе 58 не было средств ввода-вывода.
Семейство АЛГОЛ 60 [ править ]
Поскольку в Алголе 60 не было средств ввода-вывода, в Алголе нет переносимой программы hello world . Следующие три примера взяты из Burroughs Extended Algol. Первые два прямого вывода на интерактивный терминал, на котором они работают. Первый использует символьный массив, аналогичный C. Язык позволяет использовать идентификатор массива в качестве указателя на массив и, следовательно, в операторе REPLACE.
НАЧИНАТЬ ФАЙЛ F (ВИД = УДАЛЕННЫЙ); EBCDIC ARRAY E [0:11]; ЗАМЕНИТЕ E НА «ПРИВЕТ, МИР!»; ЗАПИСАТЬ (F, *, E);КОНЕЦ.
Более простая программа, использующая встроенный формат:
НАЧИНАТЬ ФАЙЛ F (ВИД = УДАЛЕННЫЙ); НАПИСАТЬ (F, <"ПРИВЕТ, МИР!">);КОНЕЦ.
Еще более простая программа, использующая оператор Display. Обратите внимание, что его вывод будет на системной консоли ('SPO'):
НАЧАТЬ ОТОБРАЖЕНИЕ («ПРИВЕТ, МИР!») КОНЕЦ.
Альтернативный пример использования ввода-вывода Elliott Algol выглядит следующим образом. Эллиотт Алгол использовал разные символы для "кавычки-открытой строки" и "кавычки-закрытой строки":
программа HiFolks; начать печать «Привет, мир»; конец ;
Вот версия для Elliott 803 Algol (A104). Стандартный Elliott 803 использовал бумажную ленту с 5 отверстиями и, следовательно, имел только верхний регистр. В коде отсутствовали кавычки, поэтому знак фунта стерлингов (UK Pound Sign) использовался для открытой кавычки и? (Знак вопроса) для закрытия цитаты. Специальные последовательности были заключены в двойные кавычки (например, на телетайпе появилась новая строка с помощью £$ L ??).
ПРИВЕТ НАРОД' НАЧИНАТЬ ПЕЧАТЬ £ ПРИВЕТ, МИР £ L ?? ' КОНЕЦ'
ИКТ 1900 серия Алгол ввод / вывод версия допускается ввод из бумажной ленты или перфокарты. Бумажная лента в «полном» режиме допускает строчные буквы. Вывод был на строчный принтер. Открывающая и закрывающая кавычки были представлены с помощью '(' и ')' и пробелов через%. [22]
'НАЧИНАТЬ' НАПИСАТЬ ТЕКСТ ('(' ПРИВЕТ, МИР% ')'); 'КОНЕЦ'
АЛГОЛ 68 [ править ]
Код АЛГОЛА 68 был опубликован с зарезервированными словами, обычно в нижнем регистре, но выделенными жирным шрифтом или подчеркнутыми.
начинать printf (($ gl $, "Привет, мир!"))конец
На языке «Algol 68 Report» средства ввода / вывода все вместе назывались «Transput».
Временная шкала специальных символов АЛГОЛА [ править ]
Эта статья содержит символы Unicode 6.0 « Разные технические ». Без надлежащей поддержки рендеринга вы можете увидеть вопросительные знаки, квадраты или другие символы вместо чего-то вроде «₁₀» ( десятичный знак экспоненты U + 23E8 TTF ). |
Алголы были задуманы в то время, когда наборы символов были разнообразными и быстро развивались; Кроме того, АЛГОЛЫ были определены так, что требовались только прописные буквы.
1960: IFIP - Язык и отчет Algol 60 включают несколько математических символов, которые доступны на современных компьютерах и операционных системах, но, к сожалению, не поддерживаются большинством вычислительных систем в то время. Например: ×, ÷, ≤, ≥, ≠, ¬, ∨, ∧, ⊂, ≡, ␣ и ⏨.
1961 Сентябрь: ASCII - Набор символов ASCII, находившийся тогда на ранней стадии разработки, имел символ \ (обратная косая черта), добавленный к нему для поддержки логических операторов ALGOL / \ и \ / . [23]
1962: ALCOR - Этот набор символов включал необычный символ рунического креста «᛭» [24] для умножения и десятичный знак экспоненты «⏨» [25] для записи с плавающей запятой. [26] [27] [28]
1964: ГОСТ - Советский стандарт 1964 года ГОСТ 10859 разрешал кодирование 4-битных, 5-битных, 6-битных и 7-битных символов в АЛГОЛ. [29]
1968: «Отчет Algol 68» - использовались существующие символы ALGOL, а затем были приняты символы →, ↓, ↑, □, ⌊, ⌈, ⎩, ⎧, ○, ⊥ и ¢, которые можно найти на клавиатуре IBM 2741 с вставлены печатающие головки типа " мяч" (или мяч для гольфа ) (например, мяч для гольфа APL ). Они стали доступны в середине 1960-х, когда разрабатывалась АЛГОЛ 68. Отчет был переведен на русский, немецкий, французский и болгарский языки и позволял программировать на языках с более крупными наборами символов, например, кириллица советского БЭСМ- 4. Все символы ALGOL также являются частью стандарта Unicode, и большинство из них доступны в нескольких популярных шрифтах..
2009 Октябрь: Unicode - ⏨
(Десятичный экспоненциальный символ) для записи с плавающей запятой был добавлен в Unicode 5.2 для обратной совместимости с историческим программным обеспечением ALGOL программы Buran . [30]
См. Также [ править ]
- Адресный язык программирования
- Атлас Автокод
- Коралловый 66
- Эдинбург IMP
- Устройство Дженсена
- Я ПЛАВАЮ
- Веселый
- Трон (видеоигра)
- НЕЛИАК
- Симула
- S-алгол
- Схема (язык программирования)
Ссылки [ править ]
- ^ Название этой языковой семьи иногда дается в смешанном регистре ( Algol 60, заархивировано 25 июня 2007 г. на Wayback Machine ), а иногда и в верхнем регистре ( ALGOL68, заархивировано 13 сентября 2014 г. на Wayback Machine ). Для простоты в этой статье используется АЛГОЛ .
- ^ Собрание алгоритмов ACM. Архивировано 17 октября 2011 г. в Wikiwix. Сжатые архивы алгоритмов. ACM .
- ^ О'Хирн, PW; Теннент, Р. Д. (сентябрь 1996 г.). «Алголообразные языки. Введение» . Архивировано из оригинального 14 ноября 2011 года.
- ^ «Язык программирования ALGOL». Архивировано 6 октября 2016 г. в Wayback Machine , Мичиганский университет в Дирборне.
- ^ Backus, JW; Бауэр, Флорида; Green, J .; Katz, C .; McCarthy, J .; Перлис, AJ; Rutishauser, H .; Самельсон, К .; Vauquois, B .; Wegstein, JH; van Wijngaarden, A .; Вудгер, М. (май 1960 г.). Наур, Питер (ред.). Отчет по алгоритмическому языку АЛГОЛ 60 . Копенгаген. DOI : 10.1145 / 367236.367262 . ISSN 0001-0782 .
- ^ "Пересмотренный отчет по алгоритмическому языку Algol 60" . 1963. Архивировано 25 июня 2007 года . Проверено 8 июня 2007 года .
- ^ "Пересмотренный отчет по алгоритмическому языку ALGOL 68" (PDF) . 1973. Архивировано 13 сентября 2014 года (PDF) . Проверено 13 сентября 2014 года .
- ^ Кнут, Дональд Э. (1964). «Нормальная форма Бэкуса против формы Бэкуса Наура». Коммуникации ACM . 7 (12): 735–736. DOI : 10.1145 / 355588.365140 .
- ^ Цитата на премию ACM: Питер Наур. Архивировано 2 апреля 2012 г. в Archive-It , 2005 г.
- ^ «Советы по дизайну языков программирования». Архивировано 15 сентября 2009 г. в Wayback Machine , CAR Hoare, декабрь 1973 г., стр. 27. (Это утверждение иногда ошибочно приписывают Эдсжеру В. Дейкстре , также участвовавшему в реализации первого компилятора ALGOL 60.)
- ^ Дыбвиг, РК; и другие. Рис, Джонатан; Клингер, Уильям; Абельсон, Хэл (ред.). «Пересмотренный (3) отчет по алгоритмической языковой схеме (посвященный памяти АЛГОЛА 60)» . Архивировано 14 января 2010 года . Проверено 20 октября 2009 года .
- ^ О'Хирн, Питер ; Теннент, Роберт Д. (1997). Алголообразные языки . Кембридж, Массачусетс, США: Birkhauser Boston. DOI : 10.1007 / 978-1-4612-4118-8 . ISBN 978-0-8176-3880-1.
- ^ "Энциклопедия компьютерных языков" . Архивировано из оригинального 27 сентября 2011 года . Проверено 20 января 2012 года .
- ^ История компьютерного музея Архивировано 20 августа 2010 года в Wayback Machine , Исторический Zuse-Computer Z23, восстановленный Конрадом Цузе Шуле в Хюнфельде, для Центра истории компьютерного музея в Маунтин-Вью (Калифорния), США.
- ^ Дневной свет, EG (2011). «Призыв Дейкстры к обобщению: появление рекурсивной процедуры, конец 1950-х - начало 1960-х годов» . Компьютерный журнал . 54 : 1756–1772. CiteSeerX 10.1.1.366.3916 . DOI : 10.1093 / comjnl / bxr002 . Архивировано 12 марта 2013 года.
- ^ Kruseman Арец, FEJ (30 июня 2003). «Компилятор Алгола 60 Дейкстра-Зонневельда для Electrologica X1». Программная инженерия (PDF) . История компьютерных наук. Kruislaan 413, 1098 SJ Amsterdam: Centrum Wiskunde & Informatica. Архивировано 4 марта 2016 года (PDF) из оригинала. CS1 maint: location (link)
- Перейти ↑ Hoare, Antony (1980). «Старая одежда императора» . Коммуникации ACM . 24 (2). DOI : 10.1145 / 358549.358561 . Архивировано 13 сентября 2017 года.
- ^ Коффман, Элиот. «Все, что мне действительно нужно знать, я узнал в CS1» (PDF) . Архивировано из оригинального (PDF) 12 октября 2012 года . Проверено 20 мая 2012 года .
- ^ "ГОГОЛЬ - PDP-1 Алгол 60 (компьютерный язык)" . Интернет-историческая энциклопедия языков программирования. Архивировано 2 февраля 2018 года . Проверено 1 февраля 2018 .
- ^ Ахо, Альфред В .; Сетхи, Рави ; Ульман, Джеффри Д. (1986). Составители: принципы, методы и инструменты (1-е изд.). Эддисон-Уэсли. ISBN 0-201-10194-7., Раздел 7.5 и ссылки в нем
- ^ "803 ALGOL" Архивировано 29 мая 2010 г. в Wayback Machine , руководство для Elliott 803 ALGOL
- ^ "Серия ICL 1900: Язык Алгола" . Техническая публикация ICL 3340. 1965.
- ↑ Как ASCII получил обратную косую черту. Архивировано 11 июля 2014 г. в Wayback Machine , Боб Бемер.
- ^ железо / рунический крест
- ^ Десятичный знак экспоненты
- Перейти ↑ Baumann, R. (октябрь 1961 г.). "Руководство по Алголу группы ALCOR, Часть 1" [Руководство по Алголу Группы ALCOR]. Elektronische Rechenanlagen (на немецком языке): 206–212.
- Перейти ↑ Baumann, R. (декабрь 1961 г.). "Руководство по Алголу группы ALCOR, Часть 2" [Руководство по Алголу Группы ALCOR]. Elektronische Rechenanlagen (на немецком языке). 6 : 259–265.
- Перейти ↑ Baumann, R. (апрель 1962 г.). "Руководство по Алголу группы ALCOR, Часть 3" [Руководство по Алголу Группы ALCOR]. Elektronische Rechenanlagen (на немецком языке). 2 .
- ^ «Стандарт ГОСТ 10859» . Архивировано из оригинального 16 -го июня 2007 года . Проверено 5 июня 2007 года .
- ^ Брухису Леонид (22 января 2008). «Пересмотренное предложение по кодированию символа десятичной экспоненты» (PDF) . www.unicode.org . ISO / IEC JTC 1 / SC 2 / WG 2. Архивировано (PDF) из оригинала 31 июля 2015 года . Проверено 24 января +2016 .
Это означает, что необходимость в перекодировании программного обеспечения и документации на основе ГОСТ все еще может возникнуть: устаревшие числовые алгоритмы (некоторые из которых могут представлять интерес, например, для автоматической посадки шаттла Буран ...), оптимизированные для операций с плавающей запятой, отличных от IEEE. представление БЭСМ-6 нельзя просто перекомпилировать и ожидать, что оно будет работать надежно, и может потребоваться вмешательство человека.
Дальнейшее чтение [ править ]
- Ф.Л. Бауэр, Р. Бауман, М. Фелисиано, К. Самельсон, Введение в Алгол . Прентис Холл, 1964, ISBN 0-13-477828-6
- Брайан Рэнделл и Л. Дж. Рассел, Реализация Алгола 60: Перевод и использование программ Алгола 60 на компьютере . Academic Press, 1964. Дизайн компилятора Whetstone . Одно из ранее опубликованных описаний реализации компилятора. См соответствующие документы: Ветстоун Алголь Revisited и The точильный KDF9 Алголь Переводчик от Brian Randell
- Дейкстра, E.W (1961), перевод на Algol 60: переводчик на algol 60 для x1 и создание переводчика для algol 60 (PDF) , отчет MR 35/61, Амстердам: Mathematisch Centrum
- Пересмотренный отчет по алгоритмическому языку Algol 60 Питера Наура и др. Определение АЛГОЛА
- Петер Наур "Европейская сторона последней фазы развития Алгола 60".
Внешние ссылки [ править ]
- История АЛГОЛА в Музее компьютерной истории
- Веб-компилятор ALGOL-F для небольших экспериментов [ постоянная мертвая ссылка ]