WisdomSoft - for your serial experiences.

Cとは?

C言語の基本的な性質と、国際標準規格の関係について解説します。

プログラミング言語C

C 言語は 1972 年に誕生したプログラミング言語で、C++ 言語も含めて現在使われている多くのプログラミング言語の基礎となっています。アセンブリ言語のような非常に細かい制御を行うことができる高水準言語で、制限が少なく自由度の高いプログラミング言語として 80 年代以降で広く普及しました。ハードウェア寄りのプログラムに適している言語であるため、OS の中核部分や家電製品などに組み込まれる機器の制御用プログラム、ゲームなどの幅広い分野で実用されています。

現在では C 言語をベースとする C++ 言語と合わせて使われることが多いです。C++ 言語は、1980 年代に登場した C 言語を拡張したプログラミング言語です。文法を C 言語から引き継いでいるため、C 言語で書かれたプログラムの多くは、そのまま C++ 言語としてコンパイルできます。そのため、C++ 言語のコンパイラは C 言語のコンパイラとしても利用できるものが一般的です。C++ 開発環境があれば、C 言語を学習できます。

C 言語は誕生から現代に至るまで、長い歴史を持ち、その間に多くのプロフェッショナルプログラマに愛用されてきた共通の言語でもあります。現在でも、C 言語はプロフェッショナルプログラマへの登竜門的存在であることはよく知られています。

国際標準

C 言語で書かれたプログラムはコンパイラによって機械語に翻訳されなけれな実行できません。そこで、様々なシステム向けにコンパイラが作られるわけですが、コンパイラを作る人が勝手に新しい機能(文法)を追加したり、一部の機能を改変したらどうなるでしょう。C 言語の方言が大量に生成され、ソースコードが固有のコンパイラに依存してしまい、他のシステム用のコンパイラではコンパイルできなくなってしまいます。

こうした問題が発生しないように、世界中で使われる実用度の高いプログラミング言語の多くは国際標準化機構 (International Organization for Standardization, ISO)で、明確に文法が定められています。標準化機関によって定められている文法のことを仕様と呼び、この仕様に基づいて開発されたプログラムを実装(または処理系)と呼びます。ISO 標準に従っていれば、実装に依存することなく、同じコードを確実にコンパイルできます。

C 言語のような歴史のある言語の場合、ISO 標準にもいくつかのバージョンが存在します。最初の標準は 1989 年に米国で制定された ANSI X3.159-1989 です。その後 ISO/IEC 9899:1990 で国際標準化され、現在でも、この標準規格が C 言語の主流となっています。

図1 C言語標準化の歴史
図1 C言語標準化の歴史

1989年に ANSI で標準化されるよりも以前は、C 言語を開発した Brian Kernighan 氏と Dennis Ritchie 氏による共著「プログラミング言語 C」(The C Programming Language)が標準でした。これを2人の名前の頭文字から K&R とも呼びます。現在でも C 言語の開発者にとって聖書的な本で、教科書として推奨する技術者も少なくありませんが、コードが古く、加えて初心者にとって学びやすい本とも言えません。コレクションとしてはお勧めしますが、学習用には別の書籍をお勧めします。

プログラミング言語C 第2版 ANSI規格準拠
4320026926

その後の国際標準規格は ANSI X3.159-1989 をベースとしているため、今でも C 言語の標準を ANSI と呼ぶことも少なくありません。1990 年に制定された ISO/IEC 9899:1990 は通称 C90 と呼ばれ、最新の標準規格は 1999 年に制定された ISO/IEC 9899:1999 を通称 C99 と呼びます。

主流なコンパイラの多くは C90 に準拠していますが、C99 への対応にはバラつきがあります。現在では C 言語の機能しか利用しないコードでも C++ 言語のコードとしてコンパイルすることが多く、機能的にも C++ が優れているため、C 言語の仕様を拡張する必要性が少ないためでしょう。