ざっくりと
- ソースコードを翻訳する
- コンピューターが理解できる言語に変換
- プログラミングとコンピューターの橋渡し役
コンパイラとは、ソースコードをコンピューターが理解できる言語に翻訳する役割を持ります。
概要説明
コンパイラとはプログラムの翻訳家である。なぜなら、人間が書いたソースコードをコンピューターが理解できる形に変換するからだ。
例えば、C言語のコードであれば、コンパイラはそれを機械語に翻訳する。そして、その結果、コンピューターは命令を実行できる。つまり、コンパイラは人間とコンピューターのコミュニケーションを可能にする。
だから、コンパイラはプログラミングの世界で必要不可欠な存在なのだ。
職業職種
プログラマー
プログラマーは、コンパイラを頻繁に使う。なぜなら、彼らが書いたソースコードをコンピューターが理解できるようにするためだ。例えば、コンパイラがなければ、書いたコードはただの文字列に過ぎない。
学生
学生は、コンパイラを学ぶ。なぜなら、コンピューターサイエンスの勉強を深めるためだ。例えば、プログラミングの基礎を学び、実際にコードを書く時には、コンパイラがどのように働くかを理解していると役立つ。
ソフトウェアエンジニア
ソフトウェアエンジニアは、コンパイラを使って製品を開発する。なぜなら、コンパイラを通じて彼らのアイデアが具体的な形を持つからだ。例えば、新しいアプリケーションを開発する時、コンパイラはソースコードを実行可能なプログラムに変換する。
コンパイラの名前の由来は、英語の”compile”(編集)から来ています。これはソースコードをまとめて、コンピューターが理解できる形に「編集」するという機能を表しています。
代表例
Microsoft
Microsoftは、Visual Studioという開発環境で知られている。その中に含まれるC#やVB.NETのコンパイラは、Microsoftの手によって作られたものだ。
GCC
GCCは、GNU Compiler Collectionの略で、フリーのコンパイラ集だ。CやC++、Javaなど、さまざまなプログラミング言語をサポートしている。
LLVM
LLVMは、コンパイラのフレームワークで、さまざまな最適化や生成機能を提供する。Appleの開発環境Xcodeでは、LLVMが使われている。
手順例
プログラムを書く
まず、C言語で何か書いてみよう。例えば、”Hello, World!”と表示するプログラムを書いてみよう。
ファイルに保存
次に、そのコードをファイルに保存する。このとき、拡張子を”.c”にしよう。
コンパイルする
コマンドプロンプトを開き、GCCなどのコンパイラを使ってコードをコンパイルする。このとき、gcc source.c -o output
と入力しよう。ここで、source.c
はソースコードのファイル名で、output
は生成される実行可能ファイルの名前だ。
類似語
インタプリタ
インタプリタもプログラムを機械語に翻訳するが、コンパイラと違って一行ずつ変換してすぐに実行する。PythonやRubyなどはインタプリタ型の言語だ。
アセンブラ
アセンブラは、人間が読みやすい形式のアセンブリ言語を機械語に変換する。最も基本的なコンピュータの命令を扱う。
リンカ
リンカは、複数のオブジェクトファイル(コンパイラの出力)を結合して一つの実行可能ファイルを作る。ライブラリのコードとメインのコードをつなぎ合わせるのもリンカの仕事だ。
反対語
インタプリタ
インタプリタは、コンパイラとは反対だ。なぜなら、コードを一行ずつ即時に実行するからだ。例えばPythonはインタプリタ言語。
デコンパイラ
デコンパイラも反対の概念だ。なぜなら、機械語をソースコードに戻す作業だからだ。例えばJava Decompiler。
ソースコード
ソースコードは、コンパイラとは全く違う。なぜなら、コンパイラが翻訳する元の言語そのものだからだ。例えば、JavaやPythonのプログラム。
会話例
-
学校の授業
Q.「授業でJavaを使うけど、コンパイラって何?」
A.「コンパイラは、君が書いたJavaのソースコードをコンピュータが理解できる形に変換してくれるよ。」 -
友達との話題
Q.「あいつ、Pythonしか使えないって聞いたけど、それってコンパイラがないからじゃない?」
A.「それは違うよ。Pythonはインタプリタ型言語だから、一行ずつ実行するんだ。」 -
プロジェクトの進行
Q.「このコード、なんでコンパイラ通らないの?」
A.「そこの構文が間違ってるからだよ。」
注意点
コンパイラを使用する時の注意点はソースコードのエラーだ。なぜならば、構文エラーやランタイムエラーがあるとコンパイラは動作しないからだ。
例えば、Javaでセミコロンを忘れるとエラーになる。そしてエラーはコンパイラが教えてくれる。だから、エラーメッセージはちゃんと読もう。
コンパイラとインタプリタは、間違えやすいので注意しましょう。コンパイラは全てのコードを一度に機械語に翻訳し、インタプリタは一行ずつ即時に実行します。
コメント