NIL (programming language): Difference between revisions

Content deleted Content added
Ruud Koot (talk | contribs)
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5
 
(39 intermediate revisions by 32 users not shown)
Line 1:
{{Short description|Dialect of Lisp}}
{{dablink|This is about the programming langauge. For other uses see [[Nil]].}}
{{About|the programming language|other uses|Nil (disambiguation){{!}}Nil}}
{{Infobox programming language
|name = Nil
|logo = <!-- Filename only -->
|logo caption =
|screenshot = <!-- Filename only -->
|screenshot caption =
|paradigms = [[Multi-paradigm programming language|Multiparadigm]]: [[Functional programming|functional]], [[Procedural programming|procedural]]
|family = [[Lisp (programming language)|Lisp]]
|designer = Jon L White
|developers = Jon L White,<br />[[Guy L. Steele Jr.]],<br />[[Richard P. Gabriel]]
|released = {{Start date and age|1979}}
|latest release version =
|latest release date =
|typing = [[Dynamic typing|dynamic]], [[Strong 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 = [[Common Lisp]],<ref name=Steele/> [[T (programming language)|T]]
}}
 
'''New Implementation of LISP''' ('''NIL''') wasis ana implementation[[programming language]], a [[Dialect (computing)|dialect]] of the language [[Lisp (programming language)|Lisp]], developed at the [[Massachusetts Institute of Technology|MIT]] (MIT) during the 1970s, and intended to be the successor to the language [[Maclisp|MacLisp]]. <ref name=STEELESteele>{{cite web | title=The evolution of Lisp| author=Guy L Steele Jr, Richard P Gabriel | url=httphttps://www.dreamsongs.com/NewFilesFiles/HOPL2-Uncut.pdf | accessdatetitle=2006-10-12}}</ref>The NIL stood for "New Implementationevolution of LISP",Lisp and was in part a response to [[Digital Equipment|last1=Steele Corporation|DEC]]sfirst1=Guy [[VAX]]L. computerJr. The project was headed by [[Jon L White]] <ref>{{cite web | titlelast2=BriefGabriel History of the Lisp Language| authorfirst2=KentRichard M PitmanP. | url=http://www.lisp.org/table/Lispaccess-History.html | accessdatedate=20062017-1008-1205}}</ref>, withIt is a stated[[32-bit goalcomputing|32-bit]] of maintainingimplementation,<ref compatability with MacLisp whilst fixing many of the problems with the language.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
|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]] (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 [[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 thea modern successor to [[MacLispMaclisp]]. that was able to run on stock hardware,<ref name=STEELESteele/> in contrast 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 imperitiveimperative. 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 optimisationoptimization 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 ThisLisp]]. projectThat 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. This project 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 succcessfulgoals 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/>. 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 optimisingoptimizing, 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>-->
{{FootnotesSmall|resize=92%}}
 
==DocumentationBibliography==
* 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–113108 – 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-19881975–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]]