NIL (programming language): Difference between revisions

Content deleted Content added
m fix incorrect link to speech impediment, using AWB
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
 
(26 intermediate revisions by 22 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 =
|designer = [[Jon L White]]
|paradigmparadigms = [[multiMulti-paradigm programming language|multi-paradigmMultiparadigm]]: [[functionalFunctional programming|functional]], [[proceduralProcedural programming|procedural]]
|developer = [[Jon L. White]], [[Guy L. Steele, Jr.]] and [[Richard P. Gabriel]]
|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|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}}</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
}}<!-- xiv, 285 p.; 23 cm. Cambridge, Mass. --></ref> and was in part a response to [[Digital Equipment Corporation]]'s (DEC) [[VAX]] computer. The project was headed by Jon L White,<ref>{{cite web |title=Brief History of the Lisp Language |last=Pitman |first=Kent M. |url=http://www.lisp.org/table/Lisp-History.html |access-date=2006-10-12 |archive-url=https://web.archive.org/web/20061010150728/http://www.lisp.org/table/Lisp-History.html<!-- Bot retrieved archive --> |archive-date=2006-10-10}}</ref> with a stated goal of maintaining compatibility with MacLisp while fixing many of its problems.
 
==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://communitywww.computerhistorysoftwarepreservation.org/scc/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|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]] (NILLisp would use stop-and-copy garbage collection of its single [[Heap (data structure)|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]].
 
NIlNIL 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 [[MacLispMaclisp]] 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 LISPLisp]] .<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]]