便利なキーワード検索サイト ことなびトップページへ
デル株式会社







ことなびTOP  サイトマップ  ことなびとは?



便利!NINJA TOOLS
→FC2検索 用語 Wikipedia YouTube

LISP とは?

 ページ内リンク   ↓ウィキペディア(Wikipedia)記事  ↓Yahoo!知恵袋

LISPリスプLISt Processingの略)は関数型プログラミング言語の一種で括弧を多用する独自の文法を持つ。ただし、変数への値の代入束縛)も可能な、手続き型言語の性格をもっているものもある。

出典: 『ウィキペディア(Wikipedia)』


Lispはてなダイアリーを別ウィンドウで表示  :  プログラミング言語の一つ。 LISt Processing language (リスト処理言語) の略で Lisp。Lots of Irritating Superfluous Parenthesis の略という冗談もある。 40年ほどの歴史*1の中で多数の方言(変種)が生じたが、現在では主に Common Lisp Scheme Emacs Lisp (ELisp) の3種類が多く使われている。 Lispのマクロはとてつもなく強力でDSLをエレガントに作成することができる。構文木をいじって自 ...

出典: 『はてなダイアリー』


英和辞典

lisp 別ウィンドウで表示  …  舌たらずに発音する(特に[s][z]を発音する) …‘を’舌たらずに発音する 舌足らずの発音

ノースウエスト航空 のマイルは、国内航空会社のマイレージと違って無期限!! 格安パックツアーでも
100%マイルが付くのでお得!! 国内往復分15000マイルを貯めて沖縄や北海道へ!!


関連商品

本  The Little Schemer別ウィンドウで表示

Daniel P. Friedman /  最安値(新品): ¥ 3,351  最安値(中古): ¥ 3,299 
おすすめ度5.0(全レビューの平均)この本は師匠と弟子の対話形式で、時折冗談を飛ばすなど親しみ易く書かれています。プログラミングの予備知識の無い人でも全体の七割は読めると思います。その部分はSchemeの基本的な関数であるcons, car, cdrを中心に再帰関数の書き方を一行一行丁寧に解説しています。残りの三割程は数学基礎論をベースにしたpedagogicalな話になっており、知らない人には難解に感じられると思います。 六章と八章では簡単な電卓関数valueを作りますが、これは最も簡単な処理系の作成になっています。最後に数を()の個数で表わしていますが、これは数学基礎論(ペアノの理論)で学習する整数の構成に対応しています。Dedekindの「数について(Essays on the theory of numbers)」の後半部分等が参考になります。また、Reasoned Schemerの七章と八章に出てくるバイナリー計算機の話と合わせて数値計算の基礎理論を見ることが出来るようになっています。 十章では再帰処理が出来る小さなScheme処理系(Little Schemer)を作成します。これが表紙の絵で象徴的に描かれています。Little Schemerではdefineが使えないので無名の高階関数としてYコンビネータ(表紙の象が象徴しているLambda関数)を導入し、このYコンビネータが再帰される本体の関数(象が持っている本)を使って再帰関数を実現する必要があります。これが九章でやっている話で、Smullyanの"To Mock a Mockingbird"に書かれているSKIコンビネータ理論の森の鳥達の話に対応します。そのようなSKIだけだとさすがにプログラミングが大変すぎるので妥協点として小さなScheme処理系を提示しています。それでもちょっとした再帰関数を作るのに難解なYコンビネータが必要になります。defineが使えるReasoned Schemerの処理系と比較することで、処理系の充実とプログラミングの労力の間のバランスを体験学習するようになっています。defineがあれば再帰処理にYコンビネータは不要になります。 この本は前半十章に相当し、後半十章はSeasoned Schemerに書かれています。その後、マクロを勉強すれば第三巻に相当するReasoned Schemer(miniKanren)に進むことが出来ます。それぞれのタイトルがそこで作成する処理系の性質を表わしています。姉妹編のLittle JavaではデザインパターンのGoF本に出てくるピザパターンを利用した小さな処理系によって関数型言語のリスト処理をエミュレートしています。また、Little MLerではStandard MLという関数型言語を使って型推論を説明しています。これらの幅広い話題の全ての基礎にあたるのが本書です。なお、このシリーズではアルゴリズムについては殆ど触れていないのでSICPをさらに読むことをお勧めします。  (roger さんのレビュー)

本  Common Lisp 入門 (岩波コンピュータサイエンス)別ウィンドウで表示

湯浅 太一 /  最安値(新品): ¥ 3,990  最安値(中古): ¥ 697 
おすすめ度5.0(全レビューの平均)昔、電総研の言語研究室に研究生としておじゃましていたときには、研究室ではアレグロコモンリスプを使われていました。プロンプトは<cl>でした。 (quote (1 2 3))は (1 2 3)を返しましたが、 (' (1 2 3))はエラーになりました。 最後のクロスリファレンスでp306でspecial, specialsの違いがわかりませんでした。 p308でRESTの括弧関係がうまくわかりませんでした。 付録2についているLispプログラムのデバッグの仕方が、まだうまく身についていないからかもしれません。  (kaizen さんのレビュー)

本  考える道具としてのLisp入門別ウィンドウで表示

難波 和明 /  最安値(新品): ¥ 2,625  最安値(中古): ¥ 3,981 
おすすめ度5.0(全レビューの平均)20年頃前は、大学の情報系の学科では、LISPかPascalを教えていました。 そのため、コンピュータといえばLISPを題材にすると、原理がよく分かると思われていました。 PCをBASIC言語で利用しはじめたときに、コンピュータを考えるための道具として利用してきました。 仕事でプログラミング言語を開発している人で、コンピュータを考えるための道具として使う人が少ないのに驚いたことがあります。 本書に出会って、やはりコンピュータは人間が考えるための道具だと確信が持てました。 LISPのプログラムはEmacsLispなど読んだことがありますが、一からLISPでプログラムを書いたことはありません。ごめんなさい。  (kaizen さんのレビュー)

本  Structure and Interpretation of Computer Programs (Mit Electrical Engineering and Computer Science Series.)別ウィンドウで表示

Harold Abelson /  最安値(新品): ¥ 5,028  最安値(中古): ¥ 7,191 
おすすめ度3.0(全レビューの平均)

本  実践Common Lisp別ウィンドウで表示

Peter Seibel /  最安値(新品): ¥ 4,410 
おすすめ度3.0(全レビューの平均)

本  Programming Clojure別ウィンドウで表示

Stuart Dabbs Halloway /  最安値(新品): ¥ 3,464 




ウィキペディア(Wikipedia)記事


LISP
パラダイム マルチパラダイム
関数型手続き型
登場時期 1958年
設計者 ジョン・マッカーシー
開発者 スティーブ・ラッセル、ティモシー・P・ハート、マイク・レビン
型付け 強い動的型付け
方言 Common Lisp, Emacs Lisp, ISLISP, Scheme
影響を与えた言語 LOGO, Perl, Python, Smalltalk, Ruby, Dylan, Mathematica
  

LISPリスプLISt Processingの略)は関数型プログラミング言語の一種で括弧を多用する独自の文法を持つ。ただし、変数への値の代入束縛)も可能な、手続き型言語の性格をもっているものもある。

LISP動的な型付けを行う(値には型情報を持つが変数は型を持たない)、前置記法を持った、コード自身をファーストクラス(一級市民)オブジェクトとして扱うことができる言語である。

すべてのプログラミング言語を通じてLISPは2番目に古い高級言語であり、現在でも広く使われている。最古の高級言語FORTRANと同様に、LISPの言語仕様は初期のころから大きく変化している。厳密には、LISPは一つの言語ではなく「LISP方言」と呼ばれる同種の言語(方言)の集まりである。なにも付けずに「Lisp」というときは一般的にCommon Lispのことを指し示している場合が多い。

目次

LISPの歴史

LISP1958年MITにいたジョン・マッカーシーによって発明された。当初LISPラムダ算法の計算モデルを紙の上で表現するための記法として考案されたもので、コンピューター言語を意図して設計されたわけではない。 しかし当時マッカーシーの教え子だったスティーブ・ラッセルがそれをFORTRAN上に移植し、初のLISPインタープリタが誕生した。 当初の LISP は FORTRAN上で動くリスト処理用のライブラリであり、FLPL (Fortran List Processing Language) と呼ばれていた。 そして1960年にマッカーシーの論文「再帰関数のS式表現とその計算機上での実行 第一部」がCACMで発表され、広く普及するに至る。

LISPは当初IBM 704上で実装されたが、その計算機上の2つの命令がLISPの基本操作car(Contents of Address Register)、cdr(Contents of Decrement Register)になった。 ほとんどのLISPの方言において、carcdrはそれぞれlistの最初の要素と、最初の要素以外を返す操作である。

その表現力と柔軟性によって、LISP人工知能のコミュニティで人気を持つようになった。しかし、その実行には大量の内部表現を必要とし、ガベージコレクションを行う必要があるという弱点も持っている。 この結果、LISPは貧弱なハードウェア上では実行が困難であった。 1970年代には、増加するユーザコミュニティと寛大な政府の資金提供によって、LISPプログラムの実行に特化したLISPマシンが開発された。 日本でも青山学院大学で開発されたALPS-1などがある。 これは、8080の特定の命令実行を横取りし、ハードウェアでデータを処理させる、という仕組みであった。

LISPは実装の容易さゆえに非常に多くの方言を生んだ。マクロを用いれば文法構造それ自体を拡張できるので、ある意味では利用者ごとに方言があるとさえいってよい。しかし大きく分けてMACLISP系とInterlisp系の二つの主流が存在し、後のLISP方言に影響を与えている。

1980年代1990年代には、たくさんのLISP方言を一つの言語に統合しようという努力がなされた。 その結果として設計された新しい言語Common Lispは基本的にそれらの方言のスーパーセットであり、それらを置き換えることになった。 1994年ANSIはCommon Lispの標準仕様ANSI X3.226-1994 情報技術プログラミング言語Common LISPを出版した。このときまでには、全盛期に比べるとLISPの市場は小さくなっていた。

一方で1970年代中ごろには、LISPベースでプログラミングに必要な言語機能を極限まで抽象化したschemeが発生し、こちらも現在の主流の一つになっている。

LISPは現在でも広く使われている年代物の言語の一つである。

文法

LISPは「式指向」の言語である。他の多くの言語とは違って、LISPの区別をしない。すべてのコードとデータは式として書き下される。 式が評価されたとき、それは1つの値(もしくは値のリスト)を生成する。式は他の式に埋め込まれることができる。

マッカーシーの1958年の論文は、2つのタイプの文を導入している。 S式(Symbolic Expression, シンボル式、sexp)と、S式の関数を表すM式(Meta Expression, メタ式)である。 M式には利点がなかったため、今日のほとんどすべてのLISP言語はコードとデータの両方の操作にS式のみを使用する。 S式は括弧を大量に使用するが、そのことで批判も受けてきた。 「LispLots of Irritating Superfluous Parentheses(過剰でいらいらさせる大量の括弧)の略」というジョークもある。 しかし、S式による構文はLISPの能力を生み出してもいる。 この構文は極めて正規化されているので、コンピュータによる操作が容易に行うことができる。

式への依存が、LISPに優れた柔軟性を与えている。LISP関数は、それ自身がリストとして書かれており、データとまったく同様に扱うことができる。 LISPのプログラムは他のLISPプログラムを処理するように書くことができる。 これは、メタプログラミングと呼ばれる。 多くのLISP方言はこの機能をマクロシステムで活用しており、言語自身の機能をほとんど際限なく拡張することを可能にしている。

LISPでのリストは空白と括弧で区切られた要素で記述される。たとえば

(1 2 "foo")

1, 2, "foo"の値を要素としてもつ1つのリストである。これらの値は暗黙の型を持つ。これらは2つの整数と1つの文字列であるが、そのように宣言されている必要はない。 空のリスト()nilとも書ける。

式は前置記法のリストとして書かれる。 最初の要素はフォーム(関数か演算子かマクロか特殊フォームのいずれか)の名前である。 リストの残りは引数である。たとえば、関数listはその引数をリストとして返すが、式

(list 1 2 "foo")

は評価されてリスト(1 2 "foo")を返す。 もし引数のどれかが式であれば、それを含む式が評価される前にそれが再帰的に評価される。たとえば、

(list 1 2 (list 3 4))

はリスト(1 2 (3 4))に評価される。 つまり、3番目の引数はリストであり、リストはネストできるのである。

算術演算も同様に処理される。式

(+ 1 2 3 4)

は10に評価される。この式は中置記法では"1+2+3+4"と等価である。

「特殊フォーム」はLISPの制御構造を提供する。 たとえば、特殊フォームifは3つの引数をとり、 第一引数の値が真なら第二引数に、偽なら第三引数に評価される。 ここで真とはnil以外、偽とはnilのことである。 したがって式

(if nil
  (list 1 2 "foo")
  (list 3 4 "bar"))

(3 4 "bar")に評価される。言うまでもないが、nilのところに自明でない式がくることによって有用になる。

その他の特殊形式defunは、関数を定義するために用いられる。 defunの引数は引数のリストと、関数として評価される式である。

最小のLISP

最小のLISPは、以下に示す、C機械語で記述された関数だけを必要とする。

  • car
  • cdr
  • cons
  • quote
  • eq
  • atom
  • cond
  • defun等、関数を定義する命令

他のすべての関数は、効率良くではないが、これらの関数に置き換えて定義できるだろう。

プログラム例

以下にいくつかのLISPのコード例を示す。 これらは産業界における典型的なコードではないが、コンピュータサイエンスのコースで通常教えられる典型的なLISPコードである。

ここまでの議論で気づいていた読者もいると思うが、LISPの構文はそれ自身が再帰的定義に自然に適合している。 それゆえ、再帰的に定義された集合を列挙するというような数学の問題をシンプルに表現できる。

以下の関数は引数の階乗に評価される。

(defun factorial (n)
  (if (<= n 1)
      1
    (* n (factorial (- n 1)))))

以下は別のやり方であり、末尾再帰になっているので末尾再帰の最適化を行う処理系であれば上記のバージョンよりも高速である。

(defun factorial (n &optional (acc 1))
  (if (<= n 1)
      acc
    (factorial (- n 1) (* acc n))))

再帰と対照的な概念である反復による計算の例として、Common Lisp の loop マクロを使った例を示す。

(defun factorial (n)
  (loop for i from 1 to n
        for fac = 1 then (* fac i)
        finally (return fac)))

以下の関数は引数にリストをとり、そのリストの要素の順番を逆にしたものに評価される(LISPは実際には同じことを行うビルトイン関数を普通持っている)。

(defun reverse (l &optional acc)
  (if (atom l)
      acc
    (reverse (cdr l) (cons (car l) acc))))

オブジェクト指向システム

以下を含む多種のオブジェクト指向あるいはモジュールがLISPの上に、あるいは併置して、あるいは組み込まれて設置されている。

CLOSは多重継承多重ディスパッチ(マルチメソッド)の機能を持ち、強力なメソッド結合のシステム(FIXME)を持つ。事実上、CLOSを含めたCommon Lispは、公式に標準化された最初のオブジェクト指向言語である。

系統と変種

関連項目


ウィキペディア All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの記事を複製、改変、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。ことなびに掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。



Yahoo!知恵袋





「LISP」 検索数の推移 (過去1ヶ月間)

powered by  goo ( NTT Resonant Inc. )


  ↓ニュース  ↓YouTube  ↓テレビ番組  ↓はてブ  ↓ヤフオク
  ↓このページへのリンク

ニュース記事

powered by  Google+ Yahoo!

●数学的記法をコンピュータで実行可能にしたLisp. Lispのことを知られざる言語などと呼んでしまうと、怒り出す人もいるかもしれません。 ... Lispの特徴. Lispは、1958年にMITのジョン・マッカーシー(John ...別ウィンドウで表示   (2009年1月5日)

●LISPは、それをモノにしたときの素晴らしい悟り体験のために勉強しましょう。 ... 例え、実際にはLISPそのものをあまり使わなくても。 ... Lispのすごさ. しばらく前になりますが、あるオブジェクト指向関連のイベント ...別ウィンドウで表示   (2009年1月4日)

●Lispの強さ. 最先端の機能を提供してきたLispですが、その強さは特定の機能に見いだせるわけではありません。 ... インタープリタそのものであるevalを持っているLispは非常に動的で、単なるデータだけでなくプログラム自体を取り扱うことができます。 ...別ウィンドウで表示   ()

●... (Linux、BSD、Cygwin)にLisp的なインタフェースを持たせるもので、SCSHでは正規表現のDSL ... UNIXとLispがそれぞれ元にしている考え方に違いがあるため、スクリプトの作成に ...別ウィンドウで表示   (2009年1月3日)

●この中でLispは、主に人工知能などの研究用途ながら、熱狂的な心奉者を生み出した。 ... Lispでは、オブジェクト指向よりも高次の抽象化を実現しているため、高階関数を実現するのも、ほかのやり方と何ら違いがなくシンプルに実現できる。 ...別ウィンドウで表示   (2008年12月31日)

●Emacsが反映している(と思われる)のは、MIT(米マサチューセッツ工科大学)のLisp文化です。 ... 小さいツールを組み合わせることによって柔軟性を提供するUNIX思想、プログラム可能なツールによる柔軟性を提供するLisp思想。 ...別ウィンドウで表示   (2008年12月16日)

YouTube

powered by YouTube


※.クリックすると動画が再生されます。

テレビ番組サーチ

powered by Yahoo!TV

 PageRank5以上の相互リンク
 ・相互リンクスクエア  (PageRank 5)
 ・相互リンク相互リンク アクセスランキング インプロス  (PageRank 5)
 →便利!NINJA TOOLS
 →FC2検索  用語  Wikipedia  YouTube


スポンサー

powered by  コンテンツマッチ広告のブレイナー


Yahooオークション

powered by Yahoo!

★☆考える道具としてのLisp入門☆★

終了日時 : 1月 10日 20時 34分
入札件数 : 0
現在価格 : 1,800 円

 








デル株式会社 ThinkPad アウトレット Apple Store(Japan) PCDEPOT WEB本店/OZZIO Sony Style(ソニースタイル) シマンテックダウンロードストア マカフィー・ストア

ことなびTOP -  サイトマップ sitemap.xml  -  ことなびとは? -  利用規約

©2007 Kotonavi.com