MultiLisp

MultiLisp

MultiLisp is a functional programming language and dialect of the Lisp dialect Scheme, extended with constructs for parallel execution and shared memory; MultiLisp is implemented in Interlisp. These extensions involve side effects, rendering MultiLisp non-deterministic. In addition to its parallel-programming extensions, MultiLisp also had some unusual garbage collection and task scheduling algorithms. Like Scheme, MultiLisp is oriented toward symbolic computation. Unlike some parallel programming languages, MultiLisp incorporates constructs for causing side effects and for explicitly introducing parallelism. It was designed by Robert H. Halstead in the early 1980s for use on the 32-processor Concert multiprocessor being developed at MIT. It has influenced the development of the Scheme dialect Gambit [1], and Interlisp-VAX.

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, which resembles forking, combined with Lazy evaluation. Using this construct, an expression such as

(cons (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 call, until an operation is performed that requires actual information about the value of A or B.

See also

  • Speculative evaluation

References

  • R. H. Halstead, "MultiLisp: A Language for Concurrent Symbolic Computation", TOPLAS, October 1985
  • Koomen, J.A.G.M., "The Interlisp Virtual Machine: A Study of its Design and its Implementation as Multilisp", Master's thesis, University of British Columbia, 1980
  • Raymond L. Bates, David Dyer, Johannes A. G. M. Koomen "Implementation of Interlisp on the VAX" pp81-87 in ACM Proceedings of the 1982 ACM Conference on LISP and Functional Programming, Pittsburgh, Pennsylvania, United States
  • Halstead, R.H.jr. The MULTILISP Language: LISP for a Multiprocessor. Conf. on 5th Generation Computers, Tokyo, 1984
  • Halstead, Robert H. Jr., "MULTILISP: a language for concurrent symbolic computation" in TOPLAS 7(4) October 1985
  • W.S. Martins "Parallel Implementations of Functional Languages" In Proceedings of the 4th Int. Workshop on the Parallel Implementation of Functional Languages, 92
  • Skillicorn, David B. and Talia, Domenico "Models and languages for parallel computation" pp123-169 in ACM Computing Surveys 30(2) June 1998

Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • Futures and promises — In computer science, future, promise, and delay refer to constructs used for synchronization in some concurrent programming languages. They describe an object that acts as a proxy for a result that is initially not known, usually because the… …   Wikipedia

  • Valor futuro — En Programación, un valor futuro (también llamado un futuro o una promesa) es un remplazo para un resultado que todavía no está disponible, generalmente debido a que su cómputo todavía no ha terminado, o su transferencia por la red no se ha… …   Wikipedia Español

  • List of programming languages by category — Programming language lists Alphabetical Categorical Chronological Generational This is a list of programming languages grouped by category. Some languages are listed in multiple categories. Contents …   Wikipedia

  • Speculative execution — In computer science, speculative execution is the execution of code, the result of which may not be needed. In the context of functional programming, the term speculative evaluation is used instead.TypesGenerally, statements and definitions in a… …   Wikipedia

  • Concurrent computing — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent c …   Wikipedia

  • Bert Halstead — is the chief architect at Curl, Inc., where he has worked for several years on the design and implementation of the Curl content language. Curl is a language that aims to ease the implementation of applications that would otherwise use Java or… …   Wikipedia

  • Список языков программирования по категориям — Списки языков программирования По категориям Хронологический Генеалогический Приведён список языков программирования, сгруппированных по категориям. Некоторые языки попали в несколько категорий. Содержание …   Википедия

Share the article and excerpts

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