Эвклид: История и особенности верифицируемого языка программирования.
Euclid (programming language)
Euclid – императивный язык программирования для верифицируемых программ, разработанный в 1970-х в Xerox PARC. Инновационный компилятор для Motorola 6809.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Евклид — это императивный язык программирования для написания верифицируемых программ. Он был разработан в середине 1970-х годов Батлером Лэмпсоном и Джеймсом Г. Митчеллом в лаборатории Xerox PARC в сотрудничестве с Джимом Хорнингом из Университета Торонто, Ральфом Л. Лондоном из USC ISI и Джеральдом Дж. Попеком из UCLA. Реализацией руководил Рик Холт из Университета Торонто, а Джеймс Корди был главным программистом первой реализации компилятора. Изначально он был разработан для микропроцессора Motorola 6809. Он считался инновационным для своего времени; команда разработчиков компилятора имела бюджет в 2 миллиона долларов на 2 года и была профинансирована Агентством передовых исследовательских проектов Министерства обороны США и Канадским департаментом национальной обороны. В течение нескольких лет он использовался в I. P. Sharp Associates, MITRE Corporation, SRI International и различных других международных институтах для исследований в области системного программирования и безопасных программных систем. Евклид произошел от Pascal, Mesa, Alphard, CLU, Gypsy, BCPL, Modula, LIS и SUE. Функции в Евклиде имеют закрытую область видимости, не могут иметь побочных эффектов и должны явно объявлять импорты. Евклид также запрещает использование операторов goto, чисел с плавающей точкой, глобальных присваиваний, вложенных функций и псевдонимов, а ни один из фактических параметров функции не может ссылаться на одну и ту же ячейку памяти (которую Евклид называет «переменной»). Евклид реализует модули как типы. К потомкам Евклида относятся язык программирования Concurrent Euclid и язык программирования Turing.
Euclid is an imperative programming language for writing verifiable programs. It was designed in the mid 1970s by Butler Lampson and James G. Mitchell at the Xerox PARC lab in collaboration with Jim Horning at the University of Toronto, Ralph L. London at USC ISI and Gerald J. Popek at UCLA. The implementation was led by Ric Holt at the University of Toronto and James Cordy was the principal programmer for the first implementation of the compiler. It was originally designed for the Motorola 6809 microprocessor. It was considered innovative for the time; the compiler development team had a $2 million budget over 2 years and was commissioned by the Defense Advanced Research Projects Agency of the U. S. Department of Defense and the Canadian Department of National Defence. It was used for a few years at I. P. Sharp Associates, MITRE Corporation, SRI International and various other international institutes for research in systems programming and secure software systems. Euclid is descended from Pascal, Mesa, Alphard, CLU, Gypsy, BCPL, Modula, LIS, and SUE. Functions in Euclid are closed scopes, may not have side effects, and must explicitly declare imports. Euclid also disallows gotos, floating point numbers, global assignments, nested functions and aliases, and none of the actual parameters to a function can refer to the same memory cell (which Euclid calls a "variable"). Euclid implements modules as types. Descendants of Euclid include the Concurrent Euclid programming language and the Turing programming language.