| パラダイム | マルチパラダイム:機能的、手続き的、反射的、メタ |
|---|---|
| 家族 | リスプ |
| デザイン: | リチャード・グリーンブラット ジョン・L・ホワイト |
| 開発者 | MIT :プロジェクト MAC |
| 初登場 | 1966年7月 |
| タイピングの規律 | ダイナミック、強い |
| 実装言語 | アセンブリ言語、PL/I |
| プラットフォーム | PDP-6、PDP-10 |
| OS | 互換性のないタイムシェアリングシステム、TOPS-10、TOPS-20、Multics |
| ファイル名拡張子 | .lisp、.fasl |
| 影響を受けた | |
| リスプ1.5 | |
| 影響を受けた | |
| Common Lisp、Emacs Lisp | |
Maclisp(またはMACLISP、時にはMacLispやMacLISPと表記される)はプログラミング言語であり、Lisp言語の方言である。 1960年代後半にマサチューセッツ工科大学(MIT)のプロジェクト MAC [1](接頭辞の由来)で生まれ、Lisp 1.5 [2]をベースにしていた。PDP -6のオリジナルコードベースの主な開発者はリチャード・グリーンブラットであり、[1]その後のメンテナンスと開発はジョン・L・ホワイトが担当した。Maclispという名前は、 1970年代初頭に、PDP-6 Lispの他のフォーク、特にBBN Lispと区別するために使われ始めた。
歴史
Maclisp はLisp 1.5の後継です。[3] Maclisp は Lisp 1.5 とは異なり、変数の動的な値にアクセスして保存するために値セルを使用します。[4] Lisp 1.5 では、変数の値を決定するために連想リストの線形検索を使用していました。[5] Maclisp の変数評価は高速ですが、変数のセマンティクスが異なります。 Maclisp では、読み取りマクロを使用して、より読みやすい入力と出力(入力/出力(I/O)と呼ばれます) を作成しました。 を入力する代わりに、 を入力して同じS 式を取得できます。 両方の実装とも関数をプロパティリストに配置しますが、Maclisp では関数を定義する構文が異なります。[6] Maclisp には、オンデマンドのロード機能もあります。[7](QUOTE A)'A
Maclisp は、非互換タイムシェアリングシステム(ITS)を実行するDigital Equipment Corporation PDP-6およびPDP-10コンピュータで始まりました。その後、 Timesharing / Total Operating System、TOPS-10、TOPS-20など、他のすべての PDP-10 オペレーティングシステムに移植されました。元の実装はアセンブリ言語でしたが、 Multicsでの後の実装ではPL/I を使用しました。Maclisp は、その存続期間中に大幅に進化しました。他の言語システムでは通常メジャーリリース番号に対応する主要な機能[どの機能? ]が追加されました。[疑わしい–議論]
Maclisp は、 Macsyma コンピュータ代数システム(CAS) または記号代数プログラムを実装するために使用されました。Macsyma の開発は、 Maclisp のいくつかの機能[どの機能? ] の原動力にもなりました。SHRDLUブロックワールド プログラムは Maclisp で記述されたため、この言語は1980 年代初期まで人工知能(AI) 研究コミュニティで広く使用されていました。また、 PlannerやSchemeなどの他のプログラミング言語を実装するためにも使用されました。Multics Maclisp は、最初の Lisp ベースのEmacs を実装するために使用されました。
Maclisp は影響力のある Lisp 実装でしたが、現在は積極的にメンテナンスされていません。現在は PDP-10エミュレーターで実行され、初期の AI プログラムの実験に使用できます。
特徴
Maclisp は、コンスセル、アトム (後にシンボルと呼ばれる)、整数、浮動小数点数という少数の固定されたデータ型から始まりました。後に追加されたのは、決してファーストクラスのデータ型ではなかった配列、任意精度の整数(bignum)、文字列、タプルです。すべてのオブジェクト (inum を除く) はポインターとして実装され、そのデータ型は、それが指すメモリ ブロックによって決定されました (小さな数値 (inum) の場合は特別です)。
プログラムはインタープリタまたはコンパイルされる。コンパイルされた動作は、SPECIALと宣言されない限り、コンパイルされたコードではローカル変数がデフォルトで字句解析的であることを除いて、インタープリタの場合と同じである。 [8]また、CARやCDRなどのインライン演算ではエラーチェックが行われない。Ncomplrコンパイラ(1970年代半ば)はLisp言語に高速な数値サポートを導入し、データ型に応じてディスパッチされるインタープリタルーチンを呼び出すのではなく、演算用のマシンコード(命令)を生成した。これにより、スカラー演算に関してLispの演算速度はFortranに匹敵するようになった(ただし、Fortranの配列とループの実装ははるかに高速であった)。
オリジナル バージョンは、PDP-10 の18 ビット ワードメモリ アドレスによって制限されていたため、実装を無駄なくシンプルに保つために多大な労力が費やされました。Multics Maclisp は、はるかに大きなアドレス空間を持っていましたが、使用コストが高かったです。PDP -10のメモリと処理能力を超えたとき、Lisp マシンが発明されました。Lispマシン Lisp は、 Maclisp の直接の派生です。他のいくつかのLisp方言も使用されていましたが、コミュニティを統一する必要性から、現代のCommon Lisp言語が生まれました。
名前
MaclispはProject MACにちなんで名付けられ、AppleのMacintosh (Mac)コンピュータやジョン・マッカーシーとは無関係である。Macintosh用のさまざまなLispシステムは、Maclispと特に類似点はない。[9]
参考文献
- ^ ab レヴィ、スティーブン(1984)。ハッカー:コンピュータ革命の英雄。ダブルデイ。ISBN 0-385-19195-2。
- ^ Project MAC Progress Report IV: July 1966 to July 1967 (PDF) (レポート). ndp 19. 2016年3月8日時点のオリジナル(PDF)よりアーカイブ。
ビジョンラボプログラムのほとんどで使用される高水準言語は、PDP-6 LISP システムです。 このシステムは主に LISP 1.5 プログラミング言語に基づいていますが、さまざまな方法で大幅に変更されています。 これらには、他の言語で書かれたプログラムとのリンク機能など、多くの新しい機能とサービスが含まれています。
- ^ ムーン 1974、1 ページ
- ^ ムーン 1974、47 ページ
- ^ Lisp 1.5 p. 13 では、環境内のアトムの評価は で行われます。これには、連想リスト の線形検索が含まれます。グローバル定数とエラーを含むより複雑な説明は、p. 71 に記載されています。連想リストを検索する前に、プロパティ リストの線形検索を実行します。
ea(cdr (assoc e a))a - ^ Maclisp では を使用します
defun。Lisp 1.5 では を使用しますdefine。 - ^ Moon 1974、p. 107;
autoloadプロパティ。 - ^ Pitman, Kent (2007 年 12 月 16 日). 「改訂版 Maclisp マニュアル (The Pitmanual)、日曜朝版」. maclisp.info . HyperMeta, Inc. 宣言とコンパイラ、概念「変数」 . 2018 年10 月 20 日閲覧。
バインドする変数が特殊であると宣言されている場合、バインディングはインタープリターが変数をバインドする方法を模倣するコードとしてコンパイルされます。
- ^ Pitman, Kent (2007 年 12 月 16 日)。「The Revised Maclisp Manual (The Pitmanual)、Sunday Morning Edition」。maclisp.info。HyperMeta Inc. p. 1 FAQ q1。2018年10 月 20 日閲覧。Project
MAC は Apple の「Mac」とは何の関係もありません。MACLISP も同様です。
外部リンク
- http://www.softwarepreservation.org/projects/LISP/maclisp_family/ には Maclisp の参考文献が掲載されています。
- John L. White。暫定 LISP ユーザー ガイド。人工知能メモ No. 190、Project MAC、マサチューセッツ工科大学、1970 年 3 月、87 ページ。ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-190.pdf には、「'MACLISP' は Project MAC の人工知能グループで使用されているプログラミング言語 LISP の PDP/6 実装を指します」と記載されています。
- 「1973 年と 1974 年に、David A. Moon は、 Multics の下で Honeywell 6180 に MacLisp を実装する取り組みを主導しました。このプロジェクトの一環として、彼は MacLisp の最初の包括的なリファレンス マニュアルを書きました。これは「Moonual」としてよく知られています。」[Steele and Gabriel 1993]
- Jon L. White [JONL]、Eric Rosen [ECR]、Richard M. Stallman [RMS]、Guy L. Steele Jr. [GLS]、Howard I. Cannon [HIC]、Bob Kerns [RWK]。LISP ニュース。MacLisp リリース ノート。
- Jon L. White. LISP: プログラムはデータ: MacLISP の歴史的観点。1977 MACSYMA ユーザーズ カンファレンスの議事録。NASA 科学技術情報局 (ワシントン DC、1977 年 7 月)、181 ~ 189 ページ。PDF
- マッカーシー、ジョン、エイブラハムズ、ポール W.、エドワーズ、ダニエル J.、ハート、ティモシー P.、レビン、マイケル I. (1985) [1962]。LISP 1.5プログラマーズ マニュアル(第 2 版) 。MIT プレス。ISBN 0-262-13011-4。
- Moon, David (1974). Maclisp リファレンス マニュアル(PDF)。2011-10-05 にオリジナルからアーカイブ(PDF)されました。
- ケント・ピットマン著『改訂版 Maclisp マニュアル』(1983 年)
- Multics MACLISP コンパイラ (1977)、バーナード グリーンバーグ著
