ALGOL 68C

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:30, 28 июня 2016.

Язык изначально назывался Z70 и впоследствии был переименован в ALGOL 68. ALGOL 68C был изначально построен для разработки и написания CAMbridge ALgebra system aka CAMAL.. Первоначальная версия компилятора была написана на Psyco (Princeton SYntax COmpiler by Edgar T. Irons), который был разработан в Кембридже. Компилятор и язык изначально были разработаны Стивеном Борном и Майклом Гаем как диалект ALGOL 68.

""Algol68C" был позже использован для написания ОС CHAOS для экспериментального компьютера CAP в Кембриджском университете в 1971.

Последующая работа была сделана на компиляторе, после того, как Борн покинул Кембриджский университет в 1975 г. была добавлена сборка мусора, но базовый код по-прежнему работает на эмулированной OS / MVT с использованием Hercules .

ALGOL68C компилятор генерировал выходной сигнал ZCODE, который можно было затем либо встраивать в код конкретной машины с помощью переводчика ZCODE или запустить интерпретатор. ZCODE представляет собой регистр на основе промежуточного языка. Эта способность интерпретировать или компилировать ZCODE стала причиной портирования ALGOL 68C на многочисленные различные компьютерные платформы. Помимо компьютера CAP компилятор был портирован на такие системы, как CMS, TOPS-10 и Z80. Шаблон:Refimprove

Algol 68 Cambridge
Разработчики: Стефан Борн, Майкл Гай, Эндрю Д. Биррелл, Йен Уолкер, Крис Ченей и другие.
Выпущена: c. 1970
Постоянный выпуск: 1.3039 / Шаблон:Release date
Написана на: ALGOL 68
Операционная система: IBM 360/370/etc машины (или их эмуляторы) запускающие MVT или MVS
Тип ПО: Компилятор, Транслятор
Веб-сайт http://algol68c.bitbucket.org/

Язык изначально назывался Z70 и впоследствии был переименован в ALGOL 68. ALGOL 68C был изначально построен для разработки и написания CAMbridge ALgebra system aka CAMAL.. Первоначальная версия компилятора была написана на Psyco (Princeton SYntax COmpiler by Edgar T. Irons), который был разработан в Кембридже. Компилятор и язык изначально были разработаны Стивеном Борном и Майклом Гаем как диалект ALGOL 68.

""Algol68C" был позже использован для написания ОС CHAOS для экспериментального компьютера CAP в Кембриджском университете в 1971.

Последующая работа была сделана на компиляторе, после того, как Борн покинул Кембриджский университет в 1975 г. была добавлена сборка мусора, но базовый код по-прежнему работает на эмулированной OS / MVT с использованием Hercules .

ALGOL68C компилятор генерировал выходной сигнал ZCODE, который можно было затем либо встраивать в код конкретной машины с помощью переводчика ZCODE или запустить интерпретатор. ZCODE представляет собой регистр на основе промежуточного языка. Эта способность интерпретировать или компилировать ZCODE стала причиной портирования ALGOL 68C на многочисленные различные компьютерные платформы. Помимо компьютера CAP компилятор был портирован на такие системы, как CMS, TOPS-10 и Z80.

Популярная культура

Очень ранний предшественник этого компилятора был использован Гаем и Борном, чтобы написать первую версию Конвеевского клеточного автомата на PDP-7 с DEC 340 дисплеем

Различные Ливерпуль программного обеспечения Gazette вопросы подробно реализацию Z80. Компилятор требуется около 120KB памяти для запуска, следовательно, память 64Кб ​​в Z80 является на самом деле слишком мал, чтобы запустить компилятор. Так программы алгол 68C для Z80 должен быть крест , скомпилированные из ALGOL 68C работает на больших возможностей CAP компьютера или IBM System / 370 мэйнфреймов.

Algol 68C и Unix

Стивен Борн впоследствии взял из ALGOL 68 if ~ then ~ else ~ fi, case ~ in ~ out ~ esac and for ~ while ~ do ~ od и применил в своей юникс сборке, но in's syntax был замене на, out удален, а od замене на done (чтобы избежать конфликта с od утилитой).

После Кембриджа, Борн провел девять лет в Bell Labs в команде седьмого издания Unix. Наряду с разработкой своей сборки, он портировал ALGOL 68C на Unix для DEC PDP-11 -45 и включил специальный пункт в Unix отладчик " ADB " для получения трассировки стека для программ, написанных на ALGOL68C. Вот выдержка из 7-го издание Unix ADB:

NAME
      adb - debugger
SYNOPSIS
      adb [-w] [ objfil [ corfil ] ]
[...]
COMMANDS
[...]
       $modifier
             Miscellaneous  commands.   The  available modifiers
             are:
             [...]
             a      ALGOL 68 stack  backtrace.   If  address  is
                    given  then it is taken to be the address of
                    the current frame (instead of r4).  If count
                    is  given  then  only the first count frames
                    are printed.

ALGOL 68C дополняет Algol 68 в

Ниже приводится выборка некоторых заметных расширений:

  • Автоматическая ор: = для любого оператора, например, *:= и +:=
  • UPTO, DOWNTO и UNTIL в циклах
  • оператор сдвига (:=:=)
  • ANDF, ORF и THEF syntactic elements.
  • раздельная компиляция - ENVIRON и USING
  • CODE ... EDOC для встраивания ZCODE

ENVIRON и USING

Раздельная компиляция в ALGOL 68Cделается с помощью ENVIRON и USING.

Пример с ENVIRON

Файл называется mylib.a68:

BEGIN
   INT dim = 3; # a constant #
   INT a number := 120; # a variable #
   ENVIRON EXAMPLE1;
   MODE MATRIX = [dim, dim]REAL; # a type definition #
   MATRIX m1;
   a number := ENVIRON EXAMPLE2;
   print((a number))
END

Пример с USING

Файл называется usemylib.a68:

USING EXAMPLE2 FROM "mylib"
BEGIN
  MATRIX m2; # example only #
  print((a number)); # declared in mylib.a68 #
  print((2 UPB m1)); # also declared in mylib.a68 #
  ENVIRON EXAMPLE3;  # ENVIRONs can be nested #
  666
END

Ограничения языка, пришедшие из стандартного Algol68

  • нет algol68 FLEX и массивов переменной длины.
  • MODE STRING реализован без FLEX.
  • PAR параллельное положение не было реализовано.
  • другие ...

Переводчик / компилятор для Algol68 был доступен для PDP-10 и IBM System / 360, а также для ряда других компьютеров.