Lispが便利なのはなぜですか?[閉まっている]


64

Lispは明らかにAIの利点ですが、LispがJava、C#、またはCよりも高速であるとは思えません。 Lispでビジネスソフトウェアを書くことになります。

しかし、それはハッカーの言語と見なされています。

Paul GrahamがLispを擁護するのはなぜですか?ITA Softwareが他の高級言語よりもLispを選んだのはなぜですか?これらの言語に対してどのような価値がありますか?


20
「LispはJavaやC#よりも高速だとは思わないか、実際のところCよりも高速だとは思わない」という行はやや紛らわしい。Cは通常、「あなたが金属の近くでプログラミングしているため、高速なコード」の標準として支持されています。これは、ほぼすべての点で優れているベンチマークです。現在、Javaおよび他のGCで作成された言語は、メモリ割り当て/クリーンアップの速度など、いくつかのコンテキストでそれを打ち負かすことができます。しかし、それでもこの文は少し後方に見える。
マイケルH.

2
Lispはあなたが言及した言語よりも高いレベルの言語であり、したがって一般的に遅いです。
-segfault

5
@Bo Tian:「高レベル言語」には明確な定義が必要です。たとえそれがあったとしても、これは非セクイターのように聞こえます。(@マークに感謝)
マイクダンラベイ

5
@BoTianの「より高いレベル」は、デフォルトでは「より遅い」と等しくありません。

24
Lispは、他のすべての言語デザイナーがどれほど間違っているかを示すために存在します。

回答:


78

Common Lispの能力を高めるために取り組んでいるいくつかの理由があります。

  1. 同形コード。これにより、構造化された自己変更コードが可能になります。
  2. 構文認識マクロ。定型コードの書き換えが可能です。
  3. プラグマティズム。Common Lispは、専門家が作業を行えるように設計されています。原則として、ほとんどの関数型言語はそうではありません。
  4. 柔軟性。さまざまなことを、すべて妥当な速度で実行できます。
  5. いぼ。現実の世界は乱雑です。実用的なコーディングは、厄介な構造を使用または発明する必要があります。Common Lispには十分なイボがあり、物事を成し遂げることができます。

おそらく、Common Lispに対して選択する唯一の本当の理由は、標準ライブラリが古いことです。

私は手足に出て、一般的な場合、プロのソフトウェア労働者にとって構文は問題ではないだろうと言います。


8
構文が読みやすさまたは書き込み可能性に大きな影響を与える場合、問題になる可能性があります。Lispの場合はそうではないと思います。優れたエディターまたはIDEを使用すれば、構文の強調表示や括弧のマッチングを十分に行うことができます。
マットオレニック

4
また、私はLispを少ししか使用していません(Common Lisp)。私が得た一般的な感触は、#2がLispの最大の利点だということでした。間違ったパラダイムを考えているのかもしれませんが、自己修正コードが必要な状況になったことはないと思います。それを使用する特別な理由がある場合は、そうですが、そうでなければマクロは本当のキラー機能のように見えます。編集:これらが実際には同じ機能であることに気付いた。
マットオレニック

3
@マット:はい。FWIW、最近、マクロを使用したC#風のCLR実験言語であるNemerleに出会いました。nemerle.org。経験のためだけに、ある時点で突っ込む価値はあります。
ポールネイサン

2
「プラグマティズム。CLは、仕事をする専門家が仕事をするように設計されています。原則として、ほとんどの関数型言語はそうではありません。」:この声明には同意しません。私はLispに非常に興味があり、それを学ぶために少し時間を割こうとしています。しかし、他のFP言語も「物事を成し遂げる」ために非常に効果的であると思います。少なくともこれは、これまでのScalaとHaskellでの私の経験です。
ジョルジオ

1
「CLは、専門家が作業を行えるように設計されています。ほとんどの関数型言語は、原則としてそうではありません。」:これについて詳しく説明していただけますか?特に文の2番目の部分。いくつか例を挙げていただけますか?
ジョルジオ

23

Lispが好きです

  • コードとデータの両方を表現する、統一された、シンプルでエレガントな方法。
  • ユニークな視点。ハードな問題を解決する上で重要な80のボーナスIQポイントを提供します(Alan Kayへの帽子のヒント付き)
  • 非常に機敏で、インタラクティブで会話型の開発環境
  • 抽象化を作成および操作する前例のないパワー

プログラミングは複雑さと戦っています。抽象化は、ますます複雑化する頭蓋骨のサイズが非常に限られているため、絶えず複雑さを克服するための唯一の効果的なツールです。Lispで抽象化を管理することは、n + 1の願いを持つ魔神を持つようなものです。


5
+1は「プログラミングは複雑さと戦っています。抽象化は、ますます複雑化する頭蓋骨の大きさを制限しながら)ますます複雑化と戦うための唯一の効果的なツールです。(+10を与えることができればいいのに)
ジョルジオ

「非常にアジャイルでインタラクティブな会話型開発環境」とは何ですか?
14年

6
それは(+ 1 n)願いではなく、賢明な実用性ではあり(incf n)ませんか?
Reb.Cabin

21

私は正しいLispの答えはもっとグノミックだと信じています。何かのように:「あなたが依頼している場合、あなたは準備ができていません。」

さらに誰かがさらに質問した場合、正解は「はい」またはまたは」の質問の場合、または「準備ができていません」です。


5
ポール・グラハムは、ルイ・アームストロングを引用しています。「ジャズとは何かを聞かなければならないのです。」
ジェイソン・ベイカー

25
+1。「尋ねなければならない場合、準備ができていない」などのフレーズが時々ありますが、そう言う人は単に説明できないと思います
-superM

5
@superM LispおよびLispに似た関数型言語には、一度習得すると説明できないという特性があります。
エソテリック

18

誰もが言及する人工知能(AI)分野でのLispの利点は、やや歴史的な事故だと思います... LispはAIのために、またはAIで始まりましたが、それは汎用言語です。

言語の重要な側面は実行速度だけではないと思います(ただし、一度は行いました)。しかし、私がLispで気に入っている点の1つは、私にとって、PythonとCを1つに組み合わせていることです。宣言とプロトタイプを使用せずにコーディングをすぐに非常に迅速に開始できます(これにはランタイムとREPLが非常に重要です)。何かを実行した後、型宣​​言を追加し、コードを少しずつ「最適化」します。SLIMEでキーを押して、興味のある関数用に生成された機械語を見るのは不思議です。Pythonには型宣言がないため、速度を上げることはできませんが、Cでは、何でもすぐに完了しますもっと痛い。この場合、Lispは非常に便利です。

そうは言っても、私は主にマクロのためにLispが好きです。マクロが何を達成できるかを最終的に理解したら、括弧を簡単に我慢できると思います。また、Emacsのようなエディターは括弧を自分で管理するので、必要はありません。しかし、最初は括弧がそれほどひどくなかったことを認めます。そして、一部の人々はただそれを我慢できないことを知っています。しかし、マクロの全体的な目的はコンパイル時にコードを生成することなので、Lispのコードは標準のデータ構造を使用し、括弧は単にコードをリストとして表現するものであり、マクロを簡単に書くために必要です。

Lispの使いやすさで問題をより良く説明する小さなサブ言語を書くことができる他の言語は知りません。それがポールグラハムが平均を破ることで語る利点です。それは極端なモジュール性と簡潔さです。Javaでは、単一のアイデアを表現するために多くの生のテキストを書く必要があります。Lispでは、そのコードを自動的に生成するいくつかのマクロを書くことができ、その後はそれらを使用するだけです。とにかく、あなたはこのいくつかの例を理解し、それからあなた自身で判断しなければなりません。私がそれを「見た」とき、私は感動しました、そして、私はまだ、Lispがこの理由だけで最大の言語であると思います。私は常に主流言語のマクロを探して、それらがLispマクロの能力と一致するかどうかを確認しますが、今までのところ何も見つかりませんでした。フォースはすぐ近くです。

最後に、ビジネスソフトウェアに関していくつかの批判を行います。

  1. ビジネスソフトウェアにはライブラリと良いライブラリが必要です。Lispはこれが得意ではありません。私は通常それらを必要としませんが、私が必要とするとき、私は少数の人々が使用する不完全なソフトウェアの少しの選択から選ばなければなりません。私はこれを修正するために貢献する必要があると思います...

  2. 通常、ビジネスソフトウェアは大勢の人々によって構築されますが、マクロは基本的に言語を変更するため、マクロとの通信が妨げられる可能性があると思います。多くのプログラマーは、プログラムのテキストがより長く、より反復的であっても、コード内の特定のパターンをより快適に検出します。ITAにはマクロに関するいくつかのルールがあるか、コラボレーションを簡単にする巨大なマクロライブラリがある(または、もっと簡単に言えば、すべてのプログラマーがLispの専門家である)と思います。


7
clojureを試してください。これはJVMのLispです。したがって、JVMを使用することにより、すべてのJavaを使用できます。
ザカリーK

@zachary:JVMには少なくとも2つのCommon Lisp実装があります。ABCLは比較的成熟しています。
ラリーコールマン

Clojureは100%Javaと互換性があります(少なくとも、Clojureが改善できず、Javaistsが文句を言わないような方法でJavaを発見したことはありません)。ClojureはCommon LispのベストとFPのベストの影響を強く受けています。それとSBCLとCLispとEmacsを使うと、Lisperは今日の王様のように感じるはずです。
Reb.Cabin

13

私はLispが好きではありません。

(私は、それが使用する多くの概念、強力な技術をネイティブで利用可能にする方法などが好きです。

しかし、私は実際にそれを使用行くことを確信されていなかっきた、((にもかかわらず、何人かの人が試してみました)言語の利点があるためできる十分な利益がないので、(一部直接、何らかの間接的に)他のプログラミング言語で実現すること私はそれを学び、恐ろしい構文に我慢する時間を費やすために取得します。)))

しかし、そう、いくつかの人々がそれを好むという理由で、これらのStack Overflowの質問をチェックしてください:

それらの関連する質問には、おそらくさらにいくつかあります。


26
「恐ろしい構文に追いつく」。たぶん、私がLisp初心者だったので長すぎますが、Lisp構文の単純さと規則性は、Lisp自体を拡張することができるので、大きな機能です。カスタムイテレータを追加したり、開発者が必要としないように自動的にクリーンアップする新しい「with-xxx」スコープコンストラクトを追加したりできます。構文は機能であり、バグではありません。
マイケルH.

5
言語をそれ自体で拡張する機能、半ダース文字に制限された構文を必要としません。また、「構文はバグではなく機能です」?- 知っている。私はそれをバグとは呼びませんでした。
ピーターボートン

8
さて、マクロシステムの利点はどのように得られますか?1つの合理的な短い章(Paul Graham、「On Lisp」)で、オブジェクト指向拡張を構築できる言語の数。
デビッドソーンリー

6
構文は他の言語ほどひどいものではありません。しばらくすると、括弧が視覚的に「消える」ことがわかりました。インデントが適切であれば、コードは簡単に読み取り可能です。
バリーブラウン

8
しかし、S-expの間を簡単に移動できる能力は非常に大きいように思われます...それから、括弧については、次の引用が好きです
セドリック・マーティン

9

「Lisp」を「Common Lisp」と解釈します。他の答えが「Scheme」と言うことは間違いありません。(ヒント:Lispは言語のファミリーです。)

「より速い」とはどういう意味ですか?ベンチマークを実行するのにかかる時間に関しては、いいえ、それはCより速くありません(しかし、それはできます)。

Joe Random Hackerが作業プログラムを作成するのにどれくらいの時間を要するか、または大規模なソフトウェアシステムのバグを修正するのにどれくらいの時間がかかるかという点で「高速」です。ほぼ間違いなく。

この私はコードではなく、定型を書きたいので、ハッカー、私はそれを使用しています。私は何かを一度書いて、自分自身を繰り返したくありません。そして、私はそれを書いている間、プログラムと対話したいと思います。


エディタ内で、すぐに残りのコードに何かをする小さな関数を書くことができたら、それは素晴らしいことではないでしょうか?または、あなたはすでにそれをすることができますか?
マークC

4
@マーク:あなたはEmacsを説明していると思います。
フェルッチオ

@Ferruccioただし、最初にコードを実行する必要があると思いました。
マークC

2
@マークC:まあ、地域を強調表示してからM-x eval-region(またはeval-buffer)する必要がありますが、それだけです。
フランクシェラー

1
@MarkC:また、スクラッチバッファーを使用している場合は、関数を書いてEnterキーを押すだけでC-j(道徳的にはenterと同等)、すぐに有効になります。
ティコンジャービス

7

Lispは、自分の考えを表現するための優れた媒体だからです。私の好きな言語の述語は、「アイデアを表現するために何かを選ぶことができたら、それは何でしょうか?」です。現在、それはLisp *(具体的にはScheme)であり、私はその中にプログラミングノートを書いていることに気が付きます。IRLとして、紙とペンのメモ。プログラムについて考えている場合でも、PHPまたはRubyまたはPythonで実装する必要があります。

これは私が自分で教えたトリックでも、オタクの信頼性のためにやったことでもありません(とにかく私のノートブックの内部を見ることはできません)。Lispは、私が考えるのに他の選択肢よりもはるかに自然あり、あなたに共鳴する言語はあなたの宝物です。

*しかし、脚注のように、Haskellは、私がそれをもっと学べば、すみやかにギャップを埋めようとしている。


6

問題は力です。電力=仕事(プログラム機能)/時間

「私たちはLispプログラマーに勝つつもりはありませんでした。C++プログラマーを追い求めていました。私たちはそれらの多くをLispに半分ほど引きずり込むことができました。」

-Java仕様の共著者であるGuy Steele

C ++とJavaの間のある種の曲線をプロットします。続けていくと、線に沿ったある時点でLispが見つかります。


2
ここでの問題は、Javaに移行する多くのC ++機能を失うが、Lispに移行するときに(多くの場合、改善された形式で)それを取り戻すことです。
デビッドソーン

@DavidT その正確な引用に関する SO質問には、ソースへのリンクがあります(「cite」を検索)。引用はそれほど真剣に受け止められるべきではありません。
マークC

@David:マクロに似ています。Java(およびC#)に参加することをやめただけでなく、それらの欠如を「美徳」にしました。基本言語の上にDSLを構築する場合、マクロは本当に便利です。
マイクダンラベイ

@Mike Dunlavey:私はC ++のマクロが本当に嫌いです(そうですね、Cのマクロは嫌いですが、そこにはあまり選択肢がありません)。Common Lispのマクロは本当に好きです。ご存知のように、このコメントに関する私の問題は、Javaが好きというよりもC ++とCommon Lispの両方がずっと好きだということです。
デビッドソーン

@David:私はあなたとLispのマクロについて100%一緒にいます。C / C ++では、彼らは醜いと虐待する傾向があるが、(のようなもののために確かフリンジ私が行う)もの、彼らがしているので、何もないよりもはるかに良いです。もちろん、私がC ++でそれをするとき、それは虐待と非常によく見なされることができます、しかし、Lispでは、それは暖かく賢いと見なされます。図を移動します。
マイクダンラベイ

6

ポール・グラハムは、Lispを別のものにしたもので、この質問に自分で答えています。

彼は1990年代半ばに彼のスタートアップにそれを使っていたので、PythonRubyはその時点ではあまり成熟していなかった(あるいは生まれていないかもしれない)ことを覚えておいてください。

Lispには基本的に動的言語のすべての利点があります。今日のWebアプリケーションのほとんどでは、PythonとRubyは非常に優れており、フレームワークとドキュメント、活気のあるコミュニティという利点があります。

キラー機能は、おそらくプログラム全体が式で作られていることです。つまり、コードのブロックは式にすぎないため、コードのブロックを関数(またはマクロ...)に渡すことができます。

Pythonにはこの機能はありません。関数を定義して渡す必要があります。Rubyにはブロックがあるようです。おそらく、Lispでできることと比べて多少制限されているでしょう(わかりません)。


Paul Grahamの記事は興味深いものです。いくつかのアイテムを除けば、最近のほとんどの言語には、彼がリストした機能があるようです。そのため、当時のLispのほうが魅力的だったのかもしれません。最近では、これらの機能を導入した言語としてより価値がありますか?
アンドレスF.

言語構文としてのASTは、依然としてLispの領域です。コンパイル時にマクロが使用可能な言語全体を持っている非lisp言語を知りません(はいコンパイラは基本的にLispプログラムであるマクロ定義にマクロ呼び出しを渡します。コンパイル時にマクロでhttpとdbを実行したいです?)
przemo_li

6

私は過去にSchemeに対してひざまずき反応をしましたが、今ではLisp(実際にはClojure)に打撃を与える準備ができています。

ご覧のとおり、Java、C#、C ++、Pythonなどの言語を少しずつ取り上げてきたので、これで問題はなくなりました。

Clojureには多くの約束があり、非常にクリーンであるように思われ、多くの現実の問題を解決できます。Clojureのようなクリーンな言語の強力な事例は、マルチコアコンピューターの出現です。

イェイLISP!

編集:ITA SoftwareはMIT卒業生によって設立され、Scheme / LispはMIT卒業生の多くが学んだ唯一の言語でした。公平を期すために、実行中のプロダクションシステムでLispアルゴリズムをホットスワップできます。これは大きなプラスです。


8
再:物事はもはや挑戦的ではありません--- Haskellを試してみて、あなたの考えを教えてください。また、いつでも変更のためにINTERCALを学ぼうとすることができます!
マークC

3
@マークC、申し訳ありませんが、私は触れていませんINTERCAL。チャレンジが唯一の基準ではありません。実際の問題も迅速に解決できなければなりません。少なくともHaskellは多くの人に使用され愛されています。
ジョブ

もちろん、それは冗談でした。
マークC

1
実稼働サーバーで実行中のコードを(慎重に!)更新することは、Lispの喜びの1つです。少なくともPythonで遊んでいたとき、Pythonはこれをうまく行いませんでした。変更を参照したすべての関数/メソッドを手動で再コンパイルする必要がありますが、すべてのCommon Lisp実装はそれを処理します。開発にも同じ力を使用します:書き込み、テスト、編集、テスト-コンパイルループは不要です。インタラクティブなテストを実行して、必要に応じて単体テストに変換できます。
マイケルH.

@Job忘れた... PLEASE
マークC

6

私がLispで気に入っているのは、パラダイムを超越していることです。Lispは機能的であると言う人もいれば、宣言的だと言う人もいれば、マルチパラダイムだと言う人もいます。これらはすべてポイントを逃していると思います。Lispを使用するとき、パラダイムはもはや制約ではありません。

オブジェクトが必要ですか?あなたはそれらを持つことができます。関数型プログラミングが必要ですか?きみにあげる。したいPrologのスタイルの論理プログラミングは?いくつかのマクロを書きます。SQLスタイルの宣言型プログラミングが必要ですか?頑張れ。まだ発明されていないパラダイムを使用したいですか?Lispでできると確信しています。

脇からフォース様の言語、私は別の言語を提供柔軟性のこのレベルを見るためには至っていません。


+1マルチパラダイムプログラミング、F#の数十年前、非常に良い点。
11

これに10回賛成できたらいいなと思います。スプーンはありません...パラダイムはありません...それはCommon Lispについての私の気持ちを非常に正確に説明しています:)
MadPhysicist

5

「高速」は測定するのが簡単なものではありません。ベンチマークする側面によって異なります。タスクとLispの実装に応じて、速度はCに近づきます。詳細については、大ベンチマークシュートアウトをご覧ください。LispのSBCL実装はJava 6 Serverと同等であり、RubyやPythonよりもかなり高速です。

しかし、プログラミング言語を選択する主な理由は純粋な速度ではありません。もしそうであれば、私たちはすべてアセンブリ言語でプログラミングしているでしょう。私にとって、Lispの毎日の喜びは、コードがコンパイルされることですが、アプリケーションを停止し、すべてを再コンパイルして、ゼロから実行を開始する必要はありません。代わりに、1つの関数を変更するだけで、その変更がどこでも有効になり、アプリケーションでその効果をすぐに確認できます。さらに、この非常に迅速な「書き込み、テスト、詳細な書き込み、詳細なテスト」アプローチにより、コードを記述しながらすぐにテストすることがはるかに容易になります(そして、これらのインタラクティブプローブを後でユニットテストに変えることができます)。

すべての行の後にボタンを押して、思考を続ける前に画面に電子メール出力をコンパイルする必要がある電子メールを書くことを想像してください。それが私にとってJavaやそのような他の言語で書くことです。時々それをする理由があり、私はJavaが素晴らしいのが好きですが、Lispはちょうどより敏感で、仕事を終わらせるのがより簡単です。


私が今日新しく始めたなら、おそらくルビーを選ぶだろう-それはLispの性質の多くを継承しているが、それはより近代的なライブラリとそれを推進する単一の慈悲深い独裁者を持っている。しかし、それはOPが尋ねた質問ではありませんでした。
マイケルH.

実際にルビーを選んで始めたのですが、今はnewLispを学ぼうとしています。
哲学者

5

Lisp(newLisp)を学ぶ理由はいくつかあります。

理由その1:Lispは私に違った考え方をさせ、それが私をより良いRubyコーダーにします。

Lispで特定の方法を実行するのは非常に厄介なようです。たとえば、複数のリストを繰り返すネストされた反復などです。そのため、のような他のものを使用せざるを得ませんmap。私のお気に入りの言語であるRubyには同じマップメソッドがありますが、馴染みがないため、いつも使用しているわけではありません:貧弱なテクニックを使用して物事を行うことを学び、言語がそのテクニックをサポートしているとき、それを使用し続けます。

理由その2:Lispは実用的で、優れた最新のライブラリを備えています。

newLispと呼ばれるための非常に素晴らしい、軽量Webフレームワークがありますトンボが。これにより、一部のタスクでPHPの代わりにnewLispコードを使用できます。私はPHPがあまり好きではなく、newLispはこの特定のタスクにとってRubyよりも楽しいようです。

理由その3:Lispは構文的および概念的に一貫しています。

私にとって、これはRubyとPythonの大きな違い、一貫性です。


+1:「Lispは構文的および概念的に一貫しています。」これは、言語の非常に重要な機能です。いくつかの不適切に設計された言語は一貫性を欠いており、それらはある順序で一緒に投げられたイディオムの大きなコレクションのようなものです(1つの言語を念頭に置いていますが、名前は付けません:-))。この点で、Lispは非常に一貫しています。時間があれば、すぐにそれを学ぼうと思います。
ジョルジオ

4

「ブランドロイヤルティ」と言えますか?

Fortranで始めました。私はそれが好きだった。

Lispに切り替えました。最初は嫌いでした。それから私はそれを愛し、Fortranを嫌うことを学びました。

後でPascal、C、C ++、さまざまなアセンブラ、C#。(実際、C#は好きではありません。)

私は気まぐれだと思う?


4

Lispが作成されたとき、彼らは計算機科学ではなく数学から始めました(実際にはまだ存在していませんでした)。そして、Lispチームは本当に正しいことをいくつか得ました。Lispは1960年頃にガベージコレクションを行いました!彼らは本当に素晴らしい仕事をしました。

永遠の炎の歌がそれをカバーしていると思います。


うん、明らかにLispは最初のGCed言語だった。
マークC

2

大きな魅力はコミュニティです。Lispは、この言語が発明されて以来、最も意欲的で優秀な開発者を引き付けてきました。人工知能(AI)の研究、コンピュータービジョン、計画、知識表現、複雑なヒューリスティック最適化のように、研究者が未解決の問題を解決しようとする場合はいつでも、Lispを見つける可能性があります。この言語は、ボトムアップとトップダウンの両方で同時に問題を解決するのに役立ちます。これは、最も困難な課題に立ち向かう際に役立つようです。

マクロを介した拡張可能な構文は、言語定義を拡張する必要がほとんどないことを意味します。より制限された言語で言語拡張を必要とするものの多くは、Lispを使用しないマクロです。そのため、Lispプログラマは、新しい言語標準がなく、必ずしも実際の速度を犠牲にすることなく、新しく開発された言語概念を自由に利用できます。基本的なレベルでは、ボイラープレートコードの連なりは、小さな拡張機能によって不要になります。Prologスタイルの統合など、制御フローのまったく新しいアイデアは、拡張機能として効率的かつコンパクトに実装されます。

OOPシステムであるCLOSは、柔軟性の点で独自のクラスです。味覚を得た後、初歩的なC ++ / Java / C#OOPに戻ることは非常に困難です。GoF  5のデザインパターンは、簡単かつ直接表現できるため不要になります。

この言語には、多くの準拠する実装を含むANSI標準がありますが、単一の企業所有者も単一の確定的な実装もありませんでした。主要な新しい実装は10年ごとに行われ、古い実装はまだかなり活発です。専門家は、専門知識を今後長い間使用する計画を立てることができます。これはアナキスティックな摩擦とコミュニティの断片化を引き起こしますが、カーペットは引き出せず、企業やプロジェクトの政治的理由で言語がmo死にならないことも意味します。常に複数の商用およびオープンソースの実装に取り​​組んでいます。パフォーマンスに重点を置いたものは、非常に高速で多額の資金を必要とする命令型言語実装の2倍の要素の中で定期的にベンチマークを行います。

初期のLisp商品化のアキレス腱は、言語の型安全機能とそこに含まれる高度なソフトウェア開発環境の両方に対応するメモリフットプリントであり、グラフィックを含む完全なオンラインドキュメントなどの素晴らしい機能を備えていました。64 MBのSymbolics Lispマシンは、8 MBのSunワークステーションに対してコスト的に実行可能ではありませんでした。今日、RAMの価格は下落しており、特に今日の主流のJava、C#、PHP言語が30年前に比べてわずかしか進歩していないことを考えると、Lisp言語に大きな関心が寄せられています。

現在、インテリジェントな開発者とのマインドシェアをめぐって、Python、LuaErlangHaskellOCamlなどの最新の言語がLispと競合しています。しかし、成熟度、適応性、複数の標準に準拠した実装、速度の同じ組み合わせを提供するものはありません。


1

私は実際にはLispをしていません。しかし、私が働いている場所では、主にFortranの何百万行もの有限要素を扱っています。私がコンピューティングに関して最も尊敬している人(計算流体力学をコード化する)は、理想的な組み合わせは外側のLisp(主にメモリ管理の厄介な問題を避けるため)であり、Fortranは低レベルのアルゴリズムであると考えています(Fortranは悪用に最適です)SSE / AVXのベクター機能、およびこのリードが閉じる可能性は低いと思われます)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.