意外と分からなくなる人が多いはず…と思ってまとめました。
答え
解説
そもそもプログラミング言語には、スクリプト言語とコンパイル言語の2種類存在します。
まず、人間がコーディングしたプログラムは、機械が読み込めるように機械語というバイナリファイル(0と1の集合)に変換する必要があります。 このバイナリファイルへの変換がいつ実行されたかによって、スクリプト言語とコンパイル言語に分けられることになります。
スクリプト言語
スクリプト言語は、作成したプログラムを実行するときに、機械語へ変換し、処理を稼働させるスタイルです。
インタプリタというツールがソースコードを機械語へ変換する役割を担っています。
例えば、シェル、AWK、Python、PHP、JavaScriptなどがスクリプト言語のスタイルを採用しています。シェルにはさらにbashやcsh、ksh、tcsh、powershellなど多種類存在します。
実行の流れ:
- ユーザによるプログラムのコーディング
- ユーザがプログラムを実行するためのコマンドを叩く
- 変換&処理を1行単位で進める
変換と処理を1行ずつ進める点がポイントです。
コンパイル言語
これに対してコンパイル言語は、その名の通りあらかじめ機械語へ変換(コンパイル)し、バイナリファイルを作っておくことで、プログラム実行時にはすぐに処理を稼働させる言語です。
コンパイラというツールがソースコードを機械語へ変換する役割を担っています。
例えば、C、C++、Javaなどの言語がコンパイル言語のスタイルを採用しています。(Javaは正確にはインタプリタによる変換もあるため、中間に位置する)
実行の流れ:
- ユーザによるプログラムのコーディング
- ユーザによるコンパイルの実行
- ユーザがプログラムを実行するためのコマンドを叩く
- 処理が稼働する
それぞれのメリデメ
スクリプト言語は非常に学習コストが低いため複雑な処理も簡単に書けます。しかしコンパイルしながらの実行になるため、処理が遅いデメリットがあります。
一方で、コンパイル言語は実行時にはすでに機械語になっているため処理が早いという特徴があります。しかし、あらかじめコンパイルしておくという手間が発生する点がデメリットになります。
つまり、処理速度と実行までにかかる時間のトレードオフの関係になります。
実際に使うときには、作りたいアプリケーションやシステムによって、このトレードオフを考えて選択することになります。
まとめ
シェルスクリプトはプログラミング言語の中のスクリプト言語の一つであり、実行中に機械語に変換され処理が稼働するという特徴があります。
ついでにシェルとOSとの関係を理解するには、以下のページがわかりやすいです。
eng-entrance.com