Язык программирования ECL

редактировать

Язык программирования ECL и Система была расширяемым языком программирования высокого уровня и средой разработки, разработанной в Гарвардском университете в 1970-х. Название «ECL» расшифровывалось как «Extensible Computer Language» или «EClectic Language». Некоторые публикации использовали название «ECL» для всей системы и «EL / 1» (расширяемый язык) для самого языка.

ECL была интерактивной системой, в которой программы были представлены внутри системы; был совместимый компилятор и интерпретатор. У него был синтаксис, подобный АЛГОЛу, и система расширяемого типа данных с типами данных первоклассных граждан. Объектами данных были значения, а не ссылки, и соглашения о вызовах давали выбор между вызовом по значению и вызовом по ссылке для каждого аргумента.

ECL в основном использовался для исследований и обучения в области проектирования языков программирования, методологии программирования (в частности, программирования с помощью трансформационного уточнения ) и среды программирования в Гарварде, хотя говорят, что они также используются в некоторых правительственных учреждениях. Впервые он был реализован на PDP-10, а более поздняя (только интерпретируемая) реализация на PDP-11 была написана в BLISS -11 и перекрестно составлен на ПДП-10.

Процедуры и классы связывания

Процедура ECL для вычисления наибольшего общего делителя двух целых чисел в соответствии с алгоритмом Евклида может быть определена как следует:

1 gcd <- 2 EXPR(m:INT BYVAL, n: INT BYVAL; INT) 3 BEGIN 4 DECL r:INT; 5 REPEAT 6 r <- rem(m, n); 7 r = 0 =>n; 8 m <- n; 9 n <- r; 10 END; 11 END

Это присвоение процедурной константы переменной gcd. Строка

EXPR (m: INT BYVAL, n: INT BYVAL; INT)

указывает, что процедура принимает два параметра типа INTс именем mи nи возвращает результат типа INT. (Типы данных называются режимами в ECL.) Класс связывания BYVALв каждом объявлении параметра указывает, что этот параметр передается по значению. Вычислительные компоненты программы ECL называются формами. Некоторые формы напоминают выражения других языков программирования, а другие - утверждения. Выполнение формы всегда дает значение. Конструкция REPEAT... ENDявляется формой цикла. Выполнение конструкции

r = 0 =>n

, когда форма r = 0оценивается как TRUE, вызывает завершение выполнения цикла со значением n. Значение последнего оператора в форме блока (BEGIN... END) становится значением формы блока. Значение формы в объявлении процедуры становится результатом вызова процедуры.

В дополнение к классу связывания BYVAL, ECL имеет классы связывания SHARED, LIKE, UNEVAL, и В СПИСКЕ. Bind-class SHAREDуказывает, что параметр должен быть передан по ссылке. Bind-class LIKEвызывает передачу параметра по ссылке, если возможно, и по значению, если нет (например, если фактический параметр является чистым значением, или переменная, к которой должно применяться преобразование типа). Bind-class UNEVALуказывает, что абстрактное синтаксическое дерево для фактического параметра должно быть передано формальному параметру; это дает программистам исключительную гибкость при изобретении собственных нотаций со своей собственной семантикой оценки для определенных параметров процедуры. Класс привязки LISTEDаналогичен UNEVAL, но предоставляет возможности, аналогичные функциям varargs в C : LISTEDbind-class может появляться только в последнем формальном параметре процедуры, и этот формальный параметр привязан к списку представлений абстрактного синтаксического дерева, по одному для каждого оставшегося фактического параметра. ECL имеет встроенную функцию EVALдля оценки абстрактного синтаксического дерева ; в качестве альтернативы существуют функции, с помощью которых программисты могут исследовать узлы абстрактного синтаксического дерева и обрабатывать их в соответствии со своей собственной логикой.

См. Также
Ссылки

PISEL = Труды международного симпозиума по расширяемым языкам, Гренобль, Франция, 1971, опубликованные в ACM SIGPLAN Notices 6 : 12, декабрь 1971 г.

  • Бенджамин М. Бросгол, "Реализация типов данных ECL", PISEL, стр. 87–95.
  • , Гленн Х. Холлоуэй, Джуди А. Таунли, " Уточнение программ путем преобразования », Труды 5-й международной конференции по программной инженерии, 1981, стр. 430–437. ISBN 0-89791-146-6
  • Гленн Х. Холлоуэй, «Интеграция интерпретатора / компилятора в ECL», PISEL, стр. 129–134.
  • Чарльз Дж. Преннер, «Средства управления структурой ECL», PISEL, стр. 104–112.
  • Бен Вегбрайт, «Обзор системы программирования ECL», PISEL, стр. 26–28.
  • Бен Вегбрайт, «Исследования расширяемых языков программирования». Технический отчет ESD-TR-70-297. Гарвардский университет, Кембридж, Массачусетс, май 1970 г.
  • Гленн Холлоуэй, Джуди Таунли, Джей Спитцен, Бен Вегбрайт, «Руководство программиста ECL», отчет 23-74, Центр исследований в области компьютерных технологий, Гарвардский университет, декабрь 1974.
  • Ларри Дененберг, «Реализация PDP-11 ECL», Технический отчет 29-77, Центр исследований в области компьютерных технологий, Гарвардский университет, июнь 1977 г.
Последняя правка сделана 2021-05-18 14:15:58
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте