第1章 はじめに

1. C言語とは

まずは、簡単なC言語の説明から始めます。

C言語は、1972年にUNIXの開発のためにAT&Tベル研究所のカーニハンとリッチーによって誕生した、システム記述および汎用プログラミング言語です。当初はDEC社のPDP-11というミニコンピュータ上でUNIX専用として利用されていましたが、その汎用性と効率の高さから、現在ではワークステーションやパーソナルコンピュータ、組み込みシステムなど幅広いプラットフォームで採用されています。

C言語は、歴史的な経緯から『The C Programming Language』というカーニハンとリッチーによる解説書に基づく「K&RスタイルのC言語」として親しまれていましたが、1989年にANSIによって制定されたANSI C(後にISO/IEC 9899:1990として国際標準化された)を機に、構文や機能が改良・拡張されました。その後も、C99、C11を経て、最新のISO/IEC 9899:2018(C18)規格において、現代のソフトウェア開発や組み込みシステムの要件に対応すべく、言語仕様が整備されています。

(C言語の特徴)

  • 簡潔な表現方式: プログラムの記述がシンプルで読みやすい。
  • 豊富な演算子と制御構造: 効率的なデータ操作やフロー制御を実現するための機能が揃っている。
  • 低水準の操作: ポインタやビット操作を通じて、ハードウェアに近い制御が可能。
  • フリーフォーマット: プログラムの書式にほとんど制約がなく、開発者のスタイルに柔軟に対応できる。
  • 高い移植性: 異なるハードウェアやOS上での実行が容易なため、多くのシステムで利用されている。

このように、C言語はその歴史的背景と共に進化を遂げ、今なお幅広い分野で信頼されるプログラミング言語として活用されています。


初めてプログラム言語を学習する方にはこれらの記述は難しいかもしれませんが、学習を続けているうちに少しずつC言語の特徴が理解できてくると思います。まずは臆せず先に進んで行きましょう。

2. Cプログラムの作成手順

(1) ソースコードの作成

最初のステップは、エディタを用いてソースコードを作成することです。
つまり、C言語の文法に則った命令文を記述して、ファイルとして保存します。
エディタで作成したソースファイルは拡張子「.c」で保存され、例えば「sample」というプログラム名であれば、ソースファイルは「sample.c」となります。
エディタはVisual Studio Code、Vim、Emacs、Notepad++など、使いやすいものを選択してください

(2) コンパイル

ソースコードは、人間が理解しやすい高水準言語で記述されていますが、コンピュータが直接実行できるわけではありません。
そのため、Cコンパイラ(例:GCC、Clang、Microsoft Visual C/C++)を用いて、ソースコードを機械語に翻訳する「コンパイル」を行います。
コンパイルの結果、各ソースファイルはまず「オブジェクトファイル」として変換されます。
なお、環境やコンパイラによってはオブジェクトファイルの拡張子が「.o」や「.obj」など異なる場合があります。
C言語は1972年に誕生しましたが、その後、ANSI C、ISO C90、C99、C11を経て、現在はISO/IEC 9899:2018(C18)の標準に準拠しているため、最新の言語機能やライブラリを利用可能です。

(3) リンク

オブジェクトファイルだけでは単独で実行可能なプログラムとはなりません。
プログラムとして実行するためには、オブジェクトファイル同士をはじめ、標準ライブラリや必要に応じて開発者が作成した他のオブジェクトファイルなどをひとつにまとめる「リンク」の処理が必要です。
このプロセスは、リンカ(Linker)と呼ばれるツールによって行われ、リンクが完了すると実行可能形式のバイナリ(例:Windowsでは「.exe」、Linuxでは拡張子なし)が生成されます。

【プログラムの作成手順】

3. Cプログラムのスタイル

Cプログラムのスタイルについてまとめます。 4 と 5 については最初はわかりづらいかもしれませんが、プログラムの学習を進めて行くにつれて慣れてくると思います。 とりあえず、1,2,3,6 について理解しておいてください。

  1. プログラムは int main(void)で書き始める。
  2. 慣用的に小文字を用いて書く。
  3. 文の終わりにセミコロン( ; )をつける。
  4. 複合文は { } で囲み、ブロック化する。
  5. インデント(字下げ)で読みやすくする。
  6. C言語では、以下の2種類のコメント(注釈)が利用。
    ・ 複数行コメント: /* … */
    ・ 一行コメント: // …
  • 第1行目の #include は「printf()」という関数の宣言をしている「stdio.h」というファイルを取り込むという記述です。第18章で詳しく説明していますが、今はとりあえず、書かなければならない部分だと理解しておいてください。
  • main(void) の「void」と 最終行の「return 0;」については第11章 関数で説明します。とりあえず、書かなければならない部分だと理解しておいてください。
  • 「int main(void)」の「int」については第11章 関数で説明します。

コメント