Content deleted Content added
Removed 3 spaces. |
new key for Category:Software topical history overviews: "Scheme programming language" using HotCat |
||
(5 intermediate revisions by 5 users not shown) | |||
Line 3:
==Prehistory==
{{Expand section|date=January 2011}}
The development of Scheme was heavily influenced by two predecessors that were quite different from one another: [[Lisp (programming language)|Lisp]] provided its general semantics and syntax, and [[ALGOL]] provided its [[Scope (computer science)|lexical scope]] and block structure. Scheme is a dialect of Lisp but Lisp has evolved; the Lisp dialects from which Scheme evolved—although they were in the mainstream at the time—are quite different from any modern Lisp. Scheme falls within the large Lisp family of languages that includes Common Lisp, Scheme, ISLisp, EuLisp, XLisp, and AutoLisp.
===Lisp===
{{
Lisp was invented by [[John McCarthy (computer scientist)|John McCarthy]] in 1958 while he was at the [[Massachusetts Institute of Technology]] (MIT). McCarthy published its design in a paper in ''[[Communications of the ACM]]'' in 1960, entitled "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I"<ref name="McCarthy">{{cite web |url=http://www-formal.stanford.edu/jmc/recursive.html |title=Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I |last=McCarthy |first=John |author-link=John McCarthy (computer scientist) |access-date=2006-10-13 |archive-url=https://web.archive.org/web/20131004215327/http://www-formal.stanford.edu/jmc/recursive.html |archive-date=2013-10-04 |url-status=dead }}</ref> (Part II was never published). He showed that with a few simple operators and a notation for functions, one can build a [[Turing-complete]] language for algorithms.
Line 13:
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]] 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 computing|36-bit]] IBM 704 instruction [[word (computer architecture)|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 |url=ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-039.pdf |title=AI Memo 39, The New Compiler |last1=Hart |first1=Tim |last2=Levin |first2=Mike |archive-url=https://web.archive.org/web/
The two variants of Lisp most significant in the development of Scheme were both developed at MIT: LISP 1.5<ref>{{cite book |url=https://archive.org/details/lisp15programmer00john |title=LISP 1.5 Programmer's Manual |publisher=[[MIT Press]] |last1=McCarthy |first1=John |author-link=John McCarthy (computer scientist) |last2=Abrahams |first2=Paul W. |last3=Edwards |first3=Daniel J. |last4=Hart |first4=Timothy P. |last5=Levin |first5=Michael I. |isbn=978-0-262-13011-0 |year=1985 |url-access=registration }}</ref> developed by McCarthy and others, and [[Maclisp]]<ref>{{cite web |url=http://zane.brouhaha.com/~healyzh/doc/lisp.doc.txt |title=Maclisp Reference Manual |date=March 3, 1979 |archive-url=https://web.archive.org/web/20071214064433/http://zane.brouhaha.com/~healyzh/doc/lisp.doc.txt |archive-date=2007-12-14}}</ref> – developed for MIT's [[Project MAC]], a direct descendant of LISP 1.5. which ran on the PDP-10 and [[Multics]] systems.
Line 20:
===ALGOL===
{{
[[ALGOL 58]], originally to be called IAL for "International Algorithmic Language", was developed jointly by a committee of European and American computer scientists in a meeting in 1958 at [[ETH Zurich]]. [[ALGOL 60]], a later revision developed at the ALGOL 60 meeting in Paris and now commonly named [[ALGOL]], became the standard for the publication of algorithms and had a profound effect on future language development, despite the language's lack of commercial success and its limitations. [[Tony Hoare]] has remarked: "Here is a language so far ahead of its time that it was not only an improvement on its predecessors but also on nearly all its successors."<ref>{{cite book |last=Hoare |first=Tony |author-link=Tony Hoare |date=December 1973 |title=Hints on Programming Language Design |url=http://www.eecs.umich.edu/~bchandra/courses/papers/Hoare_Hints.pdf |page=27 }} (This statement is sometimes erroneously attributed to [[Edsger W. Dijkstra]], also involved in implementing the first ALGOL 60 [[compiler]].)</ref>
Line 27:
==Carl Hewitt, the Actor model, and the birth of Scheme==
{{See also|Actor model|Planner (programming language)|MDL (programming language)}}
In 1971 Sussman, [[Drew McDermott]], and [[Eugene Charniak]] had developed a system called [[Planner (programming language)#Micro-planner implementation|Micro-Planner]] which was a partial and somewhat unsatisfactory implementation of [[Carl Hewitt]]'s ambitious [[Planner (programming language)|Planner]] project. Sussman and Hewitt worked together along with others on Muddle, later renamed [[MDL (programming language)|MDL]], an extended Lisp which formed a component of Hewitt's project. Drew McDermott, and Sussman in 1972 developed the Lisp-based language ''Conniver'', which revised the use of automatic backtracking in Planner which they thought was unproductive. Hewitt was dubious that the "hairy control structure" in Conniver was a solution to the problems with Planner. [[Pat Hayes]] remarked: "Their [Sussman and McDermott] solution, to give the user access to the implementation primitives of Planner, is however, something of a retrograde step (what are Conniver's semantics?)"<ref>{{cite journal |last=Hayes |first=Pat |date=1974 |title=Some Problems and Non-Problems in Representation Theory |journal=Society for the Study of Artificial Intelligence and the Simulation of Behaviour
In November 1972, Hewitt and his students invented the [[Actor model]] of computation as a solution to the problems with Planner.<ref name="hewitt1973">{{cite journal |last1=Hewitt |first1=Carl |author-link=Carl Hewitt |last2=Bishop |first2=Peter |last3=Steiger |first3=Richard |title=A Universal Modular Actor Formalism for Artificial Intelligence |publisher=IJCAI |year=1973}}</ref> A partial implementation of Actors was developed called Planner-73 (later called PLASMA). Steele, then a graduate student at MIT, had been following these developments, and he and Sussman decided to implement a version of the Actor model in their own "tiny Lisp" developed on [[Maclisp]], to understand the model better. Using this basis they then began to develop mechanisms for creating actors and sending messages.<ref name="revisited">{{cite journal
Line 67:
==Influence==
Scheme was the first dialect of Lisp to choose [[Scope (computer science)|lexical scope]]. It was also one of the first programming languages after Reynold's Definitional Language<ref>{{cite conference |title=Definitional interpreters for higher order programming languages |last=Reynolds |first=John |date=1972 |book-title=ACM Conference Proceedings |conference=Association for Computing Machinery }}</ref> to support [[First-class citizen|first-class]] [[continuation]]s.
==Standardization==
Line 80:
|pages=7–105
|doi=10.1023/A:1010051815785
|display-authors=etal|url-access=subscription
}}</ref> and a new standard, ''R6RS'',<ref name="r6rs">{{cite journal |last1=Sperber |first1=Michael |last2=Dybvig |first2=R. Kent |last3=Flatt |first3=Matthew |last4=Van Straaten |first4=Anton |last5=Findler |first5=Robby |last6=Matthews |first6=Jacob
|date=August 2009
Line 103 ⟶ 104:
[[Category:History of software|Scheme programming language]]
[[Category:Scheme (programming language)]]
[[Category:Software topical history overviews|Scheme programming language]]
|