知りたい情報をどこよりも詳しく。

【C言語】歴史とプログラムの実行の流れを復習してみた。ファイルはコンパイルするってのだけ覚えてない?

スポンサードリンク

独学でC言語を触っていた時期があったのですが、もう結構忘れてきまして…(笑)

本日よりC言語を改めて復習していこうかなぁ、と思います。もしC言語を触ってみたい!とか、これからC言語を勉強したい!って人は今回の記事から順を追って僕の記事を読んで頂ければ中級者レベルくらいにはなるかと思います。

 

市販に売っている書籍は細かい部分を解説していない部分がありますので、一度C言語を学んだ経験を活かして、詳しく解説できる部分は解説していこうかと思います。

では、今回は導入部分としてC言語の紹介をしながら、歴史や実行の流れを解説していきましょう。

C言語の歴史

C言語は、今からおよそ50年前の1970年代に開発された言語で、アメリカのAT&Tのベル研究所で開発されました。開発したのは、D.M.リッチー博士という人です。

C言語は、UNIXというOS用に記述する為に開発されました。(UNIX? OS?ってなった人は読み飛ばしても構いません。簡単に言うとUNIXはOSの仲間で、OSというのはコンピューターの基軸となるソフトウェアの事です。例えば、WindowsやMac OS X, iOS, AndroidなどがOSと呼ばれます。)

汎用性が高いのが特徴で、OSに限らず目的に応じたプログラミングが可能です。

アプリケーションやハードウェア言語としても優秀な言語となっています。

 

C言語は、「アセンブラ」と呼ばれるコンピューターが理解する言語に近い言語との親和性が高く、ハードウェアを開発しやすかった事により普及しました。また、Wikiではこのようにも書かれています。

UNIX環境での実績があり、後述の K&R といった解説文書が存在していたことなど、さまざまな要因からC言語は業務開発や情報処理研究での利用者を増やしていった。

-Wikipediaより引用

そして1980年代になり、パーソナルコンピューターが普及し始めてからC言語はかなりのユーザーを獲得することに成功しました。

PCの普及により安価なコンパイラ(C言語を実行するためのソフトウェア)も出現しました。この出来事により、C言語は世界的に広まっていったのです。

 

そして1990年代、プログラミングの教育が盛んになってきた頃。初学の言語として「C言語が最適である」という風潮が形成され、C言語はより多くの人に使われるようになりました。C言語は高級言語でありながら低水準のプログラムを組む事ができるので、PCが進化しても依然自由にプログラミングをする事が可能でした。(移植性が高かったのも普及の理由の1つです。)

 

そして現在、C言語は不動の位置を占め、プログラミングを学ぶ上では避けて通れない言語となりました。C言語はコンピュータを理解する上で大事な要素がたくさん詰まっており、現在も組み込み系コンピューターでは多くの製品にC言語が使われています。

 

C言語のプログラムの流れ

C言語はコードをテキストエディットなどで記した後、.cとして拡張子を設定し、ファイルを作成します。そしてその.cファイルを実行するのですが、多くの書籍ではこの実行の流れを省いています。コンピュータの動きを理解する上で外せない内容なので、是非ここも押さえておきましょう。

.cファイルを作成し、コンパイルという作業をするのですが、実はその前にもう1つ作業を行います。それが、「プリプロセス」です。

プリプロセスはコンパイルの前にプリプロセッサーが行い、簡単にそのコードを解釈します。そして解釈したものをコンパイラに渡し、コンパイルするという流れになるのです。

 

コンパイルという作業は、言い換えると「アセンブリ言語にする」と言う事です。C言語のコードは人間が理解できても、コンピュータには理解できないので、まずはコンピュータに理解してもらう必要があります。そのための手順がコンパイルという訳です。

 

コンパイルした後はさらにアセンブルという作業を行います。コンパイルした後は、実はコンピュータに理解できるコードに変換されている訳ではなくただの「アセンブリ言語」になっているだけで、これはコンピュータが理解できる「機械語」と「C言語」の間の言語だと思っておけば大丈夫です。

コンパイルで変換されたアセンブリ言語をアセンブラに通し、アセンブルを行います。すすとそのアセンブリ言語はようやくコンピュータが理解できる「機械語」へと変換されるのです。

 

実はコンピュータの中でこのように細かく流れがあるのですが、ここまできてもまだ実行には至りません。ファイルをコンパイルすると、オブジェクトファイルというものが生成されます。

 

オブジェクトファイルは、.cファイルの数だけ作成されます。そしてそのオブジェクトファイルを1つに統合し、ようやく実行に至るのです。

その統合する作業を「リンク」と呼びます。リンクはリンカ内部で行われ、複数のオブジェクトファイルをまとめる役割を持っています。まとめた後、a.outという実行ファイルが生成されます。このファイルができて、初めてC言語を実行する事ができるのです。

まとめ

今回学習した用語・内容

・C言語はコンピュータに近い言語で、プログラムの自由度が高い

・プリプロセス

・コンパイル

・アセンブル

・リンク

上の項目用いて、C言語の歴史や実行の流れを説明できればバッチリです。

今回は導入ということで歴史や細かい実行の流れをみてきました。

是非、復習に役立ててください。

スポンサードリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

%d人のブロガーが「いいね」をつけました。