thisdesuのブログ

C言語はじめました

にほんブログ村 IT技術ブログ C/C++へ

コンパイル

コンパイルって何ぞや?って躓かないようにちょっと一息。プログラム言語には色々種類がありますが、この種類を大別すると、「高級言語」と「低級言語」にわけられます。
まず高級言語とは別にブランド品とかお高いとかではなくて、人間に分かりやすく文法で記述されたものを高級言語といいます。C言語やらC++,Java,Perlなど良く聞く言語です。逆に低級言語とは、高級言語とは逆にコンピュータに分かりやすく記載された言語を指します。マシン語アセンブラなどがそうです。プログラムの始まりは低級から始まり、高級へと進化してきた今。マシン語を見ても只の文字の羅列にしか見えないのが時の流れでしょうか。お父さん世代のプログラマーの人はマシン語のほうが得意の方もまだ頑張っているのでしょう。
■一長一短
低級言語はコンピュータに近いだけあってダイレクトに指示できるので、小さなサイズのプログラム・早く動くプログラムを作りやすいでしょう。家電などを動かしているプログラムなど組み込み系では現在かな?逆に大規模開発だと生産性・効率的・広域に見渡そうとすると涙ぐましい努力が必要です。
高級言語は日進月歩で新しい言語や新しい仕組みが進んでおり、生産性など考慮した場合には必須でありますし、要員スキル的には今や高級言語のみと言っても過言ではありません。ただ、高級言語の宿命は人間向けの言語ですので、実行するはコンピュータ向けに変換しなければなりません。これをコンパイルといいます。コンパイルというプログラムを通すので、大きめなサイズのプログラムや遅めのプログラムになってしまうのが、今どきパソコンスペックなら気にする必要は無いかなと思います。
コンパイル
目的はパソコンで実行できる形式のファイルに変換する事で、ビルドとか呼ばれることも有ります。色々コンパイラIDEなど使ってると気付きませんが、中では以下のステップを踏んでます。>br>
(第1) プリプロセッサ
C言語のプログラム内に記載している変換(define文)や入れ込み(include文)を実施したファイルにします。
ex.) gcc -E main.c

(第2) コンパイラ
記述ミスが無いかチェックします。

(第3) アセンブリ
コンピュータが分かる言語に変換します。
ex.) gcc -c main.c
(第4) リンカ
変換ファイルと他のファイルやライブラリと合体して実行ファイルにします。
ex.) gcc main.c