SLIP programming language
Encyclopedia
SLIP is a list processing computer programming language, invented by Joseph Weizenbaum
in the 1960s. The name SLIP stands for Symmetric LIst Processor. It was first implemented as an extension to the Fortran
programming language, and later embedded into MAD
and ALGOL
.
purposes. The sublist indicator allowed it to be able to represent nested lists, such as (A, B, C, (1, 2, 3), D, E, F) where (1, 2, 3) is a sublist indicated by a cell in the '*' position in the list (A, B, C, *, D, E, F). The reader was essentially a state history stack—a good example of a memento pattern
-- where each cell pointed to the header of the list being read, the current position within the list being read, and the level or depth of the history stack.
Joseph Weizenbaum
Joseph Weizenbaum was a German-American author and professor emeritus of computer science at MIT.-Life and career:...
in the 1960s. The name SLIP stands for Symmetric LIst Processor. It was first implemented as an extension to the Fortran
Fortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...
programming language, and later embedded into MAD
MAD programming language
MAD is a programming language and compiler for the IBM 704 and later the IBM 709, IBM 7090, UNIVAC 1107, UNIVAC 1108, Philco 210-211, and eventually the IBM S/370 mainframe computers. Developed in 1959 at the University of Michigan by Bernard Galler, Bruce Arden and Robert M. Graham, MAD is a...
and ALGOL
ALGOL
ALGOL is a family of imperative computer programming languages originally developed in the mid 1950s which greatly influenced many other languages and became the de facto way algorithms were described in textbooks and academic works for almost the next 30 years...
.
General Overview
In a nutshell, SLIP consisted of a set of FORTRAN "accessor" functions which operated on circular doubly linked lists with fixed-size data fields. The "accessor" functions had direct and indirect addressing variants.List Representation
The list representation had four types of cell: a reader, a header, a sublist indicator, and a payload cell. The header included a reference count field for garbage collectionGarbage 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...
purposes. The sublist indicator allowed it to be able to represent nested lists, such as (A, B, C, (1, 2, 3), D, E, F) where (1, 2, 3) is a sublist indicated by a cell in the '*' position in the list (A, B, C, *, D, E, F). The reader was essentially a state history stack—a good example of a memento pattern
Memento pattern
The memento pattern is a software design pattern that provides the ability to restore an object to its previous state .The memento pattern is implemented with two objects: the originator and a caretaker. The originator is some object that has an internal state. The caretaker is going to do...
-- where each cell pointed to the header of the list being read, the current position within the list being read, and the level or depth of the history stack.