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

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

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

ECL в основном использовался для исследований и обучения в дизайн языка программирования, методология программирования (в частности, программирование трансформационное уточнение ), и среды программирования в Гарварде, хотя говорят, что он использовался и в некоторых правительственных учреждениях. Впервые он был реализован на PDP-10, с более поздней (только интерпретируемой) реализацией на PDP-11 написано в БЛАЖЕНСТВО -11 и скомпилирован на PDP-10.

Процедуры и bind-классы

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

 1  gcd <- 2    EXPR(м:INT BYVAL, п: INT BYVAL; INT) 3    НАЧИНАТЬ 4      DECL р:INT; 5      ПОВТОРЕНИЕ 6        р <- rem(м, п); 7        р = 0 => п; 8        м <- п; 9        п <- р;10      КОНЕЦ;11    КОНЕЦ

Это задание постоянная процедуры к переменной gcd. Линия

EXPR (m: ЦЕЛОЕ ПОБЫВНОЕ; n: ЦЕЛОЕ ПОИСКПОЗ; ЦЕЛОЕ)

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

г = 0 => п

когда форма г = 0 оценивает ИСТИННЫЙ заставляет выполнение цикла завершаться со значением п. Значение последнего оператора в блоке (НАЧИНАТЬ ... КОНЕЦ) form становится значением блочной формы. Значение формы в объявлении процедуры становится результатом вызова процедуры.

В дополнение к bind-классу BYVAL, В ECL есть классы связывания ОБЩИЙ, ПОДОБНО, НЕВЕРОЯТНЫЙ, и В СПИСОК. Бинд-класс ОБЩИЙ указывает, что параметр должен быть передан по ссылке. Бинд-класс ПОДОБНО вызывает передачу параметра по ссылке если возможно и по стоимости в противном случае (например, если фактический параметр является чистым значением или переменной, к которой необходимо применить преобразование типа). Бинд-класс НЕВЕРОЯТНЫЙ указывает, что абстрактное синтаксическое дерево поскольку фактический параметр должен быть передан формальному параметру; это дает программистам исключительную гибкость при изобретении собственных нотаций со своей собственной семантикой оценки для определенных параметров процедуры. Бинд-класс В СПИСОК похоже на НЕВЕРОЯТНЫЙ, но предоставляет возможности, аналогичные возможностям varargs в C: the В СПИСОК bind-class может появляться только в последнем формальном параметре процедуры, и этот формальный параметр привязан к списку абстрактное синтаксическое дерево представления, по одному для каждого оставшегося фактического параметра. ECL имеет EVAL встроенная функция для оценки абстрактное синтаксическое дерево; в качестве альтернативы есть функции, с помощью которых программисты могут исследовать узлы абстрактное синтаксическое дерево и обрабатывать их согласно собственной логике.

Смотрите также

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

PISEL = Материалы международного симпозиума по расширяемым языкам, Гренобль, Франция, 1971 г., опубликовано в Уведомления ACM SIGPLAN 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 г.