NIL (programming language)

NIL (programming language)
Nil
Paradigm(s) multi-paradigm: functional, procedural
Appeared in 1970s
Designed by Jon L White
Developer Jon L White, Guy L. Steele, Jr. and Richard P. Gabriel
Typing discipline dynamic, strong

NIL was a 32-bit[1] implementation of Lisp developed at MIT and intended to be the successor to Maclisp.[2] NIL stood for "New Implementation of LISP", and was in part a response to DECs VAX computer. The project was headed by Jon L White,[3] with a stated goal of maintaining compatibility with MacLisp whilst fixing many of the problems with the language.

Contents

History

The Lisp language was invented in 1958 by John McCarthy while he was at MIT[4]. From its inception, Lisp was closely connected with the artificial intelligence research community, especially on PDP-10[5] systems. Lisp was used as the implementation of the 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 (Lisp would use stop-and-copy garbage collection of its single heap for memory allocation[1]) 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 machines: 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 DEC VAX.

NIL was an implementation of 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[2], as opposed to Lisp Machine Lisp for the Lisp machines.[1] "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 [1]) 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 bignums was a requirement to support Macsyma, since NIL would be a failure with slow bignums.[6] 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.[7]

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 [2]; and secondly, Jonathan Rees worked on part of the NIL project during a year away from 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 system known as T. In part NIL begat this name, since "T is not NIL".[7]

Quotes about NIL

  • The genesis & eventual failure of this kind of project is always clearly visible (in hindsight) in the shibboleths 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'

References

  1. ^ a b c d Gabriel, Richard P. (May 1985). Performance and evaluation of Lisp systems. MIT Press; Computer Systems Series. ISBN 978-0-262-07093-5; LCCN: 85-15161. http://www.dreamsongs.com/NewFiles/Timrep.pdf. 
  2. ^ a b c Guy L Steele Jr, Richard P Gabriel. "The evolution of Lisp". http://www.dreamsongs.com/NewFiles/HOPL2-Uncut.pdf. Retrieved 2006-10-12. 
  3. ^ Kent M Pitman. "Brief History of the Lisp Language". Archived from the original on 2006-10-10. http://web.archive.org/web/20061010150728/http://www.lisp.org/table/Lisp-History.html. Retrieved 2006-10-12. 
  4. ^ Paul McJones. "History of LISP". http://www.softwarepreservation.org/projects/LISP/. Retrieved 2006-10-12. 
  5. ^ 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." [1]
  6. ^ "Dan Weinreb on NIL". http://www.paulgraham.com/weinreb.html. Retrieved 2006-10-12. 
  7. ^ a b Olin Shivers. "History of T". http://www.paulgraham.com/thist.html. Retrieved 2006-10-12. 

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-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


Timeline of Lisp implementations(edit)
1955 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010
Lisp 1.5 Lisp 1.5
Maclisp Maclisp
NIL NIL
Interlisp Interlisp
Common Lisp Common Lisp
Scheme Scheme

Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Look at other dictionaries:

  • Oxygene (programming language) — Oxygene Developer RemObjects Software Stable release 3.0.21 (August 29, 2009; 2 years ago (2009 08 29)) Influenced by Object Pas …   Wikipedia

  • Lisp (programming language) — Infobox programming language name = Lisp paradigm = multi paradigm: functional, procedural, reflective generation = 3GL year = 1958 designer = John McCarthy developer = Steve Russell, Timothy P. Hart, and Mike Levin latest release version =… …   Wikipedia

  • Oz (programming language) — Oz Paradigm(s) multi paradigm: logic, functional, imperative, object oriented, constraint, distributed, concurrent Appeared in 1991 Designed by Gert Smolka, his students Developer Mozart …   Wikipedia

  • Pascal (programming language) — Pascal Paradigm(s) imperative, structured Appeared in 1970 Designed by Niklaus Wirth Typing discipline static, strong, safe …   Wikipedia

  • Planner (programming language) — Planner (often seen in publications as PLANNER although it is not an acronym) is a programming language designed by Carl Hewitt at MIT, and first published in 1969. First, subsets such as Micro Planner and Pico Planner were implemented, and then… …   Wikipedia

  • Miranda (programming language) — Miranda Paradigm(s) lazy, functional, declarative Appeared in 1985 Designed by David Turner Developer …   Wikipedia

  • Scala (programming language) — Infobox programming language name = Scala paradigm = Multi paradigm: functional, object oriented year = 2003 designer = Martin Odersky developer = Programming Methods Laboratory of EPFL latest release version = 2.7.1 latest release date = May 5,… …   Wikipedia

  • ML (programming language) — ML Paradigm(s) multi paradigm: imperative, functional Appeared in 1973 Designed by Robin Milner others at the University of Edinburgh Typing discipline static, strong, inferred …   Wikipedia

  • Limbo (programming language) — Infobox programming language name = Limbo paradigm = Concurrent year = 1995 designer = Sean Dorward, Phil Winterbottom, Rob Pike developer = Bell Labs / Vita Nuova Holdings latest release version = latest release date = typing = Strong… …   Wikipedia

  • Lua (programming language) — Infobox programming language name = Lua paradigm = Multi paradigm: scripting, imperative, functional year = 1993 designer = Roberto Ierusalimschy Waldemar Celes Luiz Henrique de Figueiredo developer = latest release version = 5.1.4 latest release …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”