MultiLisp
| MultiLisp | |
|---|---|
| Paradigms | Multi-paradigm: functional, imperative, concurrent, meta |
| Family | Lisp |
| Designed by | Robert H. Halstead Jr. |
| Developer | Massachusetts Institute of Technology (MIT |
| First appeared | 1980 |
| Typing discipline | Dynamic, latent, strong |
| Scope | Lexical |
| Implementation language | Interlisp |
| Platform | Concert multiprocessor |
| License | Proprietary |
| Influenced by | |
| Lisp, Scheme | |
| Influenced | |
| Gambit, Interlisp-VAX | |
MultiLisp is a functional programming language, a dialect of the language Lisp, and of its dialect Scheme, extended with constructs for parallel computing execution and shared memory. These extensions involve side effects, rendering MultiLisp nondeterministic. Along with its parallel-programming extensions, MultiLisp also had some unusual garbage collection 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 then being developed at Massachusetts Institute of Technology (MIT) and implemented in Interlisp. It influenced the development of the Scheme dialects 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 needs correct information about the value of A or B.
See also
References
- Halstead, Robert H. Jr. (October 1985). "MultiLisp: A Language for Concurrent Symbolic Computation". ACM Transactions on Programming Languages and Systems. 7 (4): 501–538. doi:10.1145/4472.4478. S2CID 1285424.
- Koomen, Johannes A. G. M. (1980). The Interlisp Virtual Machine: A Study of its Design and its Implementation as Multilisp (MSc). University of British Columbia.
- Bates, Raymond L.; Dyer, David; Koomen, Johannes A. G. M. (15–18 August 1982). "Implementation of Interlisp on the VAX". LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming. ACM symposium on LISP and functional programming. Pittsburgh, Pennsylvania, United States. pp. 81–87.
- Halstead, Robert H. Jr. (1984). The MultiLisp Language: Lisp for a Multiprocessor. Conference on 5th Generation Computers. Tokyo, Japan.
- Martins, W.S. "Parallel Implementations of Functional Languages". Proceedings of the 4th Int. Workshop on the Parallel Implementation of Functional Languages: 92.
- Skillicorn, David B.; Talia, Domenico (June 1998). "Models and languages for parallel computation". ACM Computing Surveys. 30 (2): 123–169. doi:10.1145/280277.280278. S2CID 9308854.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.