まず、スクリプト言語は通常コンパイルされません。これは、一般的にスクリプト言語として定義されているものの大部分です。多くの場合、代わりに「解釈」されます。これが本質的に意味することは、テキストをリアルタイムで読み取り、操作を行ごとに実行している別の言語(ほとんどの場合、コンパイルされている言語)があることです。
この言語と他の言語の違いは、スクリプト言語はより単純になる傾向があることです(一般に「高レベル」と呼ばれます)。ただし、コンパイラは、コーディングの「人間の要素」に伴う多くの問題を最適化する傾向があるため、少し遅くなる傾向があり、結果として得られるバイナリは、マシンに対してより小さく、より速く読み取る傾向があります。さらに、コンパイルされたプログラムで、実行中のコードを読み取るために実行する必要がある別のプログラムからのオーバーヘッドが少なくなります。
今、あなたは、「それは少し簡単だと思いますが、一体なぜ誰かがそのパフォーマンスを少しでも使いやすくするために放棄するのでしょうか?」と考えているかもしれません。
この仮定はあなただけではありませんが、スクリプト言語で行う傾向に応じて、スクリプト言語で何をしているのかによって、パフォーマンスを犠牲にするだけの価値があります。
基本的 に、実行されるプログラムの速度よりも開発の速度が重要な場合、スクリプト言語を使用します。 ゲーム開発には、このような状況がたくさんあります。特に、高レベルのイベント処理のような些細なことを扱う場合。
編集:luaがゲーム開発でかなり人気がありそうな理由は、おそらく世界最速の(最も高速ではないにしても)最も一般的に利用可能なスクリプト言語の1つだからです。ただし、この余分な速度により、利便性の一部が犠牲になりました。とはいえ、CやC ++をそのまま使用するよりも、おそらく間違いなく便利です。
重要な編集: さらなる調査の結果、スクリプト言語の定義に関して、さらに多くの論争があることがわかりました(Ousterhoutの二分法を参照)。言語を「スクリプト言語」として定義することの第一の批判は、それが解釈またはコンパイルされる言語の構文またはセマンティクスにとって重要ではないということです。
通常「スクリプト言語」と見なされる言語は、コンパイルされるのではなく、通常、伝統的に解釈されますが、「スクリプト言語」としての定義の長短は、実際に人々がそれらを見る方法と作成者がそれらを定義する方法の組み合わせ次第です。
一般的に、言語は次の基準を満たしていれば、簡単にスクリプト言語と見なすことができます(Ousterhoutの二分法に同意すると仮定します)(上記のリンクされた記事による)。
- 動的に入力されます
- 複雑なデータ構造をほとんど、またはまったく備えていない
- それらのプログラム(スクリプト)は解釈されます
さらに、別のプログラミング言語(通常はスクリプト言語とは見なされない言語)と対話して機能するように設計されている場合、その言語はスクリプト言語であると受け入れられることがよくあります。