IT業界にいると、用語の厳密性に頭を悩まします。特にプログラムという言葉は、誤用が多く見られます。これは特に、プログラムとスクリプトと対比したとき、その誤用が顕著に見られます。
ポイント
- スクリプトとは何か
- プログラムとは何か
- スクリプトとプログラムの違いは何か
スクリプトとは何か
「スクリプト(Script)」という言葉は、ラテン語の「scriptum(文章)」が語源になっています。現在の英語においては「台本」や「脚本」、「手書き」などの意味です。
ファンタジー小説やRPGが好きな方には、「魔法の呪文」という意味を思い浮かべるかも知れません。コンピューターシステムにおける「スクリプト」もそれらと似ています。
スクリプトとは、人間が理解しやすい言葉で記述された、コンピューター上で実行できる命令の集合体です。このような用途で用いるスクリプトは、特定の「スクリプト言語」(Script Language)の定めに従って記述されます。
スクリプト言語はコンピューターだけでなく、最近ではロボットを制御したり、またはゲーム内機能の拡張などにも用いられています。そのためスクリプト言語には、有名なものから無名なものまで、多種多様に存在します。
有名なスクリプト言語の一例
- JavaScript
- Lisp
- Lua
- R
- Python
- Ruby
- Bash
- etc…
プログラムとはなにか
「プログラム(Program)」の語源はギリシャ語「graphein」(書く)に、前置詞の「pro」(公にする)が合わさって生まれた言葉です。プログラムの本来の意味は「公示する」になります。それがラテン語に取り入れられ、「pro-gram」(文に書き示す)という形に変化しました。現在、プログラムという言葉は多くの意味を持っていますが、概ね以下の意味です。
・舞台や映画・公演の「演目」
・何らかの「計画」
・コンピューターシステム等における「一連の命令」
私達ITエンジニアにおいては、プログラムというと「コンピューターシステム等における一連の命令」がプログラムです。
両者の違いとは?
よく新入社員に聞かれる質問として「プログラムとスクリプトって何が違うんですか?」というものがあります。
【スクリプトの語源/意味】
- 語源:scriptum
- 台本
- 脚本
- 手書き
【プログラムの語源/意味】
- 語源:pro-graphein、pro-gram
- 公示する
- 文に書き示す
- 演目
- 計画
両者の意味が、とても似通っていることに気づくと思います。ですが、プログラムとスクリプトには、明確な違いがあります。
プログラムとスクリプトの違い
- スクリプトとは、人間が理解できる形で記述された、一連の命令の総称
- プログラムとは、人間もしくは機械が理解できる形で記述された、一連の命令の総称
要するに、プログラムとスクリプトの違いは、プログラムの方が概念が大きいということです。これは、プログラムの中にスクリプトとも含まれるということを意味します。
スクリプト言語は、実行の際にインタープリターという仕組みを用います。要は「実行の際に、プログラム(スクリプト)とコンピュータの間に入って、命令の翻訳をしてくれる仕組み」のことです。
対して、プログラムをコンピュータが直接扱えるように、機械語へ翻訳する仕組みがあります。これをコンパイラーといいます。機械語に翻訳されたプログラムは、実行の際にコンピューターと1対1で命令を行えるために、効率よく動作します。
プログラムとスクリプトの違いにおいて、インタープリターとコンパイラーは直接には関係ありません。スクリプト言語はインタープリターを用いますが、コンパイラーを搭載したスクリプト言語も存在しますし、サードパーティがコンパイラーを提供することもあるからです。
また、Javaはコンパイラーを用いてコンパイルしますが、コンパイルの結果得られるものは、中間コードです。これらの関係から、スクリプトとプログラムの対比に、コンパイラーやインタープリターを用いることは不適切であることが理解できるでしょう。