NIL (programming language): Difference between revisions

Content deleted Content added
m sp
Yobot (talk | contribs)
m History: WP:CHECKWIKI error 61 fix, References after punctuation per WP:REFPUNC and WP:PAIC using AWB (8459)
Line 26:
 
==History==
The [[Lisp (programming language)|Lisp]] language was invented in 1958 by [[John McCarthy (computer scientist)|John McCarthy]] while he was at [[Massachusetts Institute of Technology|MIT]].<ref>{{cite web|title=History of LISP|author=Paul McJones|url=http://www.softwarepreservation.org/projects/LISP/|accessdate=2006-10-12}}</ref>. From 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. "The PDP-6 project started in early 1963, as a 24-bit machine. It grew to 36 bits for LISP, a design goal." [http://groups.google.com/group/alt.folklore.computers/browse_thread/thread/6e5602ce733d0ec/17597705ae289112]</ref> systems. Lisp was used as the implementation of the programming language [[Planner programming language|Micro Planner]] that was the foundation for the famous AI system [[SHRDLU]]. Lisp, in particular [[Maclisp]] (so called because it originated at MIT's project MAC) was also used to implement the [[Macsyma]] [[computer algebra system]]. In the 1970s, as AI research spawned commercial offshoots, the performance of existing Lisp systems became a growing issue.
 
Partly because of [[garbage collection (computer science)|garbage collection]] (Lisp would use stop-and-copy garbage collection of its single heap for [[Dynamic memory allocation|memory allocation]]<ref name="GABRIEL"/>) and partly because of its representation of internal structures, Lisp became difficult to run on the memory-limited stock hardware of the day. This led to the creation of [[LISP machine]]s: dedicated hardware for running Lisp environments and programs. An alternative was to use the more powerful commodity hardware which was becoming available, in particular the [[Digital Equipment Corporation|DEC]] [[VAX]].
 
NIL was an implementation of [[Lisp (programming language)|Lisp]] developed at [[MIT]] in the mid to late 1970s, and intended to be a modern successor to [[Maclisp]] that was suitable for running on stock hardware,<ref name=STEELE/>, as opposed to [[Lisp Machine Lisp]] for the Lisp machines.<ref name="GABRIEL"/> "Originally designed as the first modern Lisp dialect on stock hardware after the development of Lisp machine Lisp at MIT, it went on to become one of the main influences on the design of Common Lisp." (pg 63/294 of <ref name=GABRIEL/>) Since the users of the [[Macsyma]] program represented a large potential user base for NIL, it was necessary that NIL would be a large, complex system, and that speed would be imperative. For example high-speed [[bignum]]s was a requirement to support Macsyma, since NIL would be a failure with slow bignums.<ref>{{cite web | title=Dan Weinreb on NIL| url=http://www.paulgraham.com/weinreb.html|accessdate=2006-10-12}}</ref> Consequently NIL ended up with a large base of VAX assembly language. These requirements led to a very aggressive and complex optimization strategy which was applied prematurely, with negative results on the final system.<ref name=SHIVERS>{{cite web | title=History of T | author=Olin Shivers | url=http://www.paulgraham.com/thist.html | accessdate=2006-10-12}}</ref>
 
Concurrently with the effort to write NIL, a research group at [[Stanford University]] and
[[Lawrence Livermore National Laboratory]] headed by [[Richard P. Gabriel]] were investigating the design of a Lisp to run on the S-1 Mark IIA supercomputer, [[S-1 Lisp]]. S-1 Lisp was never fully functional, but was a test bed for implementing advanced compiler techniques in a Lisp. Eventually the S-1 and NIL groups began to collaborate.
 
Although not successful as a project, NIL was important in a number of ways: firstly it brought together [[Jon L. White]], [[Guy L. Steele, Jr.]] and Richard P. Gabriel, who were to later to go and define [[Common Lisp]] ;<ref name=STEELE/>; and secondly, Jonathan Rees worked on part of the NIL project during a year away from [[Yale University|Yale]]. On returning to Yale, he was hired by the computer science department to write a new Lisp, which became the optimizing, native code [[Scheme (programming language)|Scheme]] system known as [[T (programming language)|T]]. In part NIL begat this name, since "T is not NIL".<ref name=SHIVERS/>
 
==Quotes about NIL==