web-dev-qa-db-ja.com

Lispの何がすごいのか?

私はそれが良いか悪いかを言うのに十分なLISPを知りません。 LISPを使用したことのある人なら誰でも気に入っているようですが、最近の最も人気のある言語はCに由来しています。

それで、LISPの何がそんなに素晴らしいのか、なぜそれがもっと使われないのか? LISPについて単純に悪いことがありますか(括弧の絶え間ない量以外)?

94
Darrell Brogdon

LISPは、プログラミング言語のチャックノリスです。

LISPは、他の言語の評価基準です。

LISPを知っていると、開発者のEnlightenmentが実証されます。

私は3つの弱点(およびそれらの反論)を聞いたことがあります:

  1. 動的タイピング。

    静的に型付けされた言語には、実行時に発生しないように、特定のクラスのエラーをキャッチするのに十分な情報をコンパイラーに提供するという議論があります。しかし、まだテストする必要があります。

    この記事では、より多くのテストに加えて、動的な型付けについて議論します。 Strong Typing vs. Strong Testing

  2. 拾いにくい。

    これには、実際には学習とツールの2つの部分があります。

    LISPは実際に「取得」するためにある程度の努力をしますが、LISPを学習することで他の言語の優れたプログラマになるため、それだけの価値があります。たとえば、クロージャを実際に「取得」すると、Javaの内部クラスを理解できます。そして、一流の関数を「取得」すると、その関数なしで言語を使用するたびに意気消沈します。

    私は読んだThe Little Schemerと読んでいるPractical Common LISP、どちらも優れています。

    次はツールです。私はMacを使っているので、 Aquamacs Emacs (初心者がEmacsを住みやすいものにする)と Steel Bank Common LISP (SBCL)をゼロにしました。

  3. ライブラリの不足。

    まだはっきりとは言えませんが、疑っています。 Webサイトを構築する場合、 Hunchentoot および Elephant のようなツールセットが提供されます。しかし、実際にはLispersがライブラリの欠如について不平を言っていないようです(たぶん、LISPが非常に強力なため、必要ないだけなのでしょうか?)。

52
rickmode

「LISPはプログラム可能なプログラミング言語です。」
—ジョン・フォデラロ、CACM、1991年9月

私の見解は次のとおりです。

表面的には、LISPは素敵でシンプルな関数型プログラミング言語です。構文はほとんどなく、すべての要素が論理的に組み合わされています。

少し掘り下げて [〜#〜] sicp [〜#〜] を読み、メタサーキュラーエバリュエーターを書くと、次の2つのことがわかります。ほんの1ページのコードであり、2つ目は、コードとデータの関係により、洗練されたプログラミング手法が可能になることです。

これを完全に理解した後、他の言語がいくつかのことを言うことしかできない場合、他の言語は石に設定されているように感じます。 LISPは、構文とセマンティクスを定義できれば、any抽象化を構築できます。

69
Josh Lee

LISPは、非常に最小限で単純な通常の構文を持っているため、優れています。

LISPは、非常に最小限で単純な通常の構文を持っているため、悪いです。

60

「十分に複雑なCまたはFortranプログラムには、Common LISPの半分の、アドホックで、非公式に指定され、バグが多く、遅い実装が含まれています。」

グリーンスパンの第10規則

20
Paolo

役立つリンクを次に示します。

15
Greg Hewgill

Peter Seibelの優れたPractical Common LISPの最初の章 は、LISPが好きな理由を説明しています。一番下の行は、「プログラム可能なプログラミング言語」というフレーズです。ドメインまたは好みのスタイルに合わせて言語をカスタマイズできます。

8
itowlson

LISPプログラムは、プログラムの動作に関するアイデアと実際に記述するコードとの間のマッピングをより明確に提供する傾向があります。

ソース: http://www.gigamonkeys.com/book/introduction-why-LISP.html

2
ketan