NIL (programming language): Difference between revisions

Content deleted Content added
m -redlinks
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
 
(15 intermediate revisions by 14 users not shown)
Line 1:
{{Short description|Dialect of Lisp}}
{{dablinkAbout|This is about the programming language. For |other uses|Nil see [[(disambiguation){{!}}Nil]].}}
{{Infobox programming language
|name = Nil
|logo = <!-- Filename only -->
|logo caption =
|paradigm = [[multi-paradigm programming language|multi-paradigm]]: [[functional programming|functional]], [[procedural programming|procedural]]
|screenshot = <!-- Filename only -->
|year = 1970s
|screenshot caption =
|paradigmparadigms = [[multiMulti-paradigm programming language|multi-paradigmMultiparadigm]]: [[functionalFunctional programming|functional]], [[proceduralProcedural programming|procedural]]
|family = [[Lisp (programming language)|Lisp]]
|designer = Jon L White
|developerdevelopers = Jon L White,<br />[[Guy L. Steele, Jr.]],<br and />[[Richard P. Gabriel]]
|released = {{Start date and age|1979}}
|latest release version =
|latest release date =
|typing = [[dynamicDynamic typing|dynamic]], [[strongStrong and weak typing|strong]]
|scope =
|programming language = [[VAX]] [[Assembly language|assembly]]
|discontinued = Yes
|platform = [[VAX]]
|operating system = [[OpenVMS|VAX/VMS]]
|license =
|file ext =
|file format = <!-- or: | file formats = -->
|website = <!-- {{URL|www.example.com}} -->
|implementations =
|dialects =
|influenced by = [[Lisp (programming language)|Lisp]], [[Maclisp]]
|influenced_by =
|influenced = [[Common Lisp]],<ref name=Steele/> [[T (programming language)|T]]
|influenced =
}}
 
'''New Implementation of LISP''' ('''NIL''') is a [[programming language]], a [[Dialect (computing)|dialect]] of the language [[Lisp (programming language)|Lisp]], developed at the [[Massachusetts Institute of Technology]] (MIT) during the 1970s, and intended to be the successor to the language [[Maclisp]].<ref name=Steele>{{cite web |url=https://www.dreamsongs.com/Files/HOPL2-Uncut.pdf |title=The evolution of Lisp |last1=Steele |first1=Guy L. Jr. |last2=Gabriel |first2=Richard P. |access-date=2017-08-05}}</ref> It is a [[32-bit computing|32-bit]] implementation,<ref name=Gabriel>{{cite book
'''NIL''' was a 32-bit<ref name=GABRIEL>{{cite book
| last = Gabriel
| first = Richard P.
| title = Performance and evaluation of Lisp systems
| publisher = [[MIT Press]]; Computer Systems Series
| url = http://www.dreamsongs.com/NewFiles/Timrep.pdf
| date = May 1985
|isbn=978-0-262-07093-5
| isbn = 978-0-262-07093-5; LCCN: 85-15161}} <!-- xiv, 285 p. ; 23 cm. Cambridge, Mass. --></ref> implementation of [[Lisp (programming language)|Lisp]] developed at [[Massachusetts Institute of Technology|MIT]] and intended to be the successor to [[Maclisp]].<ref name=STEELE>{{cite web | title=The evolution of Lisp| author=Guy L Steele Jr, Richard P Gabriel | url=http://www.dreamsongs.com/NewFiles/HOPL2-Uncut.pdf | accessdate=2006-10-12}}</ref> NIL stood for "New Implementation of LISP", and was in part a response to [[Digital Equipment Corporation|DECs]] [[VAX]] computer. The project was headed by Jon L White,<ref>{{cite web | title=Brief History of the Lisp Language| author=Kent M Pitman | url=http://www.lisp.org/table/Lisp-History.html | accessdate=2006-10-12 |archiveurl = http://web.archive.org/web/20061010150728/http://www.lisp.org/table/Lisp-History.html <!-- Bot retrieved archive --> |archivedate = 2006-10-10}}</ref> with a stated goal of maintaining compatibility with MacLisp whilst fixing many of the problems with the language.
|lccn=85015161
|archive-date=2016-09-22
|access-date=2006-10-15
|archive-url=https://web.archive.org/web/20160922192958/http://www.dreamsongs.com/NewFiles/Timrep.pdf
|url-status=dead
| isbn = 978-0-262-07093-5; LCCN: 85-15161}} <!-- xiv, 285 p. ; 23 cm. Cambridge, Mass. --></ref> implementation of [[Lisp (programming language)|Lisp]] developed at [[Massachusetts Institute of Technology|MIT]] and intended to be the successor to [[Maclisp]].<ref name=STEELE>{{cite web | title=The evolution of Lisp| author=Guy L Steele Jr, Richard P Gabriel | url=http://www.dreamsongs.com/NewFiles/HOPL2-Uncut.pdf | accessdate=2006-10-12}}</ref> NIL stood for "New Implementation of LISP", and was in part a response to [[Digital Equipment Corporation|DECs]]'s (DEC) [[VAX]] computer. The project was headed by Jon L White,<ref>{{cite web | title=Brief History of the Lisp Language |last=Pitman author|first=Kent M Pitman. | url=http://www.lisp.org/table/Lisp-History.html | accessdateaccess-date=2006-10-12 |archiveurl archive-url= httphttps://web.archive.org/web/20061010150728/http://www.lisp.org/table/Lisp-History.html <!-- Bot retrieved archive --> |archivedate archive-date= 2006-10-10}}</ref> with a stated goal of maintaining compatibility with MacLisp whilstwhile fixing many of theits problems with the language.
 
==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]] (MIT).<ref>{{cite web|title=History of LISP|author=Paul McJones|url=http://www.softwarepreservation.org/projects/LISP/ |accessdatetitle=History of LISP |last=McJones |first=Paul |access-date=2006-10-12}}</ref> From its inception, Lisp was closely connected with the [[artificial intelligence]] (AI) research [[Community of practice|community]], especially on [[PDP-10]]<ref> systems. The [[36-bit computing|36-bit]] [[Word (computer architecture)|word]] size of the [[PDP-6]]/ and [[PDP-10]] was influenced by the usefulness of having two Lisp [[18-bit computing|18-bit]] [[Pointer (computer programming)|pointers]] in a singleone word.: "The PDP-6 project started in early 1963, as a [[24-bit computing|24-bit]] machine. It grew to 36 bits for LISP, a design goal."<ref>{{cite [web |url=http://groups.google.com/group/alt.folklore.computers/browse_thread/thread/6e5602ce733d0ec/17597705ae289112] |title=The History of TOPS or Life in the Fast ACs |last=Hurley |first=Peter J. |editor-last1=Stevens |editor-first=Jack |editor-last2=Johnson |editor-first2=Lum |website=Google Groups |access-date=2018-11-28}}</ref> systems. Lisp was used as the implementation of the programming language Micro [[Planner (programming language)|Micro Planner]] that was the foundation for the famous AI system [[SHRDLU]]. Lisp, in particular [[Maclisp]] (so callednamed 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 existingextant Lisp systems became a growing issueproblem.
 
Partly because of [[garbageGarbage 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="GABRIELGabriel"/>) and partly because of its representation of internal structures, Lisp became difficult to run on the memory-limited stock [[computer hardware]] of the day. This led to the creation ofcreating [[LISPLisp 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 particularespecially the [[Digital Equipment Corporation|DEC]] (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 suitableable forto runningrun on stock hardware,<ref name=STEELESteele/> asin opposedcontrast to [[Lisp Machine Lisp]] for the Lisp machines.<ref name="GABRIELGabriel"/> "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=GABRIELGabriel/>) 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 [[bignumArbitrary-precision arithmetic|bignums]]s was a requirement to support Macsyma, since NIL would be a failure with slow bignums.<ref>{{cite web |url=http://www.paulgraham.com/weinreb.html |title=Dan Weinreb on NIL |last=Weinreb url|first=http://wwwDan |date=<!-- Undated.paulgraham --> |website=PaulGraham.com/weinreb.html |accessdateaccess-date=20062018-1011-1228}}</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=SHIVERSShivers>{{cite web |url=http://www.paulgraham.com/thist.html |title=Olin Shivers: History of T |last=Shivers author|first=Olin Shivers |date=<!-- urlUndated. --> |website=http://www.paulgrahamPaulGraham.com/thist.html | accessdateaccess-date=20062018-1011-1228}}</ref>
 
Concurrent 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-1That Lisp was never fully functional, but was a test bed for implementing advanced [[compiler]] techniquesmethods in a Lisp. Eventually the S-1 and NIL groups began to collaboratecollaborating.
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 notunsuccessful in meeting its successfulgoals as a projectused language, NIL was important in a number ofseveral ways:. firstlyFirst, 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=STEELESteele/> and secondlySecond, 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 asnamed [[T (programming language)|T]]. In part, NIL begat this name, since "T is not NIL".<ref name=SHIVERSShivers/>
 
{{Lisp}}
==Quotes about NIL==
 
* ''The genesis & eventual failure of this kind of project is always clearly visible (in hindsight) in the [[shibboleth]]s of the early discussions. One key tip-off phrase is always something of the form, "We'll throw out all the old [[cruft]], start over fresh, and just Do Things Right."'' ''Olin Shivers'''<cite name=SHIVERS/>
==Quotes about NIL==
*{{Blockquote ''|The genesis & eventual failure of this kind of project is always clearly visible (in hindsight) in the [[shibboleth]]s of the early discussions. One key tip-off phrase is always something of the form, "We'll throw out all the old [[cruft]], start over fresh, and just Do Things Right."'' ''|author=Olin Shivers'''<citeref name=SHIVERSShivers/>}}
 
==References==
{{Reflist}}
<!--<nowiki>
<!-- See http://en.wikipedia.org/wiki/Wikipedia:Footnotes forto anlearn explanationhow ofto howgenerate footnotes using the <ref> and </ref> tags, and the template below. -->
to generate footnotes using the <ref> and </ref> tags, and the template below
</nowiki>-->
{{reflist}}
 
==Bibliography==
* Brent T. Hailpern and, Bruce L. Hitson. S-1 Architecture Manual. Technical Report 161 (STAN-CS-79-715), Department of Electrical Engineering, Stanford University, January 1979.
* G. Burke. Introduction to NIL. Laboratory for Computer Science, Massachusetts Institute of Technology, March 1983.
* G.S. Burke, G.J. Carrette, and C.R. Eliot. NIL Notes for Release 0.259, Laboratory for Computer Science, Massachusetts Institute of Technology, June 1983.
* G.S. Burke, G.J. Carrette, and C. R. Eliot. NIL Reference Manual. Report MIT/LCS/TR-311, Laboratory for Computer Science, Massachusetts Institute of Technology, Cambridge, Massachusetts, 1983.
 
==Papers==
* Steven Correll. S-1 uniprocessor architecture (sma-4). Volume I, Chapter 4, The S-1 Project 1979 Annual Report, Lawrence Livermore Laboratory, Livermore, California, 1979.
* Jon L. White. Nil: A perspective. Proceedings of 1979 Macsyma Users' Conference, Washington, D.C., June 1979.
* Rodney A. Brooks, Richard P. Gabriel, and Guy L. Steele Jr. S-1 Common Lisp Implementation. Proceedings of the 1982 ACM symposium on LISP and functional programming, Pittsburgh, 1982, pages 108 – 113. ACM DL
* Rodney A. Brooks, Richard P. Gabriel, and Guy L. Steele Jr. An optimizing compiler for a lexically scoped LISP. Proceedings of the 1982 Symposium on Compiler Construction, Boston, June 1982, pages 261-275261–275. ACM DL
* Mark Smotherman. S-1 Supercomputer (1975–1988). Web site, last updated April 24, 2004. http://www.cs.clemson.edu/~mark/s1.html
 
{{Lisp programming language}}
 
[[Category:Dynamically typed programming languages]]
[[Category:Functional languages]]
[[Category:Lisp programming language family]]
[[Category:Programming languages created in 1979]]