Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
SECD machine
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Abstract machine as a target for compilers}} {{Infobox software | title = SECD machine | logo = <!-- File name without 'File:' --> | logo caption = | logo alt = | logo upright = | logo size = | screenshot = <!-- File name without 'File:' --> | screenshot alt = | caption = | other_names = | author = [[Peter Landin]] | developer = | released = {{Start date and age|1964}} | discontinued = Yes | latest release version = | latest release date = <!-- {{Start date and age|196y|mm|dd|df=yes}} --> | programming language = | operating system = [[Linux]], [[Microsoft Windows|Windows]], [[DOS]] | platform = [[Free Pascal]] on [[IA-32]], [[x86-64]] | included with = [[Lispkit Lisp]], [[Lisp (programming language)|Lisp]]/[[IBM System/370|370]], pure_LISP | size = ~ 76K, 185K, 920K | language = English | genre = [[Virtual machine|virtual]] and [[abstract machine]] | license = <!-- or |licence= --> | website = {{URL|skelet.ludost.net/sec}} | AsOf = }} The '''SECD machine''' is a highly influential (see: ''[[#Landin's contribution|Landin's contribution]]'') [[virtual machine]] and [[abstract machine]] intended as a target for [[compiler]]s of [[Functional programming|functional]] [[programming language]]s. The letters stand for <code>stack</code>, <code>environment</code>, <code>control</code>, <code>dump</code>, respectively, which are the [[Processor register|internal registers]] of the machine. The registers <code>stack</code>, <code>control</code>, and <code>dump</code> point to (some realizations of) [[Stack (abstract data type)|stacks]], and <code>environment</code> points to (some realization of) an [[associative array]]. The machine was the first to be specifically designed to evaluate [[lambda calculus]] expressions. It was originally described by [[Peter Landin]] in "The Mechanical Evaluation of Expressions" in 1964.<ref>{{Cite journal |last1=Landin |first1=P. J. |author1-link=Peter Landin |date=January 1964 |title=The Mechanical Evaluation of Expressions |doi=10.1093/comjnl/6.4.308 |journal=[[The Computer Journal]] |volume=6 |issue=4 |pages=308β320 |doi-access=free}}</ref> The description published by Landin was fairly abstract, and left many implementation choices open (like an [[operational semantics]]). [[Lispkit Lisp]] was an influential compiler based on the SECD machine,<ref>{{cite book |last1=Henderson |first1=Peter |date=1980 |title=Functional programming: application and implementation |publisher=Prentice-Hall International |location=Englewood Cliffs, New Jersey |isbn=0-13-331579-7}}</ref> and the SECD machine has been used as the target for other systems such as [[Lisp (programming language)|Lisp]]/[[IBM System/370|370]].<ref>{{cite conference |last1=Padget |first1=Julian |date=1988 |title=Three uncommon Lisps |publisher=School of Mathematical Sciences, University of Bath |conference=First International Workshop on Lisp Evolution and Standardization |publication-place=Bath, Avon, United Kingdom |url=https://www.softwarepreservation.org/projects/LISP/conference/iwoleas88/Padget-ThreeUncommonLisps.pdf |citeseerx=<!-- dead? 10.1.1.99.1028 --> |via=[[Computer History Museum]]}}</ref> In 1989, researchers at the [[University of Calgary]] worked on a hardware implementation of the machine, with the same rationale as a [[high-level language computer architecture]] related to a [[Lisp machine]].<ref>{{cite report |last1=Graham |first1=Brian |date=1 September 1989 |url=http://hdl.handle.net/1880/46590 |title=SECD: Design Issues |place=Calgary, Alberta, Canada |access-date=12 December 2024}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)