MacLISPについて
MacLISPはLISP
プログラミング言語の一形式で、
1960年代後半にMITの
Project MACにおいて開発されました。
リチャード・グリーンブラットが中心となって、当時の
PDP-6コンピュータ向けにその基盤を作成しました。その後、Jon L. Whiteが保守やさらなる開発を担いました。
1970年代に入ると、他のLISP処理系との競合もあり、「MacLISP」という名前が定着しました。
動作環境と初期の実装
この言語はDECの
PDP-6や
PDP-10システム上で動作しました。初期の段階では、
オペレーティングシステムとしてはITSのみでしたが、その後は
PDP-10上の他のOSでも動作するようになりました。最初は
PDP-10の
アセンブリ言語で書かれ、後にMultics上では
PL/I|PL_Iを使用して移植されています。
MacLISPは、他の言語処理系がバージョン番号を増加させる通常のプロセスとは異なり、持続的に大幅な機能追加が行われました。これによって、ユーザーはより多くの機能を享受できるようになりました。
影響と利用
MacLISPは
数式処理システムである
Macsymaの実装にも利用され、このシステムのいくつかの機能もMacLISPに取り入れられました。また、自然言語処理システム
SHRDLUの開発にも寄与し、
1980年代初頭には
人工知能の研究において広く使用されました。さらに、
Plannerや
Schemeなどの他の
プログラミング言語の実装でもベースとなりました。
Multics上のMacLISPは、LISPに基づく
EmacsであるMultics
Emacsの実装にも関わっています。これにより、MacLISPは様々な分野において影響を与えた言語として認識されています。
現在の状況
しかしながら、現代においてはMacLISPの保守はほとんど行われていません。とはいえ、
PDP-10エミュレータを利用すれば、古いAIプログラムを実行することが可能です。これにより、当時のプログラムの動作を確認することができます。
データ型と実行形式
MacLISPの初期バージョンでは、限られたデータ型(CONSセル、アトム、
整数、
浮動小数点数など)しか存在しませんでしたが、後に
配列や多倍長
整数、
文字列、タプルなどが追加されました。
整数以外のオブジェクトはポインタとして実装され、そのデータ型はポインタが参照するアドレスによって判断されました。
プログラムは
インタプリタでも
コンパイラでも実行でき、
コンパイラは変数スコープが制限される点を除けば
インタプリタと同様の機能を持っています。
1970年代中頃には、数値演算性能に優れた
コンパイラが登場しました。この
コンパイラによって、
整数演算ではFORTRANに匹敵する性能が実現されましたが、
配列やループ処理の速度ではFORTRANが依然として優れていました。
初期のMacLISPは
PDP-10の18ビット
アドレス空間に制限されており、さまざまな実装上の制約がありました。Multics環境ではより広い
アドレス空間が利用可能でしたが、それ自体が普及していなかったため、限界がありました。
人工知能で必要となるメモリや処理能力が
PDP-10の限界を超えたことを受けて、
LISPマシンが開発されました。この
LISPマシン上で動作するLISPは、MacLISPの後継にあたります。
加えて、多くのLISP処理系が異なるコミュニティで開発された結果、最終的には
Common Lispという統合された言語が誕生しました。MacLISPという名称はMITの
Project MACに由来していますが、
AppleのMacとは特に関連性はありません。