History of the Scheme programming language: Difference between revisions

Content deleted Content added
Kbenayak (talk | contribs)
m Grammatical edit: of and in.
Citation bot (talk | contribs)
m Alter: isbn, template type. Add: citeseerx, year, class, eprint. Removed parameters. | You can use this bot yourself. Report bugs here. | User-activated.
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]] 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 |last=Hart |first=Tim |last2=Levin |first2=Mike |format=PDF |access-date=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]] |last=McCarthy |first=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-40 |year=1985 |format=PDF}}</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.
 
Since its inception, Lisp was closely connected with the [[artificial intelligence]] (AI) research community, especially on [[PDP-10]]. The 36-bit word size of the [[PDP-6]] and [[PDP-10]] was influenced by the usefulness of having two Lisp [[18-bit]] pointers in one word.<ref>{{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=https://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 |last=Hurley |first=Peter J.}}</ref> systems.
Line 21:
===ALGOL===
{{details|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 |___location= |publisher= |page=27 |isbn= |format=PDF}} (This statement is sometimes erroneously attributed to [[Edsger W. Dijkstra]], also involved in implementing the first ALGOL 60 [[compiler]].)</ref>
 
ALGOL introduced the use of block structure and lexical scope. It was also notorious for its difficult [[call by name]] default parameter passing mechanism, which was defined so as to require textual substitution of the expression representing the working parameter in place of the formal parameter during execution of a procedure or function, causing it to be re-evaluated each time it is referenced during execution. ALGOL implementors developed a mechanism they called a [[thunk]], which captured the context of the working parameter, enabling it to be evaluated during execution of the procedure or function.
Line 33:
|date = December 1998
|url = http://www.brics.dk/~hosc/local/HOSC-11-4-pp399-404.pdf
|format = PDF
|title = The First Report on Scheme Revisited
|journal = Higher-Order and Symbolic Computation
Line 52 ⟶ 51:
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"/>
 
On the other hand, Hewitt remained critical of the lambda calculus as a foundation for computation writing "The actual situation is that the λ-calculus is capable of expressing some kinds of sequential and parallel control structures but, in general, not the concurrency expressed in the Actor model. On the other hand, the Actor model is capable of expressing everything in the λ-calculus and more." He has also been critical of aspects of Scheme that derive from the lambda calculus such as reliance on continuation functions and the lack of exceptions.<ref>{{cite web |url=https://arxiv.org/abs/0907.3330arXiv |title=ActorScript: Industrial strength integration of local and nonlocal concurrency for Client-cloud Computing |last=Hewitt |first=Carl |author-link=Carl Hewitt |datepublisher= |websiteeprint=ArXiv0907.3330 |publisherclass = cs.PL|arxivyear =0907.3330 |access-date=2009}}</ref>
 
==The Lambda Papers==
Line 92 ⟶ 91:
|pages=1–301
|doi=10.1017/S0956796809990074
|citeseerx=10.1.1.154.5197 }}</ref> was ratified in 2007.<ref>{{cite web |url=http://www.r6rs.org/ratification/results.html |title=R6RS ratification-voting results |last= |first= |date= |website= |publisher= |access-date=}}</ref>
 
==Timeline==