HOME

TheInfoList



OR:

MultiLisp is a functional
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
, a
dialect The term dialect (from Latin , , from the Ancient Greek word , 'discourse', from , 'through' and , 'I speak') can refer to either of two distinctly different types of linguistic phenomena: One usage refers to a variety of a language that is a ...
of the language Lisp, and of its dialect Scheme, extended with constructs for parallel computing execution and
shared memory In computer science, shared memory is memory that may be simultaneously accessed by multiple programs with an intent to provide communication among them or avoid redundant copies. Shared memory is an efficient means of passing data between progr ...
. These extensions involve
side effects In medicine, a side effect is an effect, whether therapeutic or adverse, that is secondary to the one intended; although the term is predominantly employed to describe adverse effects, it can also apply to beneficial, but unintended, consequence ...
, rendering MultiLisp nondeterministic. Along with its parallel-programming extensions, MultiLisp also had some unusual
garbage collection Waste collection is a part of the process of waste management. It is the transfer of solid waste from the point of use and disposal to the point of treatment or landfill. Waste collection also includes the curbside collection of recyclabl ...
and task scheduling algorithms. Like Scheme, MultiLisp was optimized for symbolic computing. Unlike some parallel programming languages, MultiLisp incorporated constructs for causing side effects and for explicitly introducing parallelism. It was designed by Robert H. Halstead Jr., in the early 1980s for use on the 32-processor Concert
multiprocessor Multiprocessing is the use of two or more central processing units (CPUs) within a single computer system. The term also refers to the ability of a system to support more than one processor or the ability to allocate tasks between them. There ar ...
then being developed at
Massachusetts Institute of Technology The Massachusetts Institute of Technology (MIT) is a private land-grant research university in Cambridge, Massachusetts. Established in 1861, MIT has played a key role in the development of modern technology and science, and is one of the ...
(MIT) and implemented in
Interlisp Interlisp (also seen with a variety of capitalizations) is a programming environment built around a version of the programming language Lisp. Interlisp development began in 1966 at Bolt, Beranek and Newman (renamed BBN Technologies) in Cambridge, ...
. It influenced the development of the Scheme dialects
Gambit A gambit (from Italian , the act of tripping someone with the leg to make them fall) is a chess opening in which a player sacrifices with the aim of achieving a subsequent advantage. The word '' gambit'' is also sometimes used to describe sim ...
, and Interlisp-
VAX VAX (an acronym for Virtual Address eXtension) is a series of computers featuring a 32-bit instruction set architecture (ISA) and virtual memory that was developed and sold by Digital Equipment Corporation (DEC) in the late 20th century. The V ...
.


PCALL and FUTURE

MultiLisp achieves parallelism with the PCALL macro, where (PCALL Fun A B C ...) is equivalent to (Fun A B C ...) except that the arguments A, B, C, etc. are explicitly allowed to be evaluated in parallel; this circumvents the usual order of evaluation, which is sequential and left to right. It also makes use of a parallel programming construct called
futures Futures may mean: Finance *Futures contract, a tradable financial derivatives contract *Futures exchange, a financial market where futures contracts are traded * ''Futures'' (magazine), an American finance magazine Music * ''Futures'' (album), a ...
, which resembles forking, combined with
lazy evaluation In programming language theory, lazy evaluation, or call-by-need, is an evaluation strategy which delays the evaluation of an expression until its value is needed ( non-strict evaluation) and which also avoids repeated evaluations (sharing). The ...
. Using this construct, an expression such as (
cons In computer programming, ( or ) is a fundamental function in most dialects of the Lisp programming language. ''constructs'' memory objects which hold two values or pointers to two values. These objects are referred to as (cons) cells, conses, ...
(FUTURE A) (FUTURE B))
can be written, which will overlap the evaluation of the expressions A and B, not only with each other, but with computations that use the result of the
cons In computer programming, ( or ) is a fundamental function in most dialects of the Lisp programming language. ''constructs'' memory objects which hold two values or pointers to two values. These objects are referred to as (cons) cells, conses, ...
call, until an operation is performed that needs correct information about the value of A or B.


See also

* Speculative evaluation


References

* * * * * * {{Lisp programming language Concurrent programming languages Dynamically typed programming languages Functional languages Lisp programming language family Multi-paradigm programming languages