Lispとは?

リスプ [1]LISPlist processor

コンピュータープログラム言語の一。記号処理目的とし、人工知能研究広く用いられている。1960年代初頭、 J =マッカーシーにより開発された。

LISP リスプ


LISP

フルスペル:LISt Processing language
読み方リスプ
別名:リスト処理言語

LISPとは、手続き型プログラミング言語要素兼ね備えた関数型プログラミング言語である。

LISPは、マサチューセッツ工科大学MIT)に在籍していた人工知能研究者であるジョン・マッカーシーJohn McCarthy)によって考案され、MIT学生だったスティーブ・ラッセル(Steve Russell)によってプログラミング言語として作り上げられた。生まれ経緯言語仕様から人工知能AI)の分野利用されることが多い。

なお、現在多く使われている多くのLISP処理系当初言語仕様とは大きく異なっているものが多い。LISPには、Common LispCLISP)やEmacs Lisp (ELisp)、Schemeなどがあるが、1996年ANSI標準になったCommon LispLISP言語代表的存在になっている


参照リンク
GNU CLISP - (clisp.org)
Information Technology - Programming Language - Common Lisp - (ANSI
プログラミングのほかの用語一覧
プログラミング言語の種類:  Java  Kotlin  関数型言語  LISP  なでしこ  ニーモニック  PL/I

LISP

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/02/19 07:06 UTC 版)

ナビゲーションに移動 検索に移動
LISP
パラダイム マルチパラダイム関数型手続き型自己言及メタ
登場時期 1958年
設計者 ジョン・マッカーシー
開発者 スティーブ・ラッセル、ティモシー・P・ハート、マイク・レビン
型付け 強い動的型付け
方言 ArcAutoLISPClojureCommon LispEgisonEmacs LispEuLispFranz LispHyInterlispISLISPLe LispLFEMaclispMDLnewLISPNILPicoLisp
Portable Standard LispRacketSchemeSKILLSpice LispTXLISPLisp Machine Lisp
影響を受けた言語 IPL
影響を与えた言語 CLIPSCLUCOWSELDylanFalcon
ForthHaskellIoIokeJavaScript
JuliaLOGOLuaMathematicaMDL
MLNuOPS5PerlPOP-2POP-11PythonRRebolRPLRubySmalltalkTcl/Tk
テンプレートを表示

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

1958年にはじめて設計されたLISPは、現在広範囲に使用されている高水準プログラミング言語の中でもFORTRANに次いで2番目に古い[1]。ただし、FORTRANと同様に、現在のLISPは初期のものから非常に大きく変化している。

これまでに多数の方言が存在してきたが、今日最も広く知られるLISP方言は、Common LispSchemeである。

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

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

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


LISPの歴史

ジョン・マッカーシー(上)、スティーブ・ラッセル(下)

LISPは1958年にジョン・マッカーシーMITにいた期間に考案された[3]。マッカーシーは1960年にACMの学会誌Communications of the ACMに「Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I[4]という題名の論文(「パートII」が発表されることはなかった)を発表した。この論文において、M-expression(Meta expression)と呼ばれる少数の単純な演算子と関数の表記法で、自分自身を評価するeval関数(超循環評価器)を記述できることが示された。

1955年または1956年からはじまった、IPLは、最初の人工知能言語で、リスト処理や再帰などの多くの概念をすでに含んでいたが、その後すぐにそういった分野ではLISPが使われるようになった。

前述の超循環評価器はLISP自身で実装されているが、ひとたびLISP以外の言語で実装すればそれは実際にLISPを解釈実行できるインタプリタとなる。マッカーシーは自分の論文中にある評価器は単なる理論上の存在で、そのようにしてインタプリタを実装可能であると考えていなかった。しかし、マッカーシーのもとで大学院生であったスティーブ・ラッセルは論文を読んだ後、機械語でそれを実装してみせ、マッカーシーを驚かせた。そうしてLISPインタプリタが生まれた。

超循環評価器は、チューリングマシンにおける万能チューリングマシンに相当する。(当初LISPプログラムの表現法としていた)M式を、LISP自身が扱うデータ構造に変換したS式は、万能チューリングマシンの入力(テープの初期状態)として与えられるチューリングマシンの記述に相当する。マッカーシーはやはり、LISPプログラムのS式による表現はevalを考えるための論文の中だけのものと考えており、実際のプログラムをS式で書くようになるとは考えていなかった。

LISPは当初IBM 704上で実装されたが、その計算機のレジスタを構成する部分の名前が、対を分解する関数car[5]cdr[6]の名前の由来となった。爾来、ほとんどのLISPの方言において、carとcdrはそれぞれlistの最初の要素と、最初の要素以外を返す関数の名前となっている。

その発端からLISPは、人工知能研究のコミュニティ、特にPDP-10システムのユーザーには近しい存在であった。PDPの計算機の設計目標の一つにLispの実装があり、PDP-6は当初、1ワード24bitの計算機として設計されていたが、Lisp1.5を移植しやすくするために36bitに変更された[7]。人工知能コミュニティでは、LISPはプログラミング言語の実装用言語としても用いられた。有名なAIシステムSHRDLUの実装言語のMicro Plannerは、MACLISPで実装されている。

また、1970年代には、LISPで実装されたREDUCEや、Macsyma等の数式処理システムの需要が高まるにつれ高速なLISPの処理系の需要も高まり、LISPを高速に処理するいわゆるLISPマシンの動機の一つとなった。LISPマシンは、タグアーキテクチャや、ハードウェアスタック等LISP向けのハードウェア機構により、型のディスパッチや関数呼出し、ガベージコレクションの高速化を実現した。

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

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

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

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

LISP処理系と派生言語のタイムライン

文法

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

マッカーシーの1958年の論文では、2つのタイプの表現が導入されている。内部のデータ構造の表現であるS式(記号式、: symbolic expressionsexp)と、S式を引数に取りS式を返す関数を表す、外部表現であるM式(メタ式、: meta expression)である。マッカーシーは、S式はプログラムの処理対象のデータの表現に使い、LISPプログラムの表現にはM式を使った。S式によるプログラムの表現は論文の中のみのものと考えていた。しかし、S式で表現されたプログラムを評価するevalが実装され、S式で表現することでプログラムをプログラムで操作できるという利点があり、今日ではほとんどすべてのLISP言語でM式は使用されておらず、プログラムとデータの両方にS式を使用する。

LISPの用いる S式は括弧を大量に使用するため、批判を受けることもある。「LISP は 『lots of irritating superfluous parentheses』(過剰でいらいらさせる大量の括弧)に由来する」というジョークもある。しかし、S式による構文はLISPの能力を生み出してもいる。この構文は極めて正規化されているので、コンピュータによる操作が容易に行える。

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

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

(1 2 "foo")

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

評価

現実の実装では、上記のリストを直接処理系に入力するとエラーが起きる。

CL-USER> (1 2 "foo")
; in: 1 2
;     (1 2 "foo")
; 
; caught ERROR:
;   illegal function call

これは、上の(1 2 "foo")は正しい式ではないからである。処理系の中で上のリストを表現したい場合は、クオート「'」を用いて'(1 2 "foo")と書く必要がある。このことを解説するため、ここでLISPでの評価ルールについて述べる。

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

(list 1 2 "foo")

は評価されてリスト'(1 2 "foo")を返す。このことを念頭に置いて、もう一度最初に挙げた式を振り返ると、

(1 2 "foo")
; 1 という関数名は存在しない

という仕組みでによりエラーが返されたことがわかるだろう。

もし引数のどれかが式であれば、それを含む式が評価される前にそれが再帰的に評価される。たとえば、

(list 1 2 (list 3 4))

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

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

(+ 1 2 3 4)

は10に評価される。この式は中置記法では「 ウィキブックスにLISP関連の解説書・教科書があります。


構音障害

(Lisp から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/01/18 05:59 UTC 版)

ナビゲーションに移動 検索に移動
構音障害
分類および外部参照情報
診療科・
学術分野
精神医学
ICD-10 F80.8
ICD-9-CM 307.9
テンプレートを表示

構音障害(こうおんしょうがい)とは、発音が正しく出来ない症状を言う(「構音」とは医学的用語であり、言語学上では「調音」と言う。一般には「発音の操作」と理解される。狭い意味では咽頭以上の音声器官の操作を言う)。喉頭の障害である音声障害とは区別される。

分類

構音障害はその原因によっていくつかに分類される。

  1. 器質性構音障害 - 音声器官における形態上の異常により引き起こされる発音上の障害。
  2. 運動障害性構音障害 - 音声器官の運動機能障害による発話の障害。
  3. 聴覚性構音障害 - 聴覚の障害による二次的な発音上の障害。
  4. 機能性構音障害 - 上記のような医学的原因の認められない本態性の発音の障害。

治療法

上記1、2、3については医学的原因の除去、補助具の装着、リハビリ的訓練を行う。

4については音声学的構音指導による。治療の効果が大きく、成人後であっても完治することが多いので、この種類のものを「障害」と呼ぶのはふさわしくないという学説もある。

関連項目

  • 痙攣性発声障害 



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Lisp」の関連用語

Lispのお隣キーワード

   

英語⇒日本語
日本語⇒英語
   
検索ランキング



Lispのページの著作権
Weblio 辞書情報提供元は参加元一覧にて確認できます。

  
三省堂三省堂
Copyright (C) 2001-2020 Sanseido Co.,Ltd. All rights reserved.
株式会社 三省堂三省堂 Web Dictionary
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2020 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリLISPの記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのLISP (改訂履歴)、構音障害 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2020 Weblio RSS