マルチリスプ

マルチリスプ
パラダイムマルチパラダイム関数型命令型並行型メタ
家族Lisp
デザイン:ロバート・H・ハルステッド・ジュニア
開発者マサチューセッツ工科大学(MIT
初登場1980年; 45年前 (1980年
タイピングの規律ダイナミック潜在的強力
範囲語彙
実装言語インターリスプ
プラットフォームコンサートマルチプロセッサ
ライセンス独自の
影響を受けた
LispScheme
影響を受けた
ギャンビットインターリスプ- VAX

MultiLispは関数型 プログラミング言語ありLisp言語およびその方言Schemeを並列計算実行と共有メモリのための構造で拡張したものです。これらの拡張は副作用を伴うため、MultiLispは非決定性となります。並列プログラミング拡張に加えて、MultiLispには独特なガベージコレクションとタスクスケジューリングアルゴリズムも備わっていました。Schemeと同様に、MultiLispはシンボリックコンピューティングに最適化されていました。一部の並列プログラミング言語とは異なり、MultiLispには副作用を引き起こしたり、明示的に並列性を導入したりするための構造が組み込まれています。

これは1980年代初頭にロバート・H・ハルステッド・ジュニアによって設計され、当時マサチューセッツ工科大学(MIT)で開発されていた32プロセッサのマルチプロセッサConcert 上での使用を想定してInterlispで実装されました。Scheme方言であるGambit [ 1]やInterlisp- VAXの開発に影響を与えました

PCALLと未来

MultiLispはPCALLマクロで並列処理を実現しており、

(PCALL Fun A B C ...)

は以下と同等である

(Fun A B C ...)

ただし、引数 A, B, C,等は明示的に並列評価が許可されています。これにより、通常の評価順序(左から右への順次評価)が回避されます。また、 futuresと呼ばれる並列プログラミング構造も利用しています。これはforkinglazyevaluationを組み合わせたものです。この構造を用いると、次のような式は

(cons (FUTURE A) (FUTURE B))

次のように記述できます。この記述では、式 A と式 B の評価が、 A または B の値に関する正しい情報を必要とする操作が実行されるまで、 相互にオーバーラップされるだけでなく、cons呼び出しの結果を使用する計算ともオーバーラップされます。

参照

参考文献

  1. ^ WikiSysop;ミカエルム;ブジュルシエ;セデンズ、ダン (2019-02-06)。 「ガンビット」2019年4月21日に取得
  • ハルステッド, ロバート H. Jr. (1985年10月). 「MultiLisp: 並行記号計算言語」. ACM Transactions on Programming Languages and Systems . 7 (4): 501– 538. doi : 10.1145/4472.4478 . S2CID  1285424.
  • クーメン、ヨハネス AGM (1980). Interlisp仮想マシン:その設計とMultilispとしての実装に関する研究(修士課程). ブリティッシュコロンビア大学.
  • Bates, Raymond L.; Dyer, David; Koomen, Johannes AGM (1982年8月15~18日). 「VAXにおけるInterlispの実装」. LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming . ACM symposium on LISP and functional programming.ペンシルベニア州ピッツバーグ(アメリカ合衆国). pp.  81~ 87.
  • ハルステッド、ロバート・H・ジュニア (1984). MultiLisp言語:マルチプロセッサ向けLisp . 第5世代コンピュータ会議. 東京.
  • Martins, WS「関数型言語の並列実装」。関数型言語の並列実装に関する第4回国際ワークショップ議事録:92。
  • Skillicorn, David B.; Talia, Domenico (1998年6月). 「並列計算のためのモデルと言語」. ACM Computing Surveys . 30 (2): 123– 169. doi : 10.1145/280277.280278 . S2CID  9308854.
「https://en.wikipedia.org/w/index.php?title=MultiLisp&oldid=1188163286」から取得