サーバアーキテクチャ

【初心者向け】スクリプトとプログラムの違い ~インタープリタとコンパイラの違い,JITエンジン~

プログラムとは

プログラムとは、OS がそのまま実行できるよう機械語に翻訳されたバイナリベースのファイルです。簡易なプログラムとしては例えば Linux でよく使うコマンド類 (cd や ls 等) です。

プログラムは Basic や C++ 等、色々なプログラム言語の形式でテキストベースで書かれた命令文のファイル (ソースコード) を、コンパイラと呼ばれるもので、OS 環境に適応できる機械語に翻訳して作られます。

つまり、あるプログラムを作るとき、ソースコードは同じでも、OS によって異なるプログラムを作るのであれば、コンパイラは異なります。

プログラムはスクリプトと比べて事前に機械語に翻訳 (コンパイル) してあるので実行速度が速いというメリットがありますが、逆に言うと、コンパイルしないと使えないので開発でのデバッグ時等は毎回コンパイルするので面倒というデメリットがあったりします。

また、プログラムはバイナリ化されているので、他者からはどのように作られているのかはパッと見では分かりません。その為、リバースエンジニアリング等によって他者がプログラムを再利用するのが難しいというメリットもあります。

ただし、オープンソースと呼ばれるものは、作者が自らソースコードをオープンにしているので、このメリットを放棄する、という宣言になります。

スクリプトとは

スクリプトとは、テキストファイルベースで書かれた命令文 ( ソースコード) のファイルのことを言います。

スクリプトはインタープリタと呼ばれるものがスクリプト言語をその場で機械語に翻訳 (コンパイル) し、その場で実行します

インタープリタを搭載しているのは OS (Linux がシェルスクリプトを実行する、等) だったりミドルウェア (ブラウザが JavaScript を実行する、あるいは Web サーバが PHP や Perl を実行する等) だったりしますが、それらに応じてインタープリタは異なりますし、そのインタープリタによってスクリプト言語も異なります

例えば Linux であれば、bash 等のシェルがインタープリタとなり、シェルスクリプトを実行します。

JITエンジン

スクリプトは、プログラムと比べて手軽な分、実行速度が遅いというデメリットがあり、最近では、実行前に事前に機械が扱い易い (つまり処理速度の速い) 中間コードにコンパイルしておく、実行時コンパイラ (JIT エンジン: Just in Time Engine) が主流です。

JIT エンジンの実装としては JAVA や C#、VB.net、eBPF 等が有名です。

コメント

タイトルとURLをコピーしました