C言語 | コンピュータシステム開発 | Cプログラミング言語
この記事では、C言語の特徴、標準規格、高級言語と機械語の関係を説明します。
Cプログラミング言語
C言語は1972年に誕生しました。高級言語でありながら低レベルの制御も可能なため、OS、組み込み機器、ゲームなど、性能が重要なソフトウェアで広く使われています。
C++は、オブジェクト指向プログラミングへの対応など、追加機能を備えたC言語の拡張です。C言語を学ぶと、その構文やプログラミングモデルの影響を受けた多くの言語も理解しやすくなります。
国際標準
C言語のソースコードは、コンパイラによって機械が実行できる形式へ変換されます。構文を標準化すると、特定のコンパイラ方言に依存しない移植可能なプログラムを書けます。
主な標準化の経緯は次のとおりです。
| 年 | 規格 |
|---|---|
| 1972 | 標準化前にC言語が誕生 |
| 1989 | ANSI X3.159-1989、通称C89 |
| 1990 | ISO/IEC 9899:1990、通称C90 |
| 1999 | ISO/IEC 9899:1999、通称C99 |
| 2011 | ISO/IEC 9899:2011、通称C11 |
| 2018 | ISO/IEC 9899:2018、通称C17 |
標準化以前は、Brian Kernighan氏とDennis Ritchie氏による The C Programming Language が重要な参考資料でした。著者名の頭文字からK&Rと呼ばれます。

コンパイラが対応する標準バージョンや拡張機能には違いがあります。移植性が重要なプログラムでは、対象ツールチェーンの対応状況を確認してください。
機械語と高級言語
CPUが直接実行するのは機械語です。アセンブリ言語は機械命令を読みやすい記号で表しますが、機械語やアセンブリ言語だけでの開発はコストが高く、保守も難しくなります。
高級言語は、人が読み書きしやすいように作られています。C言語のソースコードは実行前にオブジェクトコードへコンパイルされます。効率的なプログラムを作れますが、コンパイル済み実行ファイルは一般に対象システムへ依存します。
一方、インタプリタ型言語はソース命令を読み取りながら実行します。対話的な開発に向いていますが、実行時に解釈処理が必要です。
C言語は、ソフトウェアとコンピュータシステムの関係を理解し、ハードウェアに近い効率的なプログラムを作るために今も役立ちます。