History of the Scheme programming language: Difference between revisions

Content deleted Content added
m Standardization: replace et al. in author/editor parameters with |display-authors=etal or |display-editors=etal; using AWB
m v1.38 - Repaired 1 link to disambiguation page - (You can help) - Steve Russell
Line 11:
The use of [[S-expression]]s which characterize the syntax of Lisp was initially intended to be an interim measure pending the development of a language employing what McCarthy called "[[M-expression]]s". As an example, the M-expression <CODE><nowiki>car[cons[A,B]]</nowiki></CODE> is equivalent to the S-expression <CODE>(car&nbsp;(cons&nbsp;A&nbsp;B))</CODE>. S-expressions proved popular, however, and the many attempts to implement M-expressions failed to catch on.
 
The first implementation of Lisp was on an [[IBM 704]] by [[Steve Russell (computer scientist)|Steve Russell]], who read McCarthy's paper and coded the eval function he described in machine code. The familiar (but puzzling to newcomers) names [[car and cdr|CAR and CDR]] used in Lisp to describe the head element of a list and its tail, evolved from two [[IBM 704]] assembly language commands: Contents of Address Register and Contents of Decrement Register, each of which returned the contents of a 15-bit register corresponding to segments of a 36-bit IBM 704 instruction word.
 
The first complete Lisp compiler, written in Lisp, was implemented in 1962 by Tim Hart and Mike Levin at MIT.<ref name="LEVIN">{{cite web | title=AI Memo 39-The new compiler| author=Tim Hart and Mike Levin | url=ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-039.pdf | accessdate=2006-10-13}}</ref> This compiler introduced the Lisp model of incremental compilation, in which compiled and interpreted functions can intermix freely.