前置き
エンジニア初学者や、プログラミングに触り始めた方向けの記事になります!
本記事では、**「スクリプト言語・プログラミング言語(インタープリタ型/コンパイル型)
についての記事です。
言語が持つ種類として「そうやって動いてるんだー」っとイメージできるところを目指します。
スクリプト
Q.スクリプトって何?
A.コンピュータが実行する命令やコマンドを記述したプログラム
機械語(2進数)に翻訳せず、プログラムを直接実行できる言語
前提知識
Q.プログラムってどう動いているのか?
A.下記動作をする
1.コンピュータにやりたいことを書く
2.コンピュータが理解できるように翻訳する(2進数化)
3.コンピュータが実行する
詳細は下記項番で説明
翻訳作業を実行する方式=コンパイラ言語
翻訳作業を実行しない方式=インタープリタ言語 ≒ スクリプト言語
Linuxを触っている時によく耳にする言葉 →シェルスクリプト
コマンドラインインターフェース(CLI)上で実行されるスクリプトです。
シェルがスクリプト内のコマンドを1行ずつ解釈し、その都度実行します。
インタープリタ型と動きが似てます。
特徴
・習得難度: 1行完結、文書のような直感的コード
・柔軟性: コンパイルの作業がなく、すぐに実行できる
・処理速度が遅い: 1行ごとに解釈が必要、コード全体の最適化が難しい
・メモリ使用量: 使用量が多い、インタープリタが使用する
インタープリタ言語
インタープリタ型について説明します。
Q.インタープリタ型言語って何?
A. インタープリタ型言語は、ソースコードを実行時に逐次解釈して実行する言語です。
インタープリタがソースコードを1行ずつ読み取り、直接実行します。
つまり、機械語(2進数)に翻訳せず、プログラムを直接実行できる言語。
※蛇足:インタープリタとは日本語直訳で"通訳者"って意味※
Q.どんな特徴なの?
A.下記特徴を持つ。
特徴:
逐次解釈: 実行時に1行ずつ解釈しながら実行されます。
柔軟性: 実行中にコードを変更しやすく、デバッグが容易です。
比較的遅い実行速度: 逐次解釈されるため、コンパイル型言語よりも実行速度が遅いことがあります。
例: Python、JavaScript、Ruby、Perl
コンパイラ
インタープリタ型について説明します。
Q.コンパイラ型言語って何?
A.コンパイル型言語は、プログラムのソースコードを実行する前に、コンパイラによって機械語に変換(コンパイル)されるもの。
つまり、機械語(2進数)に翻訳してから実行されるもの。
この変換された機械語のファイル(バイナリファイル)は、コンピュータが直接実行できます。
特徴:
事前にコンパイル: 実行前にソースコードを一度にすべてコンパイルします。
高速な実行: コンパイル後は直接機械語で実行されるため、実行速度が速いです。
エラーチェック: コンパイル時にエラーチェックが行われるため、実行前に多くのエラーを発見できます。
例: Java、C、C++、Go、Rust
動作イメージ
下記図を参考にしてください。
コンピュータは2進数で決められた数字を使って処理を判断しています。
よって、プログラム言語で書かれたテキスト文字や記号を機械語(2進数)に変換して動かしています。
<動作説明図>
ハイブリッド動作
Java Script(JS)言語は少し特殊です
この言語はJust-In-Timeコンパイラといった動作が行われます!
これは、プログラムの実行中にコンパイルして機械語に翻訳する技術です。
頻繁に実行されるコードを見つけて翻訳しておくことで処理速度が向上します!
結論
言語によっては両方の性質を兼ねようとしているものもある
まとめ
・シェルスクリプトはインタープリタ型言語に属し、システム管理や自動化タスクなどに広く使われている。
・インタープリタ型、コンパイル型それぞれはプログラムの実行方法が異なる。
・それぞれにメリットとデメリットがある。
・開発環境やアプリケーションの要件に応じて使い分けが必要。
ただし、注意点として、一部の言語はインタープリタ型でありながらも、実行時にバイトコードへコンパイルされるハイブリッドな動作をすることもある。
以上で終了です。
学習の手助けになれば幸いです!