31

Rubyのウィキペディアのページで、この言語がインタプリタ言語として定義されていることに気づきました。
おそらく私のバックグラウンドに何かが欠けていることを理解しました。
コンパイラを必要としないインタプリタ言語とコンパイルされた言語(プログラムの実行前にコンパイルする必要がある)の違いは常に知っていますが、スクリプト言語の特徴は何ですか?
Rubyはスクリプト言語として定義できますか?

ありがとう、そして停電を許してください

4

3 に答える 3

46

物事は白黒だけではありません。少なくとも、それらは大きくて小さく、大きくて静かで、青とオレンジ、灰色と灰色、長くて短く、正しいか間違っているなどです。

インタプリタ/コンパイルは言語を分類するための1つの方法にすぎず、同じ言語を「スクリプト言語」と呼ぶかどうかから(数え切れないほどのことの中でも)完全に独立しています。それに加えて、それは壊れた分類でもあります:

  • 解釈/コンパイルは、言語ではなく、言語の実装に依存します(これは単なる理論ではなく、インタプリタとコンパイラの両方が存在する言語は確かにかなりあります)
  • コンパイラである言語実装(ほとんどのRuby実装を含むそれらの多く)がありますが、バイトコードに「のみ」コンパイルされ、そのバイトコードを解釈します。
  • ネイティブコード(JITコンパイラ)の解釈とコンパイルを切り替える実装もあります。

ご覧のとおり、現実は複雑な獣です;)上記のように、Rubyは頻繁にコンパイルされます。次に、そのコンパイルの出力が解釈されます。少なくとも場合によっては、JITコンパイルする実装もあります(Rubinius、およびIIRC JRubyはしばらくしてJavaバイトコードにコンパイルします)。リファレンス実装は長い間コンパイラでしたが、IIRCは今でもそうです。では、Rubyは解釈またはコンパイルされますか?あなたがそれを定義しない限り、どちらの用語も意味がありません;)

しかし、質問に戻りましょう。「スクリプト言語」も言語の特性ではありません。言語がどのように使用されているか、つまり、その言語がスクリプトタスクに使用されているかどうかによって異なります。定義を探している場合は、「スクリプト言語」に関するWikipediaページが役立つ場合があります(スクリプトが通常解釈されるなど、実装の詳細に関する注記と混同しないようにしてください)。スクリプトタスクにRubyを使用するプログラムは確かにいくつかあり、スクリプト(Webスクレイピング、システム管理など)として適格となる可能性が高い独立したRubyプログラムが多数あることは間違いありません。

そうです、Rubyをスクリプト言語と呼ぶことができると思いますもちろん、それはRuby onRailsWebアプリが単なるスクリプトであるという意味ではありません。

于 2011-09-02T13:41:35.293 に答える
5

はい。

詳細な回答:

スクリプト言語は通常、この言語で記述されていないことが多いアプリケーションを制御するために使用されます。たとえば、シェルスクリプトなどは任意のコンソールアプリケーションを呼び出すことができます。

Rubyは、スクリプト作成に頻繁に使用される汎用動的言語です。

以下のようなバッククォート表記を使用して、任意のシステムコールを行うことができます。

`<system command>`

WebおよびネイティブGUIを自動化するためのWatirRAutomationなどの優れたRubygemも多数あります。

スクリプト言語の定義については、こちらをご覧ください

于 2011-09-02T13:39:42.593 に答える
3

「スクリプト言語」という用語は非常に広範であり、インタプリタ言語とコンパイル言語の両方を含めることができます。特にRubyは、使用している特定の実装に応じてコンパイルまたは解釈される可能性があります。たとえば、JRubyはバイトコードにコンパイルされますが、CRuby(Rubyのリファレンス実装)は解釈されます。

于 2011-09-02T13:38:16.247 に答える