АЛГОЛ 68C
![]() | Возможно, эту статью необходимо реорганизовать, чтобы она соответствовала рекомендациям Википедии по оформлению . ( Июль 2016 г. ) |
Эта статья нуждается в дополнительных цитатах для проверки . ( август 2012 г. ) |
Разработчик(и) | Стивен Борн , Майкл Гай , Эндрю Д. Биррелл, Ян Уокер, Крис Чейни и др. |
---|---|
Первоначальный выпуск | около 1970 года |
Стабильная версия | 1,3039
/ 3 марта 2013 г |
Написано в | АЛГОЛ 68 |
Операционная система | IBM 360 , 370 и т. д., мэйнфреймы (или их эмуляции), работающие под управлением MVT или MVS. |
Тип | Составитель , переводчик |
Веб-сайт | битбакет |
АЛГОЛ 68C — императивный компьютерного программирования язык , диалект АЛГОЛ 68 , который был разработан Стивеном Р. Борном и Майклом Гаем для программирования Кембриджской алгебраической системы (CAMAL). Первоначальный компилятор был написан в Принстонском компиляторе синтаксиса (PSYCO, автор Эдгар Т. Айронс ), который был реализован Дж. Х. Мэтьюманом в Кембридже.
АЛГОЛ 68C позже использовался в ОС CHAOS для безопасности, основанного на возможностях, компьютера CAP в Кембриджском университете в 1971 году. Другими ранними участниками были Эндрю Д. Биррелл. [1] и Ян Уокер.
Последующая работа над компилятором была проделана после того, как Борн покинул Кембриджский университет в 1975 году. Была добавлена сборка мусора , и база кода все еще работает. [ нужны разъяснения ] на эмулируемой ОС/MVT с использованием Hercules .
Компилятор ALGOL 68C генерировал выходные данные в ZCODE , промежуточном языке на основе регистров, который затем можно было либо интерпретировать, либо скомпилировать в собственный исполняемый файл. Эта способность интерпретировать или компилировать ZCODE способствовала портированию ALGOL 68C на множество различных вычислительных платформ . Помимо компьютера CAP , компилятор был портирован на системы, включая Conversational Monitor System (CMS), TOPS-10 и Zilog Z80 .
культура Популярная
Очень ранний предшественник этого компилятора использовался Гаем и Борном для написания первых программ Game of Life на PDP-7 с дисплеем DEC 340. [2] [3]
В различных выпусках Liverpool Software Gazette подробно описана реализация Z80. Для работы компилятору требовалось около 120 КБ памяти; следовательно, 64 КБ памяти Z80 на самом деле слишком малы для запуска компилятора. Поэтому программы ALGOL 68C для Z80 пришлось кросс-компилировать с более крупного компьютера CAP или IBM System/370 мэйнфрейма .
Алгол 68C и Unix [ править ]
Стивен Борн впоследствии повторно использовал алгоритм Алгола 68 . if ~ then ~ else ~ fi
, case ~ in ~ out ~ esac
и for ~ while ~ do ~ od
предложений в общей оболочке Unix Bourne , но с in
синтаксис изменился, out
удалили, и od
заменен на done
(во избежание конфликта с утилитой od ).
После Кембриджа Борн провёл девять лет в Bell Labs с командой Unix версии 7 (Seventh Edition Unix). Помимо разработки оболочки Борна, он портировал ALGOL 68C в Unix на DEC PDP- 11-45 и включил специальную опцию в свой отладчик Unix Advanced Debugger (adb) для получения обратной трассировки стека для программ, написанных на ALGOL 68C. Вот выдержка из страниц руководства Unix 7-го издания: [4]
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.
Расширения АЛГОЛА 68C для АЛГОЛА 68 [ править ]
Ниже приведена выборка некоторых примечательных расширений: [5]
- Автоматический op := для любого оператора, например
*:=
и+:=
UPTO
,DOWNTO
иUNTIL
в предложениях цикла;- оператор смещения (
:=:=
) ANDF
,ORF
иTHEF
синтаксические элементы .- отдельная компиляция -
ENVIRON
пункт иUSING
пункт - области не проверены
- границы в формальных деклараторах
CODE
...EDOC
предложение - для встраивания ZCODE
The ENVIRON
и USING
пункты [ править ]
Отдельная компиляция в АЛГОЛе 68C осуществляется с помощью ENVIRON
и USING
статьи. ENVIRON
сохраняет всю среду в том месте, где она появляется. Отдельный модуль, написанный начиная с USING
предложение фактически вставляется в первый модуль в той точке, где ENVIRON
появляется пункт.
ENVIRON
и USING
полезны для нисходящего стиля программирования, в отличие от восходящего стиля, подразумеваемого традиционными библиотечными механизмами.
своего рода инверсией #include Python в языке программирования C или import в Эти предложения являются . Цель ENVIRON
Механизм заключается в том, чтобы позволить исходному коду программы быть разбитым на части управляемого размера. Общий исходный файл необходимо проанализировать только один раз, в отличие от #include, найденного в языке программирования C , где включаемый файл необходимо анализировать для каждого исходного файла, который его включает.
Пример 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
Ограничения на язык из стандарта АЛГОЛ 68 [ править ]
- Нет ALGOL 68 FLEX и массивов переменной длины.
MODE STRING
реализовано без FLEX- Параллельное положение PAR не было реализовано
- Нестандартный транспорт
- другие...
Транслятор-компилятор Алгола 68C был доступен для PDP-10 , IBM System/360 и нескольких других компьютеров.
Ссылки [ править ]
- ^ Биррелл, Эндрю Д. (декабрь 1977 г.). «Системное программирование на языке высокого уровня» (PDF) . Диссертация представлена на соискание ученой степени доктора философии . Кембриджский университет . Проверено 22 апреля 2007 г.
- ^ «Деталь предмета: Модель 340 Digital Equipment Corporation» . Австралийское общество компьютерных музеев (ACMS) . Веб-хостинг AceWare . Проверено 17 апреля 2020 г. [ постоянная мертвая ссылка ]
- ^ Гарднер, Мартин (октябрь 1970 г.). «Фантастические комбинации нового пасьянса Джона Конвея «Жизнь» » (PDF) . Математические игры. Научный американец . № 223. С. 120–123.
Для долгоживущих популяций, таких как эта, Конвей иногда использует компьютер PDP-7 с экраном, на котором он может наблюдать изменения [...] Программа была написана MJT Guy и SR Bourne. Без его помощи было бы трудно сделать некоторые открытия об игре.
- ^ «Модульный ручной браузер: Adb» . UnixDev.net . Архивировано из оригинала 3 марта 2016 г. Проверено 17 апреля 2020 г.
- ^ Борн, Стивен Р .; Биррелл, Эндрю Д.; Уокер, Ян (1975). Справочное руководство по Алголу 68С . Компьютерная лаборатория Кембриджского университета.
Внешние ссылки [ править ]
- Официальный сайт
- Кембриджский АЛГОЛ 68: в историческом списке компьютерных языков - включает более 10 ссылок на публикации.
- Транспортировка АЛГОЛА 68C - П. Дж. Гарднер, Университет Эссекса - март 1977 г. (от 370 до DECsystem-10)
- Запуск ALGOL 68C на MVS – как установить ALGOL 68C на эмулируемую систему MVS