stringtranslate.com

Дартмутский Алгол 30

Дартмутский АЛГОЛ 30 был реализацией 1960-х годов, сначала языка программирования АЛГОЛ 58 , а затем АЛГОЛ 60 . Он назван в честь компьютера, на котором он работал: настольного компьютера Librascope General Precision ( LGP-30 ), приобретенного Дартмутским колледжем в 1959 году.

Поскольку ограниченный размер LGP -30 (4 КБ 31-битных слов) препятствовал полной реализации АЛГОЛа 60, некоторые функции (массивы, вызываемые по значению, собственные массивы, строки, границы массива переменных и рекурсия) были опущены; но реализация включала параметры, вызываемые по имени, с использованием переходников [1] [2] и целочисленных меток. [3]

Алгол 30 был реализован четырьмя студентами бакалавриата. Стивен Дж. Гарланд написал компилятор, обнаружив на втором курсе, что составные операторы и блоки могут быть включены в алгоритм перевода Самельсона и Бауэра. [4] Этот простой факт был опубликован лишь несколько лет спустя Дэвидом Грайсом. [5] Роберт Ф. Харгрейвс, Хорхе Лласер и Энтони В. Кнапп разработали систему времени выполнения, которая включала интерпретатор арифметики с плавающей запятой (не поддерживается ограниченным набором команд LGP-30). [6]

АЛГОЛ 30 был двухпроходной системой. Первый проход загружал компилятор и обрабатывал исходный код, введенный пользователем; он генерировал промежуточный код, похожий на перемещаемый двоичный файл, и записывал его на бумажную ленту. Второй проход загружал как систему времени выполнения, так и промежуточный код. Компиляции можно было выполнять «пакетно», но задержка между вводом ленты с исходным кодом и выполнением скомпилированной программы была слишком велика, чтобы обеспечить широкое использование студентами. [7]

Чтобы обеспечить более широкое использование, Гарланд и Кнапп разработали систему «загрузи и работай», известную как SCALP, автономный процессор AL gol , для меньшего подмножества ALGOL 60 (который не допускал логических переменных или операторов, блоков) . , процедуры, собственные или динамические массивы, условные выражения и инструкции шага до ). SCALP отвел треть памяти LGP для компилятора, треть для системы времени выполнения (которая включала интерпретатор чисел с плавающей запятой и числовые функции) и треть для скомпилированного пользовательского кода. Студенты подготовили исходный код в автономном режиме и записали его на бумажную ленту с помощью флексорайтера Friden. Компиляция происходила почти так же быстро, как можно было прочитать ленту. Это позволило студентам выполнить задания за три минуты. Сотни студентов использовали SCALP до того, как BASIC стал доступен в Дартмутской системе разделения времени в 1965 году. [8] [9]

Алгол 30 стал основой для реализации в 1965 году Алгола 60 в Дартмутской системе разделения времени . Несколько лет спустя Сидни Маршалл разработал реализацию Алгола 68. [10]

Рекомендации

  1. ^ П. З. Ингерман, «Thunks: способ составления операторов процедур с некоторыми комментариями к объявлениям процедур», Communications of ACM 4:1 , январь 1961 г., страницы 55–58.
  2. ^ ET Irons и W. Feurzeig, «Комментарии к реализации рекурсивных процедур и блоков в Алголе-60», Сообщения ACM 4:11, январь 1961 г., страницы 65–69
  3. ^ Томас Э. Курц, «Основы», История языков программирования , Ассоциация вычислительной техники, июнь 1978 г., стр. 516.
  4. ^ К. Самельсон и Ф. Л. Бауэр, «Последовательный перевод формул», Сообщения ACM 3: 2, февраль 1960 г., страницы 76–83.
  5. ^ (Дэвид Грайс, «Использование матриц перехода при компиляции», Communications of ACM 11:1, январь 1968 г., страницы 26–34.
  6. ^ АЛГОЛ для LGP-30, Сравнение, Вычислительный центр, Дартмутский колледж, 16 февраля 1962 г.
  7. ^ Курц, лок. цит.
  8. ^ Курц, соч. цит. , стр. 517.
  9. ^ Руководство для SCALP, являющегося автономным процессором Algol для General Precision LGP-30 , CCM-7A, Вычислительный центр, Дартмутский колледж, 1 января 1964 г.
  10. Сидни Маршалл, Предварительный отчет о реализации ALGOL 68 , Вычислительный центр Kiewit, Дартмутский колледж, 1 декабря 1969 г.

Внешние ссылки