NIL (programming language)
Encyclopedia
NIL was a 32-bit implementation of Lisp developed at MIT
and intended to be the successor to Maclisp
. 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, with a stated goal of maintaining compatibility with MacLisp whilst fixing many of the problems with the language.
while he was at MIT
. From its inception, Lisp was closely connected with the artificial intelligence
research community, especially on PDP-10
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) 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 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, as opposed to Lisp Machine Lisp
for the Lisp machines. "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 ) 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. 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.
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
; 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".
Massachusetts Institute of Technology
The Massachusetts Institute of Technology is a private research university located in Cambridge, Massachusetts. MIT has five schools and one college, containing a total of 32 academic departments, with a strong emphasis on scientific and technological education and research.Founded in 1861 in...
and intended to be the successor to Maclisp
Maclisp
MACLISP is a dialect of the Lisp programming language. It originated at MIT's Project MAC in the late 1960s and was based on Lisp 1.5. Richard Greenblatt was the main developer of the original codebase for the PDP-6; Jonl White was responsible for its later maintenance and development...
. NIL stood for "New Implementation of LISP", and was in part a response to DECs
Digital Equipment Corporation
Digital Equipment Corporation was a major American company in the computer industry and a leading vendor of computer systems, software and peripherals from the 1960s to the 1990s...
VAX
VAX
VAX was an instruction set architecture developed by Digital Equipment Corporation in the mid-1970s. A 32-bit complex instruction set computer ISA, it was designed to extend or replace DEC's various Programmed Data Processor ISAs...
computer. The project was headed by Jon L White, with a stated goal of maintaining compatibility with MacLisp whilst fixing many of the problems with the language.
History
The Lisp language was invented in 1958 by John McCarthyJohn McCarthy (computer scientist)
John McCarthy was an American computer scientist and cognitive scientist. He coined the term "artificial intelligence" , invented the Lisp programming language and was highly influential in the early development of AI.McCarthy also influenced other areas of computing such as time sharing systems...
while he was at MIT
Massachusetts Institute of Technology
The Massachusetts Institute of Technology is a private research university located in Cambridge, Massachusetts. MIT has five schools and one college, containing a total of 32 academic departments, with a strong emphasis on scientific and technological education and research.Founded in 1861 in...
. From its inception, Lisp was closely connected with the artificial intelligence
Artificial intelligence
Artificial intelligence is the intelligence of machines and the branch of computer science that aims to create it. AI textbooks define the field as "the study and design of intelligent agents" where an intelligent agent is a system that perceives its environment and takes actions that maximize its...
research community, especially on PDP-10
PDP-10
The PDP-10 was a mainframe computer family manufactured by Digital Equipment Corporation from the late 1960s on; the name stands for "Programmed Data Processor model 10". The first model was delivered in 1966...
systems. Lisp was used as the implementation of the programming language Micro Planner
Planner programming language
Planner 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 essentially the whole language was implemented in Popler...
that was the foundation for the famous AI system SHRDLU
SHRDLU
SHRDLU was an early natural language understanding computer program, developed by Terry Winograd at MIT from 1968-1970. In it, the user carries on a conversation with the computer, moving objects, naming collections and querying the state of a simplified "blocks world", essentially a virtual box...
. Lisp, in particular Maclisp
Maclisp
MACLISP is a dialect of the Lisp programming language. It originated at MIT's Project MAC in the late 1960s and was based on Lisp 1.5. Richard Greenblatt was the main developer of the original codebase for the PDP-6; Jonl White was responsible for its later maintenance and development...
(so called because it originated at MIT's project MAC) was also used to implement the Macsyma
Macsyma
Macsyma is a computer algebra system that was originally developed from 1968 to 1982 at MIT as part of Project MAC and later marketed commercially...
computer algebra system
Computer algebra system
A computer algebra system is a software program that facilitates symbolic mathematics. The core functionality of a CAS is manipulation of mathematical expressions in symbolic form.-Symbolic manipulations:...
. In the 1970s, as AI research spawned commercial offshoots, the performance of existing Lisp systems became a growing issue.
Partly because of garbage collection
Garbage collection (computer science)
In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...
(Lisp would use stop-and-copy garbage collection of its single heap for memory allocation) 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
Lisp machine
Lisp machines were general-purpose computers designed to efficiently run Lisp as their main software language. In a sense, they were the first commercial single-user workstations...
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 DEC
Digital Equipment Corporation
Digital Equipment Corporation was a major American company in the computer industry and a leading vendor of computer systems, software and peripherals from the 1960s to the 1990s...
VAX
VAX
VAX was an instruction set architecture developed by Digital Equipment Corporation in the mid-1970s. A 32-bit complex instruction set computer ISA, it was designed to extend or replace DEC's various Programmed Data Processor ISAs...
.
NIL was an implementation of Lisp developed at MIT in the mid to late 1970s, and intended to be a modern successor to Maclisp
Maclisp
MACLISP is a dialect of the Lisp programming language. It originated at MIT's Project MAC in the late 1960s and was based on Lisp 1.5. Richard Greenblatt was the main developer of the original codebase for the PDP-6; Jonl White was responsible for its later maintenance and development...
that was suitable for running on stock hardware, as opposed to Lisp Machine Lisp
Lisp Machine Lisp
Lisp Machine Lisp is a dialect of the Lisp programming language, a direct descendant of Maclisp, and was initially developed in the mid to late 1970s as the systems programming language for the MIT Lisp machines. Lisp Machine Lisp was also the Lisp dialect with the most influence on the design of...
for the Lisp machines. "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 ) Since the users of the Macsyma
Macsyma
Macsyma is a computer algebra system that was originally developed from 1968 to 1982 at MIT as part of Project MAC and later marketed commercially...
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. 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.
Concurrently with the effort to write NIL, a research group at Stanford University
Stanford University
The Leland Stanford Junior University, commonly referred to as Stanford University or Stanford, is a private research university on an campus located near Palo Alto, California. It is situated in the northwestern Santa Clara Valley on the San Francisco Peninsula, approximately northwest of San...
and
Lawrence Livermore National Laboratory
Lawrence Livermore National Laboratory
The Lawrence Livermore National Laboratory , just outside Livermore, California, is a Federally Funded Research and Development Center founded by the University of California in 1952...
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
S-1 Lisp was an Lisp implementation written in Lisp for the 36-bit pipelined S-1 Mark IIA supercomputer computer architecture, which has 32 megawords of RAM....
. 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.
Guy L. Steele, Jr.
Guy Lewis Steele Jr. , also known as "The Great Quux", and GLS , is an American computer scientist who has played an important role in designing and documenting several computer programming languages.-Biography:...
and Richard P. Gabriel, who were to later to go and define Common Lisp
Common Lisp
Common Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, published in ANSI standard document ANSI INCITS 226-1994 , . From the ANSI Common Lisp standard the Common Lisp HyperSpec has been derived for use with web browsers...
; and secondly, Jonathan Rees worked on part of the NIL project during a year away from Yale
Yale University
Yale University is a private, Ivy League university located in New Haven, Connecticut, United States. Founded in 1701 in the Colony of Connecticut, the university is the third-oldest institution of higher education in the United States...
. 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".
Quotes about NIL
- The genesis & eventual failure of this kind of project is always clearly visible (in hindsight) in the shibbolethShibbolethA shibboleth is a custom, principle, or belief distinguishing a particular class or group of people, especially a long-standing one regarded as outmoded or no longer important...
s of the early discussions. One key tip-off phrase is always something of the form, "We'll throw out all the old cruftCruftCruft is jargon for computer software or hardware that is of poor quality. The term originates from source code that is rewritten leaving irrelevant or unwanted data within the code.-History:...
, start over fresh, and just Do Things Right." Olin Shivers
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