| パラダイム | マルチパラダイム:機能的、手続き的 |
|---|---|
| 家族 | リスプ |
| デザイン: | ジョン・L・ホワイト |
| 開発者 | ジョン・L・ホワイト、 ガイ・L・スティール・ジュニア、 リチャード・P・ガブリエル |
| 初登場 | 1979年 |
| タイピングの規律 | ダイナミック、強い |
| 実装言語 | VAX アセンブリ |
| プラットフォーム | ヴァックス |
| OS | VAX/VMS |
| 影響を受けた | |
| Lisp、Maclisp | |
| 影響を受けた | |
| コモンリスプ、[1] T | |
新しいLISPの実装(NIL)はプログラミング言語であり、言語Lispの方言であり、1970年代にマサチューセッツ工科大学(MIT)で開発され、言語Maclispの後継となることを目指していました。[1]これは32ビット実装であり、[2]デジタルイクイップメントコーポレーション( DEC)のVAXコンピュータへの対応でもありました。このプロジェクトはジョン・L・ホワイトによって率いられ、[3] MacLispとの互換性を維持しながら、多くの問題を修正することを目標としていました。
歴史
Lisp言語は、1958年にマサチューセッツ工科大学(MIT)在学中のジョン・マッカーシーによって発明されました。 [4] Lispは誕生当初から、特にPDP-10システムにおいて、人工知能(AI)研究コミュニティと密接に関係していました。PDP -6とPDP-10の36ビットワードサイズは、1ワードに2つのLisp 18ビットポインタを持つことの有用性に影響を受けました。「PDP-6プロジェクトは1963年初めに24ビットマシンとして始まりました。それは、設計目標であるLISPのために36ビットにまで成長しました。」[5] Lispは、有名なAIシステムSHRDLUの基礎となったプログラミング言語Micro Plannerの実装として使用されました。Lisp、特にMaclisp (MITのプロジェクトMACで生まれたためこのように名付けられました)は、 Macsymaコンピュータ代数システムの実装にも使用されました。 1970 年代に AI 研究から商業的な派生が生まれると、既存の Lisp システムのパフォーマンスが大きな問題になりました。
ガベージコレクション(Lispはメモリ割り当てのために単一ヒープのストップアンドコピーガベージコレクションを使用する[2] )と内部構造の表現のせいで、Lispは当時のメモリが限られた標準コンピュータハードウェア上で実行することが困難になりました。このため、Lisp環境とプログラムを実行するための専用ハードウェアであるLispマシンが作成されました。代替案は、利用可能になりつつあったより強力な汎用ハードウェア、特にDigital Equipment Corporation(DEC)VAXを使用することでした。
NILは1970年代半ばから後半にかけてMITで開発されたLispの実装であり、 Lispマシン用のLisp Machine Lispとは対照的に、標準ハードウェア上で実行可能なMaclispの現代的な後継となることを目指していました。[ 1 ]「もともとはMITでLispマシンLispが開発された後に標準ハードウェア上で動作する最初の現代的なLisp方言として設計されたが、Common Lispの設計に主に影響を与えたものの1つとなった。」( [2]の63/294ページ) MacsymaプログラムのユーザーはNILの潜在的なユーザーベースを大きく占めていたため、NILは大規模で複雑なシステムであることが必要であり、速度は必須でした。たとえば、Macsymaをサポートするには高速なbignumsが必要でした。なぜなら、NILは低速なbignumsでは失敗するからです。[6]その結果、NILはVAXアセンブリ言語の大きなベースを持つことになったのです。これらの要件により、非常に積極的で複雑な最適化戦略が時期尚早に適用され、最終的なシステムに悪影響を及ぼしました。[7]
NIL を書く作業と並行して、リチャード・P・ガブリエル率いるスタンフォード大学とローレンス・リバモア国立研究所の研究グループが、S-1 Mark IIAスーパーコンピュータで動作する Lisp の設計、S-1 Lisp を調査していました。この Lisp は完全に機能することはありませんでしたが、Lisp で高度なコンパイラー方式を実装するためのテストベッドでした。最終的に、S-1 グループと NIL グループは協力し始めました。
使用される言語としての目標を達成することはできなかったものの、NIL はいくつかの点で重要でした。まず、後にCommon Lisp を定義することになる Jon L. White、 Guy L. Steele Jr.、Richard P. Gabriel がNIL プロジェクトに参加したことです。[1]次に、Jonathan Rees はイェール大学を離れて 1 年間、NIL プロジェクトの一部に携わりました。イェール大学に戻ると、彼はコンピュータ サイエンス学部に雇われ、新しい Lisp を作成しました。これが、最適化されたネイティブ コードのSchemeシステムTになりました。NIL は、「T は NIL ではない」ことから、この名前が生まれました。[7]
引用
この種のプロジェクトの起源と最終的な失敗は、初期の議論の決まり文句の中に(後から考えれば)常にはっきりと見て取れます。重要なヒントとなるフレーズの 1 つは、常に「古いものをすべて捨てて、新しくやり直し、正しいことをする」というものです。
— オリン・シヴァーズ[7]
参考文献
- ^ abcd Steele, Guy L. Jr.; Gabriel, Richard P. 「Lisp の進化」(PDF) 。2017 年 8 月 5 日閲覧。
- ^ abcd Gabriel, Richard P. (1985 年 5 月). Lisp システムのパフォーマンスと評価(PDF) . MIT Press ; Computer Systems Series. ISBN 978-0-262-07093-5LCCN 85015161 。
- ^ Pitman, Kent M. 「Lisp 言語の簡潔な歴史」。2006 年 10 月 10 日時点のオリジナルよりアーカイブ。2006年 10 月 12 日閲覧。
- ^ McJones, Paul. 「LISP の歴史」。2006 年 10 月 12 日閲覧。
- ^ Hurley, Peter J. Stevens, Jack; Johnson, Lum (編著)。「TOPSの歴史、または高速ACでの生活」。Googleグループ。2018年11月28日閲覧。
- ^ ワインレブ、ダン。 「NILについてのダン・ワインレブ」。ポールグラハム.com 。2018年11月28日に取得。
- ^ abc Shivers, Olin. 「Olin Shivers: Tの歴史」PaulGraham.com . 2018年11月28日閲覧。
文献
- Brent T. Hailpern、Bruce L. Hitson。S-1 アーキテクチャ マニュアル。技術レポート 161 (STAN-CS-79-715)、スタンフォード大学電気工学部、1979 年 1 月。
- G. Burke. NIL 入門。マサチューセッツ工科大学コンピュータサイエンス研究所、1983 年 3 月。
- GS Burke、GJ Carrette、CR Eliot。リリース 0.259 の NIL ノート、マサチューセッツ工科大学コンピュータ サイエンス研究所、1983 年 6 月。
- GS Burke、GJ Carrette、CR Eliot。NIL リファレンス マニュアル。レポート MIT/LCS/TR-311、コンピュータ サイエンス研究所、マサチューセッツ工科大学、マサチューセッツ州ケンブリッジ、1983 年。
論文
- Steven Correll。S-1 ユニプロセッサ アーキテクチャ (SMA-4)。第 1 巻、第 4 章、S-1 プロジェクト 1979 年次報告書、ローレンス リバモア研究所、カリフォルニア州リバモア、1979 年。
- Jon L. White. Nil: 展望。1979 Macsyma ユーザーズ カンファレンスの議事録、ワシントン DC、1979 年 6 月。
- Rodney A. Brooks、Richard P. Gabriel、Guy L. Steele Jr. S-1 Common Lisp 実装。1982 ACM シンポジウム LISP および関数型プログラミングの議事録、ピッツバーグ、1982 年、108 ~ 113 ページ。ACM DL
- Rodney A. Brooks、Richard P. Gabriel、Guy L. Steele Jr. 構文スコープ付き LISP の最適化コンパイラ。1982 年コンパイラ構築シンポジウムの議事録、ボストン、1982 年 6 月、261 ~ 275 ページ。ACM DL
- Mark Smotherman。S-1 スーパーコンピュータ (1975–1988)。Web サイト、最終更新日 2004 年 4 月 24 日。http://www.cs.clemson.edu/~mark/s1.html
