MENU

Lispとは|世界最古級の高水準言語と人工知能の母

Lisp アイキャッチ
Lisp

Lispは1958年に米マサチューセッツ工科大学(MIT)のJohn McCarthyによって設計された、現存するもっとも古い高水準プログラミング言語の一つである。「LISt Processor」の略にふさわしく、コードもデータも括弧で囲まれたリスト(S式)で表現する独特の文法を持つ。条件分岐、再帰、ガベージコレクション、シンボル処理など、その後の言語設計に決定的な影響を与えた概念を最初期に取り入れ、人工知能研究のメイン言語として黄金期を築いた。

目次

この記事の目次

  1. McCarthyとMITの研究室
  2. S式とコード=データの哲学
  3. Common LispとSchemeの二つの潮流
  4. AI黎明期からClojureまでの広がり
  5. まとめ

McCarthyとMITの研究室

McCarthyとMITの研究室

Lispの起源は1956年のダートマス会議に遡る。人工知能という言葉を生んだJohn McCarthyは、記号処理を行うための新言語を構想し、MITに移ってから1958年にLispの最初の実装に着手した。1960年に発表された論文「Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I」では、ラムダ計算に基づく言語仕様が公開され、計算機科学の古典として現在も読み継がれている。

驚くべきことに、McCarthyの大学院生Steve Russellは論文に書かれていたeval関数を見て「これは実行可能だ」と気づき、自身でアセンブラ実装してしまった。これによりLispはFORTRANに次ぐ二番目に古い高水準言語として動作するようになり、シンボル処理と人工知能研究のための事実上の標準言語となった。

S式とコード=データの哲学

S式とコード=データの哲学

Lispの最大の特徴は、プログラムそのものをデータ構造として表現する「同形性(homoiconicity)」にある。「(+ 1 2 3)」のように先頭に演算子を置く前置記法(S式)はプログラムであると同時にリストデータでもあり、プログラム自身がプログラムを操作するメタプログラミングが言語に組み込まれている。

この性質はマクロという仕組みに昇華されている。Lispのマクロは単なる文字列置換ではなく、構文木に対する任意の変換が可能で、新しい制御構造やDSLを言語に追加することができる。条件式の「cond」、ループ構造の「loop」、オブジェクト指向システムのCLOSすら、Lispの上にマクロで実装されている。これによりLispは「言語を作るための言語」と呼ばれることが多い。

Common LispとSchemeの二つの潮流

Common LispとSchemeの二つの潮流

Lispは1970年代から80年代にかけて方言が乱立し、Maclisp、Interlisp、ZetaLispなどが共存していた。これを整理する目的で1984年にCommon Lispが策定され、1994年にANSI標準(ANSI X3.226)となった。Common Lispは大規模システム向けに豊富な機能を備えた言語であり、SBCLやAllegro CL、LispWorksなど現役の処理系が複数存在する。

もう一つの潮流が、MITのGerald Jay SussmanとGuy L. Steeleが1975年に設計したSchemeである。Schemeはミニマリズムを徹底し、第一級継続や末尾呼び出し最適化などを言語の中核に据えた。古典的教科書『計算機プログラムの構造と解釈(SICP)』でも教材言語として採用され、関数型プログラミング教育に大きな影響を残した。RacketやChickenなど多くの派生実装が現代まで続いている。

AI黎明期からClojureまでの広がり

AI黎明期からClojureまでの広がり

1960年代から80年代の人工知能研究ではLispが事実上の共通言語であり、エキスパートシステムMYCIN、自然言語処理SHRDLU、第五世代計画の対抗陣営となった米DARPA-IIIプログラムなどでも採用された。専用ハードウェアの「Lispマシン」も商品化され、Symbolics社などが一時代を築いた。

現代では、ClojureがLisp系言語として大きな勢力となっている。Rich Hickey氏が2007年に発表したClojureは、Java仮想機械上で動作し、不変データ構造とSTM(ソフトウェアトランザクショナルメモリ)を中核とする実用的な関数型Lispとして、金融機関やWebアプリ開発で採用されている。Emacs LispやAutoLISP、GNU Guileなど、特定領域での組み込み用途も含めると、Lispの精神は途切れずに今も継承されている。

まとめ

Lispは1958年にJohn McCarthyが設計して以来、コードとデータを同一視するS式の哲学で言語設計に決定的な影響を残してきた。AI黄金期を支えたCommon LispやSchemeの伝統に加え、JVM上のClojureへと姿を変えながら、関数型プログラミングとメタプログラミングの源流として現代も生き続けている。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次