web-dev-qa-db-ja.com

Rubyスクリプト言語またはインタープリター言語ですか?

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

ブラックアウトをありがとう、許してください

29

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

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

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

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

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

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

43
user395760

はい。

詳細な応答:

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

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

以下のようなバックティック表記を使用して、任意のシステムコールを作成できます。

`<system command>`

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

スクリプト言語の定義については、 ここ を参照してください。

4
peakxu

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

3
Óscar López