| paradigm = [[Multi-paradigm programming language|multi-paradigm]]: [[structured programming|structured]], [[Imperative programming|imperative]], [[Functional programming|functional]]
| year = 1970s
| designer = [[Butler Lampson]], [[XeroxJames PARCG. Mitchell]], [[Jim Horning]], Ralph L. London, [[Gerald J. Popek]]
| developer = [[Ric Holt]] and [[James Cordy]]
| latest_release_version = <!--X.Y.Z/{{release date|mf=yes|YYYY|MM|DD}}-->
| implementations =
| dialects =
| influenced_by = [[Pascal (programming language)|Pascal]], [[Mesa (programming language)|Mesa]], [[Alphard (programming language)|Alphard]], [[CLU (programming language)|CLU]], Gypsy, [[BCPL]], [[Modula]], [[LIS (programming language)|LIS]], SUE
| influenced = [[Mesa (programming language)|Mesa]], [[Concurrent Euclid (programming language)|Concurrent Euclid]], [[Turing (programming language)|Turing]]
| operating_system =
| license =
}}
'''Euclid''' is an imperative programming language for writing [[Formal verification|verifiable]] programs. It was designed in the mid-1970s by [[Butler Lampson]] and associates[[James G. Mitchell]] at the [[Xerox PARC]] lab in collaboration with [[Jim Horning]] at the mid-1970s[[University of Toronto]], Ralph L. London at [[Information Sciences Institute|USC ISI]] and [[Gerald J. Popek]] at [[University of California, Los Angeles|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 [[United States Department of Defense|U.S. Department of Defense]] and the [[Department of National Defence (Canada)|Canadian Department of National Defence]]. It was used for a few years at [[I. P. Sharp Associates]], [[MITRE|MITRE Corporation]], [[SRI International]] and various other international institutes for research in systems programming and secure software systems.
Euclid is descended from the [[Pascal programming language|Pascal]], [[Mesa (programming language)|Mesa]], [[Alphard (programming language)|Alphard]], [[CLU (programming language)|CLU]], Gypsy, [[BCPL]], [[Modula]], [[LIS (programming language)|LIS]], and SUE. Functions in Euclid are closed scopes, may not have side effects, and must explicitly declare imports. Euclid also disallows [[GOTO|goto]]s, floating point numbers, global assignments, [[nested function]]s and aliases, and none of the actual parameters to a function can refer to the same thingmemory cell (which Euclid calls a "variable"). Euclid implements modules as types. Descendants of Euclid include the [[Mesa programming language]], the [[Concurrent Euclid programming language]] and the [[Turing programming language]].
==External links==
[[Category:Programming languages created in the 1970s]]
[[Category:Statically typed programming languages]]
[[Category:Systems programming languages]]
|