NIL (programming language)

Last updated
Nil
Paradigms Multiparadigm: functional, procedural
Family Lisp
Designed by Jon L White
Developers Jon L White,
Guy L. Steele Jr.,
Richard P. Gabriel
First appeared1979;44 years ago (1979)
Typing discipline dynamic, strong
Implementation language VAX assembly
Platform VAX
OS VAX/VMS
Influenced by
Lisp, Maclisp
Influenced
Common Lisp, [1] T

New Implementation of LISP (NIL) is a programming language, a dialect of the language Lisp, developed at the Massachusetts Institute of Technology (MIT) during the 1970s, and intended to be the successor to the language Maclisp. [1] It is a 32-bit implementation, [2] and was in part a response to Digital Equipment Corporation's (DEC) VAX computer. The project was headed by Jon L White, [3] with a stated goal of maintaining compatibility with MacLisp while fixing many of its problems.

Contents

History

The Lisp language was invented in 1958 by John McCarthy while he was at Massachusetts Institute of Technology (MIT). [4] From its inception, Lisp was closely connected with the artificial intelligence (AI) research community, especially on PDP-10 systems. The 36-bit word size of the PDP-6 and PDP-10 was influenced by the usefulness of having two Lisp 18-bit pointers in one word: "The PDP-6 project started in early 1963, as a 24-bit machine. It grew to 36 bits for LISP, a design goal." [5] 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 named 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 extant Lisp systems became a growing problem.

Partly because of garbage collection (Lisp would use stop-and-copy garbage collection of its single heap for memory allocation [2] ) 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 creating Lisp machines: dedicated hardware for running Lisp environments and programs. An alternative was to use the more powerful commodity hardware which was becoming available, especially the Digital Equipment Corporation (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 able to run on stock hardware, [1] in contrast to Lisp Machine Lisp for the Lisp machines. [2] "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 [2] ) 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]

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. That Lisp was never fully functional, but was a test bed for implementing advanced compiler methods in a Lisp. Eventually the S-1 and NIL groups began collaborating.

Although unsuccessful in meeting its goals as a used language, NIL was important in several ways. First, it brought together Jon L. White, Guy L. Steele Jr., and Richard P. Gabriel, who were later to define Common Lisp. [1] Second, Jonathan Rees worked on part of the NIL project during a year away from Yale University. 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 named T. In part, NIL begat this name, since "T is not NIL". [7]

19581960196519701975198019851990199520002005201020152020
 LISP 1, 1.5, LISP 2(abandoned)
  Maclisp
  Interlisp
  MDL
  Lisp Machine Lisp
  Scheme  R5RS R6RS R7RS small
  NIL
  ZIL (Zork Implementation Language)
  Franz Lisp
  Common Lisp  ANSI standard
  Le Lisp
  MIT Scheme
  T
  Chez Scheme
  Emacs Lisp
  AutoLISP
  PicoLisp
  Gambit
  EuLisp
  ISLISP
  OpenLisp
  PLT Scheme   Racket
  GNU Guile
  Visual LISP
  Clojure
  Arc
  LFE
  Hy

Quotes

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

Related Research Articles

<span class="mw-page-title-main">Lisp (programming language)</span> Programming language family

Lisp is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation. Originally specified in 1960, Lisp is the second-oldest high-level programming language still in common use, after Fortran. Lisp has changed since its early days, and many dialects have existed over its history. Today, the best-known general-purpose Lisp dialects are Common Lisp, Scheme, Racket and Clojure.

<span class="mw-page-title-main">Lisp machine</span> Computer specialized in running Lisp

Lisp machines are general-purpose computers designed to efficiently run Lisp as their main software and programming language, usually via hardware support. They are an example of a high-level language computer architecture, and in a sense, they were the first commercial single-user workstations. Despite being modest in number Lisp machines commercially pioneered many now-commonplace technologies, including effective garbage collection, laser printing, windowing systems, computer mice, high-resolution bit-mapped raster graphics, computer graphic rendering, and networking innovations such as Chaosnet. Several firms built and sold Lisp machines in the 1980s: Symbolics, Lisp Machines Incorporated, Texas Instruments, and Xerox. The operating systems were written in Lisp Machine Lisp, Interlisp (Xerox), and later partly in Common Lisp.

<span class="mw-page-title-main">PDP-10</span> 36-bit computer by Digital (1966–1983)

Digital Equipment Corporation (DEC)'s PDP-10, later marketed as the DECsystem-10, is a mainframe computer family manufactured beginning in 1966 and discontinued in 1983. 1970s models and beyond were marketed under the DECsystem-10 name, especially as the TOPS-10 operating system became widely used.

Symbolics, Inc., was a privately held American computer manufacturer that acquired the assets of the former company and continues to sell and maintain the Open Genera Lisp system and the Macsyma computer algebra system.

Maclisp is a programming language, a dialect of the language Lisp. It originated at the Massachusetts Institute of Technology's (MIT) 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; Jon L. White was responsible for its later maintenance and development. The name Maclisp began being used in the early 1970s to distinguish it from other forks of PDP-6 Lisp, notably BBN Lisp.

Kent M. Pitman (KMP) is a programmer who has been involved for many years in the design, implementation, and use of systems based on the programming languages Lisp and Scheme. Since 2010, he has been President of HyperMeta, Inc.

Incompatible Timesharing System (ITS) is a time-sharing operating system developed principally by the MIT Artificial Intelligence Laboratory, with help from Project MAC. The name is the jocular complement of the MIT Compatible Time-Sharing System (CTSS).

<span class="mw-page-title-main">Guy L. Steele Jr.</span> American computer scientist (born 1954)

Guy Lewis Steele Jr. is an American computer scientist who has played an important role in designing and documenting several computer programming languages and technical standards.

Macsyma is one of the oldest general-purpose computer algebra systems still in wide use. It was originally developed from 1968 to 1982 at MIT's Project MAC.

Interlisp is a programming environment built around a version of the programming language Lisp. Interlisp development began in 1966 at Bolt, Beranek and Newman in Cambridge, Massachusetts with Lisp implemented for the Digital Equipment Corporation (DEC) PDP-1 computer by Danny Bobrow and D. L. Murphy. In 1970, Alice K. Hartley implemented BBN LISP, which ran on PDP-10 machines running the operating system TENEX. In 1973, when Danny Bobrow, Warren Teitelman and Ronald Kaplan moved from BBN to the Xerox Palo Alto Research Center (PARC), it was renamed Interlisp. Interlisp became a popular Lisp development tool for artificial intelligence (AI) researchers at Stanford University and elsewhere in the community of the Defense Advanced Research Projects Agency (DARPA). Interlisp was notable for integrating interactive development tools into an integrated development environment (IDE), such as a debugger, an automatic correction tool for simple errors, and analysis tools.

<span class="mw-page-title-main">Bill Gosper</span> American mathematician and programmer

Ralph William Gosper Jr., known as Bill Gosper, is an American mathematician and programmer. Along with Richard Greenblatt, he may be considered to have founded the hacker community, and he holds a place of pride in the Lisp community. The Gosper curve and the Gosper's algorithm are named after him.

T is a dialect of the Scheme programming language developed in the early 1980s by Jonathan A. Rees, Kent M. Pitman, and Norman I. Adams of Yale University as an experiment in language design and implementation.

Le Lisp is a programming language, a dialect of the language Lisp.

<span class="mw-page-title-main">Franz Lisp</span> Lisp programming language system

In computer programming, Franz Lisp is a discontinued Lisp programming language system written at the University of California, Berkeley by Professor Richard Fateman and several students, based largely on Maclisp and distributed with the Berkeley Software Distribution (BSD) for the Digital Equipment Corporation (DEC) VAX minicomputer. Piggybacking on the popularity of the BSD package, Franz Lisp was probably the most widely distributed and used Lisp system of the 1970s and 1980s.

Richard P. Gabriel is an American computer scientist known for his work in computing related to the programming language Lisp, and especially Common Lisp. His best known work was a 1990 essay "Lisp: Good News, Bad News, How to Win Big", which introduced the phrase Worse is Better, and his set of benchmarks for Lisp, termed Gabriel Benchmarks, published in 1985 as Performance and evaluation of Lisp systems. These became a standard way to benchmark Lisp implementations.

Portable Standard Lisp (PSL) is a programming language, a dialect of the language Lisp. PSL was inspired by its predecessor, Standard Lisp and the Portable Lisp Compiler. It is tail-recursive, late binding, and was developed by researchers at the University of Utah in 1980, which released PSL 3.1; development was handed over to developers at Hewlett-Packard in 1982 who released PSL 3.3 and up. Portable Standard Lisp was available as a kit containing a screen editor, a compiler, and an interpreter for several hardware and operating system computing platforms, including Motorola 68000 series, DECSYSTEM-20s, Cray-1s, VAX, and many others. Today, PSL is mainly developed by and available from Konrad-Zuse-Zentrum für Informationstechnik Berlin (ZIB). Its main modern use is as the underlying language for implementations of Reduce.

Daniel L. Weinreb was an American computer scientist and programmer, with significant work in the environment of the programming language Lisp.

The history of the programming language Scheme begins with the development of earlier members of the Lisp family of languages during the second half of the twentieth century. During the design and development period of Scheme, language designers Guy L. Steele and Gerald Jay Sussman released an influential series of Massachusetts Institute of Technology (MIT) AI Memos known as the Lambda Papers (1975–1980). This resulted in the growth of popularity in the language and the era of standardization from 1990 onward. Much of the history of Scheme has been documented by the developers themselves.

<span class="mw-page-title-main">David A. Moon</span> American computer scientist

David A. Moon is a programmer and computer scientist, known for his work on the Lisp programming language, as co-author of the Emacs text editor, as the inventor of ephemeral garbage collection, and as one of the designers of the Dylan programming language. Guy L. Steele Jr. and Richard P. Gabriel (1993) name him as a leader of the Common Lisp movement and describe him as "a seductively powerful thinker, quiet and often insulting, whose arguments are almost impossible to refute".

In a computer instruction set architecture (ISA), an execute instruction is a machine language instruction which treats data as a machine instruction and executes it.

References

  1. 1 2 3 4 Steele, Guy L. Jr.; Gabriel, Richard P. "The evolution of Lisp" (PDF). Retrieved 2017-08-05.
  2. 1 2 3 4 Gabriel, Richard P. (May 1985). Performance and evaluation of Lisp systems (PDF). MIT Press; Computer Systems Series. ISBN   978-0-262-07093-5. LCCN   85015161.
  3. Pitman, Kent M. "Brief History of the Lisp Language". Archived from the original on 2006-10-10. Retrieved 2006-10-12.
  4. McJones, Paul. "History of LISP" . Retrieved 2006-10-12.
  5. Hurley, Peter J. Stevens, Jack; Johnson, Lum (eds.). "The History of TOPS or Life in the Fast ACs". Google Groups. Retrieved 2018-11-28.
  6. Weinreb, Dan. "Dan Weinreb on NIL". PaulGraham.com. Retrieved 2018-11-28.
  7. 1 2 3 Shivers, Olin. "Olin Shivers: History of T". PaulGraham.com. Retrieved 2018-11-28.

Bibliography

Papers