#02:コンパイラとインタプリタを理解しよう
ここでは、プログラミング言語に関連した開発ツールについて学習します。そのために、コンパイラとインタプリタの特徴を理解しましょう。
- ソースコードをマシン語に一括変換(コンパイル)する
- 変換したマシン語のコードを実行するため、実行スピードが速い
- コンパイルに時間がかかる
- 変換したマシン語は、OSや動作環境ごとに互換性がない
- 実行する環境と異なるOSでコンパイル > クロスコンパイル
代表的なプログラミング言語:C言語、C++
- ソースコードを逐次解析しながら処理をおこなう
- OSや動作環境に対応したインタプリタがあれば、ソースコードを処理できる
- ソースコードを修正した場合、すぐに実行できる
- 逐次解析しながらのため、実行スピードが遅い
代表的なプログラミング言語:BASIC、Bash
- ソースコードを中間コードに変換する
- インタプリタと比較して、実行スピードが速い
Java
- 事前に、ソースコードを中間コードに変換する
- 中間コードをJava仮想マシンで実行 > 中間コードは、OSや動作環境に非依存
- Java仮想マシンが、実行時にマシン語に変換
Python・Ruby・PHP・Jaavscript
- 実行時に、ソースコードを中間コードに変換
- 仮想マシンで中間コードを逐次処理
Just-In-Timeコンパイラ:実行時におこなうコンパイル
プログラミング言語の処理系を開発できるコンパイラ基盤
- プログラミング言語やコンピュータから独立
- 仮想マシンを対象にした中間コードを生成
- その中間コードから、特定のコンピュータのマシン語を生成
コンパイル時・リンク時・実行時などあらゆる時点で積極的な最適化
代表的なプログラミング言語:Swift、Clang(C、C++、Objective-C、Objective-C++)
ウェブブラウザで動作する仮想マシン+中間コード形式
- JavaScriptよりも高速な実行環境を提供
- 主要なウェブブラウザがサポート
(Firefox、Chromium、Google Chrome、Microsoft Edge)
- 複数のプログラミング言語から利用できる
代表的な対応言語:C、C++、Rust、Go、Kotlin
コンパイラとは - IT用語辞典 e-Words
http://e-words.jp/w/%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9.html
インタプリタとは - IT用語辞典 e-Words
http://e-words.jp/w/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF.html
中間コードとは - IT用語辞典 e-Words
http://e-words.jp/w/%E4%B8%AD%E9%96%93%E3%82%B3%E3%83%BC%E3%83%89.html
LLVM - Wikipedia
https://ja.wikipedia.org/wiki/LLVM
WebAssembly - Wikipedia
https://ja.wikipedia.org/wiki/WebAssembly