LISP 【List Processor】
概要
LISP(List Processor)とは、すべてのデータとコードを括弧で囲われた式として表現する、代表的な関数型プログラミング言語の一つ。一般には半世紀前に産み出されたオリジナルのLISP言語を含む数多くの派生言語の総称を表すことが多く、LISPの仕様を踏襲する個々の言語のことは「LISP方言」と呼ぶことが多い。LISPでは空白で区切った要素の列を丸括弧 ( ) で括った「リスト」(list)を基本構造として、ほとんどありとあらゆるものをリストとして表現する。データの定義や計算式の記述、関数の定義や呼び出し、実行制御など、プログラム構成要素のほぼすべてをリストで表すことができ、データもコードも同じ記法で取り扱う。
数式のように括弧を入れ子状にすることでリストの要素としてリストを埋め込んで記述することができ、これを利用して複雑な処理を記述する。LISPのプログラムは入れ子(ネスト)になった巨大なリストの集合体となり、これを「S式」という。なお、数式とは異なり内側の括弧も同じ丸括弧で記すため、括弧の対応関係が分かるように改行やインデントで整形する必要がある。
手続き型言語などに見られる「式」(expression)と「文」(statement)の区別はなく、プログラムはすべてS式として記述・評価される。式の記述には演算子を演算対象の前に置く前置記法(ポーランド記法)が用いられる。例えば、「1と2の和」を表す式は (+ 1 2) と書く。リストの先頭の要素に様々なキーワードを用いることで、他言語で文や命令に相当する処理を記述することができる。
歴史
LISPは1958年にマサチューセッツ工科大学(MIT)でコンピュータ科学や認知科学を研究していたジョン・マッカーシー(John McCarthy)氏によって考案され、人工知能研究などで活用された。実装が容易で拡張しやすいことから、長い年月を経て仕様の異なる派生言語が数多く生まれた。
1980年代にLISPの標準化を求める動きが強まり、1984年に共通仕様「Common Lisp」が発表され、1994年に米国国家規格協会(ANSI)によって標準化された。有力なLISP方言および処理系としては、テキストエディタのEmacsを実行環境とする「Emacs Lisp」や、コンピュータ科学の教育・研究で広く用いられる「Scheme」、Java仮想マシンや.NETランタイムで動作する「Clojure」などがある。