マックリスプ

マックリスプ
パラダイムマルチパラダイム機能的手続き的反射的メタ
家族Lisp
デザイン:リチャード・グリーンブラットジョン・L・ホワイト
開発者MITプロジェクトMAC
初登場1966年7月 (1966-07年
タイピングの規律ダイナミック力強い
実装言語アセンブリ言語PL/I
プラットフォームPDP-6PDP-10
OS互換性のないタイムシェアリングシステムTOPS-10TOPS-20Multics
ファイル名拡張子.lisp.fasl
影響を受けた
Lisp 1.5
影響を受けた
Common LispEmacs Lisp

Maclisp(またはMACLISP、時にはMacLispまたはMacLISPと表記される)はプログラミング言語であり、Lisp言語の方言である。1960年代後半にマサチューセッツ工科大学(MIT)のプロジェクト MAC [ 1 ](接頭辞の由来)で生まれ、 Lisp 1.5 [ 2 ]をベースにしていた。PDP -6のオリジナルコードベースの主な開発者はRichard Greenblattであり、[ 1 ]その後の保守と開発は Jon L. White が担当した。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は、Digital Equipment CorporationのPDP-6およびPDP-10コンピュータ上で非互換タイムシェアリングシステム(ITS)を実行するコンピュータで開発されました。その後、Timesharing / Total Operating SystemTOPS-10TOPS-20など、他のすべてのPDP-10オペレーティングシステムに移植されました。当初の実装はアセンブリ言語でしたが、後にMultics上でPL/Iを使用した実装が行われました。Maclispは、その生涯を通じて大きく発展しました。他の言語システムでは通常メジャーリリース番号に対応するような主要機能が追加されました。

Maclispは、Macsyma数式処理システム(CAS)、つまり記号代数プログラムの実装に使用されました。Macsymaの開発は、Maclispのいくつかの機能にも影響を与えました。SHRDLUブロックワールドプログラムはMaclispで記述されたため、この言語は1980年代初頭まで人工知能(AI)研究コミュニティで広く使用されていました。また、 PlannerSchemeといった他のプログラミング言語の実装にも使用されました。Multics Maclispは、最初のLispベースのEmacsの実装に使用されました。

Maclispは影響力のあるLisp実装でしたが、現在は積極的にメンテナンスされていません。現在ではPDP-10エミュレータ上で動作し、初期のAIプログラムの実験に使用できます。

1958 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020
 LISP 1、1.5、LISP 2 (廃止)
 マックリスプ
 インターリスプ
 MDL
 Lispマシン Lisp
 スキーム R5RS  R6RS  R7RS 小型
 ゼロ
 ZIL (Zork 実装言語)
 フランツ・リスプ
 ミューリスプ
 コモンリスプ ANSI規格
 ル・リスプ
 MITスキーム
 XLISP
 T
 シェ・スキーム
 Emacs Lisp
 オートリスプ
 ピコリスプ
 ギャンビット
 ユーリスプ
 ISLISP
 オープンリスプ
 PLTスキーム ラケット
 ニューリスプ
 GNUガイル
 ビジュアルLISP
 クロージュア
 アーク
 LFE
 ハイ

特徴

Maclispは、コンスセル、アトム(後にシンボルと呼ばれる)、整数浮動小数点数といった少数の固定されたデータ型から始まりました。後に追加されたのは、配列(ファーストクラスデータ型ではありませんでした)、任意精度整数(bignum)、文字列タプルです。すべてのオブジェクト(inumを除く)はポインタとして実装され、そのデータ型はポインタが指すメモリブロックによって決定されました。小さな数値(inum)については特別なケースが存在します。

プログラムはインタープリタ型コンパイル型がある。コンパイルされたプログラムの動作はSPECIAL宣言がない限り、コンパイルされたコードではローカル変数がデフォルトで字句解析的であることと、 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はMacよりも数十年も前に登場し、ジョン・マッカーシーとも無関係です。Macintosh向けの様々なLispシステムは、Maclispと特に類似点はありません。[ 9 ]

参考文献

  1. ^ a bレヴィ、スティーブン(1984年)『ハッカー:コンピュータ革命の英雄たち』ダブルデイ社、ISBN 0-385-19195-2
  2. ^ Project MAC Progress Report IV: July 1966 to July 1967 (PDF) (Report). ndp 19. 2016年3月8日時点のオリジナル(PDF)からのアーカイブ。ビジョンラボラトリープログラムの大部分で使用される高水準言語は、PDP-6 LISPシステムです。このシステムは主にLISP 1.5プログラミング言語に基づいていますが、様々な点で大幅に改良されています。これには、他の言語で書かれたプログラムとのリンク機能など、多くの新しい機能とサービスが含まれています。
  3. ^ムーン 1974、1ページ
  4. ^ムーン 1974、47ページ
  5. ^ Lisp 1.5 p. 13 では、環境内のアトムの評価はによって行われます。これは連想リスト の線形探索を伴います。グローバル定数とエラーを含むより詳細な説明は p. 71 に記載されています。連想リストを検索する前に、プロパティリスト の線形探索を行います。ea(cdr (assoc e a))a
  6. ^ Maclisp では を使用しますdefun。Lisp 1.5 では を使用しますdefine
  7. ^ Moon 1974、p. 107;autoloadプロパティ。
  8. ^ Pitman, Kent (2007年12月16日). 「改訂版 Maclisp マニュアル (The Pitmanual), Sunday Morning Edition」 . maclisp.info . HyperMeta, Inc. 宣言とコンパイラ、概念「変数」. 2018年10月20日閲覧。バインドされる変数が特殊変数として宣言されている場合、そのバインドはインタープリタが変数をバインドする方法を模倣するコードとしてコンパイルされます。
  9. ^ 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も同様です。