АЛГОЛ 68С

АЛГОЛ 68 Кембридж
Разработчик(и)Стивен Борн , Майкл Гай , Эндрю Д. Биррелл, Ян Уокер, Крис Чейни и др.
Первоначальный выпускоколо 1970 ; 54 года назад (1970)
Стабильный релиз
1.3039 / 3 марта 2013 г. ; 11 лет назад (2013-03-03)
Написано вАЛГОЛ 68
Операционная системаIBM 360 , 370 и т. д., мэйнфреймы (или эмуляции) под управлением MVT или MVS
ТипСоставитель , переводчик
Веб-сайтbitbucket.org/algol68c/dl

ALGOL 68Cимперативный язык программирования , диалект ALGOL 68 , разработанный Стивеном Р. Борном и Майклом Гаем для программирования Cambridge Algebra System (CAMAL). Первоначальный компилятор был написан в Princeton Syntax Compiler (PSYCO, Эдгара Т. Айронса), который был реализован Дж. Х. Мэтьюменом в Кембридже.

Позднее ALGOL 68C использовался для ОС CHAOS для компьютера безопасности на основе возможностей CAP в Кембриджском университете в 1971 году. Другими ранними участниками были Эндрю Д. Биррелл [1] и Ян Уокер.

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

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

Самый ранний предшественник этого компилятора использовался Гаем и Борном для написания первых программ «Игры жизни» на PDP-7 с дисплеем DEC 340. [2] [3]

Различные выпуски Liverpool Software Gazette подробно описывают реализацию Z80. Для работы компилятора требовалось около 120 КБ памяти; следовательно, 64 КБ памяти Z80 на самом деле слишком мало для запуска компилятора. Поэтому программы ALGOL 68C для Z80 приходилось кросс-компилировать с более крупного компьютера CAP или мэйнфрейма IBM System/370 .

Алгол 68С и Unix

Стивен Борн впоследствии повторно использовал предложения ALGOL 68 и в общей оболочке Bourne для Unix , но с измененным, удаленным и замененным на синтаксис (чтобы избежать конфликта с утилитой od ). if ~ then ~ else ~ ficase ~ in ~ out ~ esacfor ~ while ~ do ~ od inoutoddone

После Кембриджа Борн провел девять лет в Bell Labs с командой Version 7 Unix (Seventh Edition Unix). Помимо разработки оболочки Bourne, он портировал ALGOL 68C на Unix на DEC PDP-11 -45 и включил специальную опцию в свой отладчик Unix Advanced Debugger (adb) для получения трассировки стека для программ, написанных на ALGOL 68C. Вот отрывок из страниц руководства Unix 7-го издания: [4]

ИМЯ adb - отладчикСИНОПСИС adb [-w] [объект [корфил]][...]КОМАНДЫ[...] $модификатор Разные команды. Доступные модификаторы являются: [...] обратная трассировка стека ALGOL 68. Если адрес дано, то это принимается за адрес текущий кадр (вместо r4). Если количество дается тогда только первый подсчет кадров напечатаны.

Расширения АЛГОЛа 68C для АЛГОЛа 68

Ниже приведен пример некоторых примечательных расширений: [5]

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

Пункты ENVIRONиUSING

Раздельная компиляция в ALGOL 68C выполняется с использованием предложений ENVIRONи USING. ENVIRONСохраняет полную среду в точке ее появления. Отдельный модуль, написанный с USINGпредложения, фактически вставляется в первый модуль в точке ENVIRONпоявления предложения.

ENVIRONи USINGполезны для программирования сверху вниз , в отличие от восходящего стиля, подразумеваемого традиционными библиотечными механизмами.

Эти предложения являются своего рода инверсией #include , найденного в языке программирования C , или import, найденного в Python . Цель механизма ENVIRON— позволить разбить исходный код программы на части управляемого размера. Необходимо только один раз проанализировать общий исходный файл, в отличие от #include, найденного в языке программирования C , где файл include должен быть проанализирован для каждого исходного файла, который его включает.

Пример ENVIRONпункта

Файл с именем mylib.a68 :

НАЧИНАТЬ INT dim = 3; # константа # INT число := 120; # переменная # ПРИМЕР ОКРУЖЕНИЯ1; MODE MATRIX = [dim, dim]REAL; # определение типа # МАТРИЦА m1; число := ENVIRON EXAMPLE2; print((число))КОНЕЦ

Пример USINGпункта

Файл с именем usemylib.a68 :

ИСПОЛЬЗОВАНИЕ ПРИМЕРА 2 ИЗ "mylib"НАЧИНАТЬ МАТРИЦА m2; # только пример # print((число)); # объявлено в mylib.a68 # print((2 UPB m1)); # также объявлено в mylib.a68 # ПРИМЕР ОКРУЖЕНИЯ3; # ОКРУЖЕНИЯ могут быть вложенными # 666КОНЕЦ

Ограничения языка со стороны стандарта АЛГОЛ 68

  • Нет ALGOL 68 FLEX и массивов переменной длины
  • MODE STRINGреализовано без FLEX
  • Параллельный пункт PAR не был реализован
  • Нестандартный транспорт
  • другие...

Транслятор-компилятор для ALGOL 68C был доступен для PDP-10 , IBM System/360 и нескольких других компьютеров.

Ссылки

  1. ^ Биррелл, Эндрю Д. (декабрь 1977 г.). "Системное программирование на языке высокого уровня" (PDF) . Диссертация на соискание степени доктора философии . Кембриджский университет . Получено 22.04.2007 .
  2. ^ "Сведения об изделии: Digital Equipment Corporation Model 340". Australian Computer Museum Society (ACMS) . AceWare Web Hosting . Получено 2020-04-17 .[ постоянная мертвая ссылка ]
  3. ^ Гарднер, Мартин (октябрь 1970 г.). «Фантастические комбинации новой игры-пасьянса Джона Конвея «жизнь»» (PDF) . Математические игры. Scientific American . № 223. стр. 120–123. Для долгоживущих популяций, таких как эта, Конвей иногда использует компьютер PDP-7 с экраном, на котором он может наблюдать изменения [...] Программа была написана MJT Guy и SR Bourne. Без ее помощи было бы трудно сделать некоторые открытия об игре.
  4. ^ "The Modular Manual Browser: Adb". UnixDev.net . Архивировано из оригинала 2016-03-03 . Получено 2020-04-17 .
  5. ^ Борн, Стивен Р .; Биррелл, Эндрю Д.; Уокер, Ян (1975). Справочное руководство по ALGOL 68C . Кембриджская университетская компьютерная лаборатория.
  • Официальный сайт
  • Cambridge ALGOL 68: в историческом реестре компьютерных языков — включает более 10 ссылок на публикации.
  • Транспортировка ALGOL 68C – PJ Gardner, Университет Эссекса – март 1977 г. (из 370 в DECsystem-10)
  • Запуск ALGOL 68C на MVS — как установить ALGOL 68C на эмулируемую систему MVS
Retrieved from "https://en.wikipedia.org/w/index.php?title=ALGOL_68C&oldid=1146635042"