WikiDer > Язык программирования ECL
Эта статья включает Список ссылок, связанное чтение или внешняя ссылка, но его источники остаются неясными, потому что в нем отсутствует встроенные цитаты. (Сентябрь 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
В 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 г.