LISP

LISP
LISP
LISPのロゴ
パラダイム 関数型プログラミング手続き型プログラミングメタプログラミング、マルチパラダイムプログラミング、リフレクション ウィキデータを編集
登場時期 1960年 (65年前) (1960)[1][2][3]
設計者 ジョン・マッカーシー
開発者 スティーブ・ラッセル、ティモシー・P・ハート、マイク・レビン
型付け 強い動的型付け
方言 ArcAutoLISPClojureCommon LispEmacs LispEuLispFranz LispHyInterlispISLISPLe LispLFEMaclispMDLnewLISPNILPicoLisp
Portable Standard LispRacketSchemeSKILLSpice LispTXLISPLisp Machine Lisp
影響を受けた言語 Information Processing Language ウィキデータを編集
影響を与えた言語 CLIPSCLUCOWSELDylanFalcon
ForthHaskellIoIokeJavaScript
JuliaLOGOLuaMathematicaMDL
MLNuOPS5PerlPOP-2POP-11PythonRRebolRPLRubySmalltalkTcl
テンプレートを表示

LISP(リスプ)は、関数型プログラミング言語である。S式前置記法などが特徴である。

1958年秋から開発を始め[1]、1960年3月にLISP Iのマニュアルが書かれ[2]、1960年4月[3]に初めて論文発表されたLISPは、現在でも広範囲に使用されている高水準プログラミング言語の中ではFORTRANCOBOLに次いで3番目に古い[4](世界で3番目に作られたプログラミング言語という意味では無く、他の言語が使われなくなったという意味)。

これまでに多数の方言が存在してきたが、今日広く使われているLISP方言は、Common LispSchemeClojureなどである。

元々、LISPは、アロンゾ・チャーチラムダ計算表記法に影響を受け、コンピュータプログラムのための実用的かつ数学的な表記法として作られた。そして、すぐに人工知能研究に好まれるプログラミング言語になった。最初期のプログラミング言語として、LISP計算機科学にて、木構造ガベージコレクション動的型付け条件分岐高階関数再帰セルフホスティングコンパイラを含む多くのアイディアを切り開いた[5]

LISPの名前は、「list processor」に由来している。リストLISPの主要なデータ構造であり、LISPソースコードはそれ自体がリストからできている。その結果、LISPプログラムはソースコードデータとして操作することができ、プログラマは、マクロ・システムで新しい構文やLISP埋め込みの新しいDSLを作成できる。

コードとデータの互換性は、LISPにそのすぐに認識できる構文を与える。すべてのプログラム・コードはS式または入れ子のリストとして書かれる。関数呼び出しまたは構文は先頭が関数または演算子の名前で、その続きが引数であるリストとして書かれる。具体的には、3つの引数を取る関数fは、(f arg1 arg2 arg3)として呼び出される。

古くから使われているが、FORTRANと同様に、現在のLISPは初期のものから変化している。しかし、FORTRANと比べると変化は小さく、1960年のLISP Iの時点で大半の機能は実装済で[2]ガーベジコレクションやquoteでコードの中にコードを埋め込みevalで実行する仕組みも最初から存在し、その後実装された主なものは静的スコープ(LISP Iは親スコープの変数束縛がおかしく動的スコープだった[6])とマクロと継続である。また、標準ライブラリには永続データ構造片方向リストしかなかった[2]。マクロは1963年に実装された[7]。静的スコープは研究され続け、1975年のSchemeクロージャを使用する形で完全に解決した[8][9]


  1. ^ a b The implementation of LISP”. www-formal.stanford.edu. 7 April 2024閲覧。
  2. ^ a b c d McCarthy et al. LISP I Programmer's Manual. — Software Preservation Group”. softwarepreservation.org. 7 April 2024閲覧。
  3. ^ a b RECURSIVE FUNCTIONS OF SYMBOLIC EXPRESSIONS AND THEIR COMPUTATION BY MACHINE (Part I) (12-May-1998)”. www-formal.stanford.edu. 7 April 2024閲覧。
  4. ^ SICP: 序文”. 2015年10月20日閲覧。 “Lispはほぼ四半世紀の間使われた長命者である. 現役のプログラミング言語ではFortranだけが先輩である.”
  5. ^ Paul Graham. “技術野郎の復讐”. 2015年10月20日閲覧。
  6. ^ From LISP 1 to LISP 1.5”. www-formal.stanford.edu. 7 April 2024閲覧。
  7. ^ Hart, Timothy P. (1963). MACRO definitions for LISP (Report). Massachusetts Institute of Technology. hdl:1721.1/6111
  8. ^ Sussman, Gerald Jay; Steele, Guy Lewis (1975). Scheme: An Interpreter for Extended Lambda Calculus (Report). Massachusetts Institute of Technology. hdl:1721.1/5794
  9. ^ Sussman, Gerald Jay; Steele Jr, Guy L (1998). “Scheme: A interpreter for extended lambda calculus”. Higher-Order and Symbolic Computation (Springer) 11 (4): 405–439. doi:10.1023/A:1010035624696. https://doi.org/10.1023/A:1010035624696. (Paid subscription required要購読契約)

From Wikipedia, the free encyclopedia · View on Wikipedia

Developed by Nelliwinne