スクリプトとプログラムの違い、インタープリタとコンパイラの違い、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 等が有名です。

IT/インフラエンジニアの地位とスキル向上のために

関連記事

IT 技術の進化はとどまることを知りません。矢継ぎ早に新たな技術が出てきたり、数年前の技術が時代遅れになったりと、IT エンジニアは勉強し続ける運命のようです。 それをどう思うかはあなた次第。 ビジネスの基本は『付加価値を与える[…]

IMG
関連記事

nesuke の考える NW エンジニアの2つの道 ネットワークエンジニアには 2 つの道があります。 1 つはネットワーク構築一筋で、L4 までをひたすらきっちりと構築していく道。 もう 1 つはネットワークを軸として深堀し[…]

IMG