# Euclid (programming language)

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Euclid_(programming_language)
> Markdown URL: https://mediated.wiki/source/Euclid_(programming_language).md
> Source: https://en.wikipedia.org/wiki/Euclid_(programming_language)
> Source revision: 1346822532
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

**Euclid** is an imperative programming language for writing [verifiable](/source/Formal_verification) programs. It was designed in the mid-1970s by [Butler Lampson](/source/Butler_Lampson) and [James G. Mitchell](/source/James_G._Mitchell) at the [Xerox PARC](/source/Xerox_PARC) lab in collaboration with [Jim Horning](/source/Jim_Horning) at the [University of Toronto](/source/University_of_Toronto), Ralph L. London at [USC ISI](/source/Information_Sciences_Institute) and [Gerald J. Popek](/source/Gerald_J._Popek) at [UCLA](/source/University_of_California,_Los_Angeles). The implementation was led by [Ric Holt](/source/Ric_Holt) at the [University of Toronto](/source/University_of_Toronto) and [James Cordy](/source/James_Cordy) was the principal programmer for the first implementation of the [compiler](/source/Compiler). It was originally designed for the [Motorola 6809](/source/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](/source/Defense_Advanced_Research_Projects_Agency) of the [U.S. Department of Defense](/source/United_States_Department_of_Defense) and the [Canadian Department of National Defence](/source/Department_of_National_Defence_(Canada)). It was used for a few years at [I. P. Sharp Associates](/source/I._P._Sharp_Associates), [MITRE Corporation](/source/MITRE), [SRI International](/source/SRI_International) and various other international institutes for research in systems programming and secure software systems.

Euclid is descended from [Pascal](/source/Pascal_programming_language), [Mesa](/source/Mesa_(programming_language)), [Alphard](/source/Alphard_(programming_language)), [CLU](/source/CLU_(programming_language)), Gypsy, [BCPL](/source/BCPL), [Modula](/source/Modula), [LIS](/source/LIS_(programming_language)), and SUE. Functions in Euclid are closed scopes, may not have side effects, and must explicitly declare imports. Euclid also disallows [gotos](/source/GOTO), floating point numbers, global assignments, [nested functions](/source/Nested_function) 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](/source/Concurrent_Euclid_programming_language) and the [Turing programming language](/source/Turing_programming_language).

## External links

- [B.W. Lampson, J.J. Horning, R.L. London, J.G. Mitchell and G.J. Popek 1977. Report on the programming language Euclid. SIGPLAN Notices 12, 2 (February 1977), 1-79.](http://portal.acm.org/citation.cfm?id=954666.971189)
- [R.C. Holt, D.B. Wortman, J.R. Cordy and D.R. Crowe 1978. The Euclid Language: a progress report. In Proceedings of the 1978 Annual Conference (Washington, D.C., United States, December 04 - 06, 1978), 111-115.](http://portal.acm.org/citation.cfm?id=804077)
- [D.B. Wortman and J.R. Cordy 1981. Early experiences with Euclid. In Proc. 5th international Conference on Software Engineering (San Diego, California, United States, March 09 - 12, 1981), 27-32.](http://portal.acm.org/citation.cfm?id=802513)

---
Adapted from the Wikipedia article [Euclid (programming language)](https://en.wikipedia.org/wiki/Euclid_(programming_language)) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Euclid_(programming_language)?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
