本記事では、プログラミング初心者向けに向けて「コンパイラとは何か」について、分かりやすく解説いたします!
なお、本記事を執筆したのは、プログラミングスクール「アキバ・テックドリーム・アカデミー」(以下、テクドリ)の運営企業であるメディアファイブ株式会社(以下、メディアファイブ)に所属している現役のITエンジニア職の社員です。
コンパイラとは
コンパイラ(compiler)とは、ソースコードをすべて一括でプログラミング言語から機械語へと変換したのち、処理を実行するプログラムのことです。
この変換作業をコンパイルと呼び、コンパイルによって生成された実行ファイルを元に処理を実行します。
コンパイラ言語
コンパイラに対応する言語を「コンパイラ言語」と呼びます。
コンパイラ言語の代表例として、下記が挙げられます。
- Java
- C言語
- C#
- C++
コンパイラとインタプリタ
インタプリタとは、ソースコードを1行ずつ読み込みながらプログラミング言語から機械語へと変換し、1行ずつ処理を実行するプログラムのことです。
コンパイラとインタプリタでは、変換と実行のタイミングが異なる点に注意が必要です。
コンパイラは、ソースコードを一括翻訳することから「翻訳者」と例えられるのに対し、インタプリタは、ソースコードを随時翻訳することから「通訳者」と例えられています。
コンパイラのメリット・デメリット
コンパイラを使用するメリット・デメリットとして、それぞれ下記が挙げられます。
コンパイラのメリット
コンパイラを使用するメリットとして、下記が挙げられます。
実行速度が速い
プログラムの実行にあたり、事前にソースコードからオブジェクトコードへの変換が完了しているため、実行速度が速く、CPUへの負荷も抑えることができます。
そのため、多くの処理が発生する中規模以上のアプリケーションで多く用いられています。
不具合の早期発見
コンパイルにてソースコードの解析が行われるため、スペルミスや未定義の変数の使用といった構文エラーがある場合、コンパイルエラーとなります。
コンパイル時にミスを発見することができるため、プログラム実行時の予期せぬエラーの発生を防ぐことができます。
コンパイラのデメリット
コンパイラを使用するデメリットとして、下記が挙げられます。
実行に手間と時間を要する
ソースコードを変更する度にオブジェクトコードへの変換が必要となるため、軽微な修正であってもコンパイルしなければなりません。
そのため、プロジェクトの規模が大きくなるほど、その手間や時間が嵩み、開発速度が遅くなってしまう可能性があります。
デバックが困難
プログラムが未完成の状態では実行結果を確認することができないため、インタプリタのように動かしながら原因を特定するということが難しく、また、コンパイルが終わるまでエラー発生の有無が分かりません。
そのため、原因の特定や修正に時間がかかってしまう場合があります。
まとめ

コンパイラとは、ソースコードをすべて一括でプログラミング言語から機械語へと変換したのち、処理を実行するプログラムのことです。
コンパイラに対応する言語を「コンパイラ言語」と呼び、その代表例として、Java、C言語、C#、C++などがあります。
コンパイラに対して、ソースコードを1行ずつ読み込みながらプログラミング言語から機械語へと変換し、1行ずつ処理を実行するインタプリタがあります。
コンパイラには、実行速度が早く、不具合の早期発見が可能といったメリットがある一方、実行に手間と時間を要し、デバックが困難といったデメリットがあります。
コンパイラの特徴を理解して、目的や用途に応じた言語選択に役立てましょう。
無料のプログラミングスクール「テクドリ」の卒業生のインタビュー動画を、インスタグラムほか公式SNSにて公開中!