厳密に言えば、コンパイルされた言語として解釈されることはありません。LISPはコンパイルされた、またはインタープリットされた言語ですか?
しかし、一般に、LISPはPython、bashスクリプト、バッチスクリプトなどのスクリプトを書くために使用されていますか?
また、C++、JAVA、C#などの汎用プログラミング言語ですか?
誰でも簡単に説明できますか?
厳密に言えば、コンパイルされた言語として解釈されることはありません。LISPはコンパイルされた、またはインタープリットされた言語ですか?
しかし、一般に、LISPはPython、bashスクリプト、バッチスクリプトなどのスクリプトを書くために使用されていますか?
また、C++、JAVA、C#などの汎用プログラミング言語ですか?
誰でも簡単に説明できますか?
Lispプログラミング言語とDartmouth BASICの初期のバージョンは、インタプリタ言語の例です(ソースコードを解析し、その動作を直接実行します)。しかし、Common Lisp(現バージョン)はコンパイラ言語です。
ほとんどのLispコンパイラはJust In Time
コンパイラではありません。あなたはプログラマがコンパイラを呼び出すことができます。例えば、Common Lispで関数COMPILE
とCOMPILE-FILE
を使用します。その後、Lispコードがコンパイルされます。
さらに、コンパイラとインタプリタの両方を備えたほとんどのLispシステムでは、解釈されコンパイルされたコードの実行を自由に混在させることができます。同時に実行されているそれぞれの一部と -
詳しくはhere
最初のLispコンパイラは1960年に完成しました。 –
Rainerのコメントに加えて、インタラクティブなタイプのLISシステム(実際にはCMUCLと思います)は、私はラケットがこれと同じように動作することを疑う。 – tfb
@tfb:コンパイラのみの実装がいくつかありますが、CMUCLにはインタプリタがあります。通常のデフォルトはコンパイラを使用することです。 SBCL(CMUCLのフォーク)はコンパイラのみを使用していましたが、しばらく前にインタープリタが追加されています。 –
伝統的に確認するため、LISPは解釈又はコンパイルすることができます。コンパイルは、場合によっては、JAVAのような仮想マシンになります。
LISPは汎用プログラミング言語ですが、それ以上はほとんど使用されません。マイクロコード化されたLISPマシンでは、ネットワーク、グラフィックス、プリンタドライバなどのオペレーティングシステム全体がすべてLISP自体で書かれていました。例えば、最初のIMAPメールクライアントは、完全にLISPで書かれていました。
珍しい構文は、Pythonのような他のプログラミング言語をより魅力的にする可能性があります。しかし、注意深く見れば、Perlのような一般的な言語でLISPに触発された要素を見つけることができます。
ああ、そうです。 Common Lispは汎用言語として現在も使用されています。 Pythonよりもオーバーヘッドが少なく、Javaと比較してパフォーマンスが優れています(最適化されている場合はC言語に比べて比較的簡単です)。養子縁組の低さの理由は、ほとんど外的である。 – Svante
@Svante、私は公平に答え、コンパイラ/インタプリタの問題に触れ、LISPを汎用言語として分類しました。私は皆さんが「まれに」私の使用に投票したと仮定します。 SOのCommonLispタグフォロワーは、言及された他の言語の平均の〜200分の1です。 [TIOBE Index](http://www.tiobe.com/tiobe_index)は、現在および長期トレンドデータでこれを確認しています。他の言語はTIOBEトップ5にあり、Lispは28、CommonLispはトップ50の外にあります。彼らの数字を翻訳すると、1,500人のプログラマーにLISPが1つ置かれ、病気だった場合、米国ではまれに分類されます。 – cdlane
PythonとLispのいくつかのプログラミング言語のPeter Norvigとのパフォーマンス比較:http://norvig.com/python-lisp.html。行列の乗算や配列のアクセスでは、PythonはLispの100倍の速度に似ています。私は構文や機能パラダイムが初心者には挑戦的であるが、オーバーヘッドではないというあなたの指摘を見ることができます。 – FrankS101
Lispはコンパイルされた汎用言語で、現代的に使用されています。明確にするために
:Common Lispには、ANSI標準
コードは通常コンパイルされ、イメージに読み込まれます。システム全体の個々のパーツ/ファイルがコンパイルされロードされる順序は、通常、システム定義機能(現在は主にASDFを意味します)によって定義されます。
ほとんどの実装は、起動時にソースコードを読み込む手段も提供します。例:
sbcl --load 'foo.lisp'
これは、彼らは非常に可能性の高い実行前にコンパイルされますにもかかわらず、「スクリプト」としてlispのソースファイルを使用することも可能になります。
これは奇妙な質問です。Pythonはスクリプトを書くのに使われていますが、科学コミュニティは膨大な量のPythonインフラストラクチャに依存して作業を完了しています。私はテロバイトのデータを後処理するためにPythonコードを書いています。 – tfb
私は本当に意味をなさないという前提に基づいているため、この質問を議論の対象外としています。言語をコンパイル、解釈、またはその両方にすることはできますが、これはそれを一般的な目的または特別な目的にするものではありません。さらに、この質問は既に多くの場所で簡単に答えられています。 –