History of the Scheme programming language: Difference between revisions

Content deleted Content added
m v1.38 - Repaired 1 link to disambiguation page - (You can help) - Steve Russell
m clean up; http->https (see this RfC) using AWB
Line 15:
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.
 
The two variants of Lisp most significant in the development of Scheme were both developed at MIT: LISP 1.5<ref>{{cite book | url = http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf | title = LISP 1.5 Programmer's Manual | publisher = [[MIT Press]] | first1 = John | last1 = McCarthy | first2 = Paul W. | last2 = Abrahams | first3 = Daniel J. | last3 = Edwards | first4 = Timothy P. | last4 = Hart | first5 = Michael I. | last5 = Levin | isbn = 0-262-13011-4 | year = 1985}}</ref> developed by McCarthy and others, and [[Maclisp|MACLISP]]<ref>{{cite web | url = http://zane.brouhaha.com/~healyzh/doc/lisp.doc.txt | title = Maclisp Reference Manual | date = March 3, 1979 | archiveurl = httphttps://web.archive.org/web/20071214064433/http://zane.brouhaha.com/~healyzh/doc/lisp.doc.txt | archivedate = 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.
 
Since its inception, Lisp was closely connected with the [[artificial intelligence]] research community, especially on [[PDP-10]]<ref>The 36-bit word size of the [[PDP-6]]/[[PDP-10]] was influenced by the usefulness of having two Lisp 18-bit pointers in a single word. {{cite newsgroup | quote = The PDP-6 project started in early 1963, as a 24-bit machine. It grew to 36 bits for LISP, a design goal. | url = httphttps://groups.google.com/group/alt.folklore.computers/browse_thread/thread/6e5602ce733d0ec/17597705ae289112 | title = The History of TOPS or Life in the Fast ACs | newsgroup = alt.folklore.computers |message-id= 84950@tut.cis.ohio-state.edu | date = 18 October 1990 | author = Peter J. Hurley}}</ref> systems.
 
===ALGOL===
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_Planner (programming_languageprogramming language)#Micro-planner_implementationplanner implementation|Micro-Planner]] which was a partial and somewhat unsatisfactory implementation of Planner. Sussman and Hewitt worked together along with others on [[MDL (programming language)|Muddle (later MDL)]], an extended Lisp which formed a component of Hewitt's ambitious [[Planner (programming language)|Planner]] 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>Pat Hayes Some Problems and Non-Problems in Representation Theory AISB’74.</ref>
 
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|author=Carl Hewitt |author2=Peter Bishop |author3=Richard Steiger|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 top of [[MacLisp]], in order 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 44:
}}</ref>
 
PLASMA's use of lexical scope was similar to the [[lambda calculus]]. Sussman and Steele decided to try to model Actors in the lambda calculus. They called their modeling system Schemer, eventually changing it to Scheme to fit the six-character limit on the [[Incompatible_Timesharing_SystemIncompatible Timesharing System|ITS]] file system on their DEC [[PDP-10]]. They soon concluded Actors were essentially closures that never return but instead invoke a [[continuation]], and thus they decided that the closure and the Actor were, for the purposes of their investigation, essentially identical concepts. They eliminated what they regarded as redundant code and, at that point, discovered that they had written a very small and capable dialect of Lisp. Hewitt remained critical of the "hairy control structure" in Scheme<ref>Carl Hewitt. "Viewing Control Structures as Patterns of Passing Messages" AI Memo 410. December 1976. Journal of Artificial Intelligence. June 1977.</ref> and considered primitives (e.g., <code>START!PROCESS</code>, <code>STOP!PROCESS</code> and <code>EVALUATE!UNINTERRUPTIBLY</code>) used in the Scheme implementation to be a backward step.
 
25 years later, in 1998, Sussman and Steele reflected that the minimalism of Scheme was not a conscious design goal, but rather the unintended outcome of the design process. "We were actually trying to build something complicated and discovered, serendipitously, that we had accidentally designed something that met all our goals but was much simpler than we had intended... we realized that the lambda calculus—a small, simple formalism—could serve as the core of a powerful and expressive programming language." <ref name="revisited"/>
Line 51:
 
==The Lambda Papers==
Between 1975 and 1980 Sussman and Steele worked on developing their ideas about using the lambda calculus, continuations and other advanced programming concepts such as [[Tail_recursionTail recursion|optimization of tail recursion]], and published them in a series of [[AI Memo]]s which have become known collectively as the "Lambda Papers".<ref name="readscheme_lambda ">[http://library.readscheme.org/page1.html Online version of the Lambda Papers] (PDF format)</ref>
 
=== List of papers ===