New Implementation of LISP ( NIL ) は、1970 年代にマサチューセッツ工科大学(MIT)で開発されたLisp言語の方言であるプログラミング言語で、Maclisp言語の後継となることを意図していました。[ 1 ]これは32 ビット実装であり、[ 2 ] Digital Equipment Corporation (DEC) のVAXコンピュータへの対応策の一つでもありました。このプロジェクトは Jon L White が主導し、[ 3 ] MacLisp との互換性を維持しながら多くの問題を修正することを目標としていました。
Lisp言語は、ジョン・マッカーシーがマサチューセッツ工科大学(MIT)に在籍していた1958 年に発明されました。 [ 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 ] [ 2 ]「MIT で Lisp Machine Lisp が開発された後、市販のハードウェア上で動作する最初の現代的な Lisp 方言として設計された NIL は、Common Lisp の設計に大きな影響を与えた 1 つです。」( [ 2 ]の 63/294 ページ) Macsymaプログラムのユーザーは NIL の大きな潜在的ユーザーベースであったため、NIL は大規模で複雑なシステムである必要があり、速度が不可欠でした。たとえば、 NIL は遅い多倍長数では失敗するため、Macsyma をサポートするには高速な多倍長数が必須でした。 [ 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が集まった。 [ 1 ]次に、Jonathan Reesはイェール大学を離れていた1年間、NILプロジェクトの一部に取り組んだ。イェール大学に戻った彼は、コンピュータサイエンス学科に雇われ、新しいLispを書いた。それが最適化されたネイティブコードSchemeシステムTとなった。この名前は、部分的にはNILに由来しており、「TはNILではない」という意味である。[ 7 ]
こうしたプロジェクトの始まりと最終的な失敗は、初期の議論における決まり文句を見れば(後から振り返ってみれば)必ず明らかになる。その典型的な例が、「古いものは全て捨てて、一からやり直して、とにかく正しいことをしよう」といった類のフレーズだ。
—オリン・シヴァーズ[ 7 ]