Jump to content

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

Язык ECL и система программирования представляли собой расширяемый высокого уровня язык программирования и среду разработки , разработанные в Гарвардском университете в 1970-х годах. Название «ECL» расшифровывалось как «Расширяемый компьютерный язык» или «ЭКлектический язык». В некоторых публикациях использовалось название ECL для системы в целом и EL/1 (Расширяемый язык) для языка.

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

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

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

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

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

 gcd <-
   EXPR(m:INT BYVAL, n: INT BYVAL; INT)
   BEGIN
     DECL r:INT;
     REPEAT
       r <- rem(m, n);
       r = 0 => n;
       m <- n;
       n <- r;
     END;
   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) form становится значением формы блока. Значение формы в объявлении процедуры становится результатом вызова процедуры.

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

См. также

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

PISEL = Материалы международного симпозиума по расширяемым языкам , Гренобль, Франция, 1971 г., опубликовано в журнале ACM SIGPLAN Notes 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 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 97cec774828b7bd98bd77a7bac6ce5fb__1644529920
URL1:https://arc.ask3.ru/arc/aa/97/fb/97cec774828b7bd98bd77a7bac6ce5fb.html
Заголовок, (Title) документа по адресу, URL1:
ECL programming language - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)