C言語 しーげんご
プログラミング言語コンパイラポインタUNIXシステムプログラミング手続き型言語
C言語について教えて
簡単に言うとこんな感じ!
C言語は、コンピューターに「機械語に近い命令」を直接出せる古参のプログラミング言語だよ。1970年代生まれなのに今もOS・組み込み機器・ゲームエンジンの根幹で動いてる、まさに「ITインフラの縁の下の力持ち」なんだ!
C言語とは
C言語は1972年にAT&Tベル研究所でデニス・リッチーによって開発された汎用プログラミング言語です。手続き型言語(処理手順を順番に記述するスタイル)に分類され、ハードウェアに近い低レベルな操作と、人間にも読みやすい高レベルな記述の両方を兼ね備えているのが最大の特徴です。
もともとUNIXオペレーティングシステムを書き直すために設計されたため、メモリを直接操作する「ポインタ」や、処理速度を優先した設計思想が根付いています。現代の多くのプログラミング言語(C++、Java、Python、Goなど)はCの文法や概念を参考にしており、「プログラミング言語の共通語」とも呼ばれます。
ビジネスの現場では直接Cを書く機会は少ないかもしれませんが、あなたが使っているWindows・macOS・Linuxのカーネル(心臓部)、スマートフォンの組み込みソフト、産業用機械の制御プログラムなど、あらゆるデジタル機器の土台にCが使われています。「発注するシステムが組み込み系かどうか」を判断する際に知っておくと役立つ言語です。
C言語の主な特徴
| 特徴 | 内容 |
|---|---|
| コンパイル型 | ソースコードを機械語に変換してから実行。実行速度が速い |
| ポインタ | メモリのアドレス(番地)を直接操作できる。強力だが扱いが難しい |
| 移植性 | コンパイラさえあればほぼどんなOS・CPUでも動く |
| 標準ライブラリ | 入出力・文字列操作・数学演算などの基本機能を標準装備 |
| 静的型付け | 変数の型(整数・小数など)をあらかじめ宣言する必要がある |
| 手続き型 | 関数(処理のまとまり)を組み合わせてプログラムを構成する |
覚え方:「C言語は料理で言えば包丁」
包丁は使いこなせれば何でも作れるけど、使い方を間違えると危ない。C言語も同じで「自由度が高くてパワフル、でも扱いに習熟が必要」という道具です。JavaやPythonが「電子レンジ」なら、Cは「プロの包丁」と覚えましょう!
C言語の規格バージョン
| 規格名 | 年 | 通称 | 主な追加内容 |
|---|---|---|---|
| C89/C90 | 1989/1990 | ANSI C | 最初の公式標準化 |
| C99 | 1999 | C99 | 可変長配列、//コメント追加 |
| C11 | 2011 | C11 | マルチスレッド、Unicode対応 |
| C17 | 2018 | C17 | バグ修正・明確化が主 |
| C23 | 2023 | C23 | 最新版。モダンな機能追加 |
歴史と背景
- 1969年:AT&Tベル研究所でUNIX開発プロジェクトが始まる。当初はアセンブリ言語で書かれていた
- 1970年:ケン・トンプソンがB言語(CPL→BCPL→B と発展)を開発。UNIXの前身に使用
- 1972年:デニス・リッチーがB言語を大幅改良しC言語を開発。UNIXをCで書き直す
- 1978年:カーニハン&リッチー共著「プログラミング言語C」(通称K&R本)が出版。事実上の標準として普及
- 1983年:Bjarne StroustrupがCを拡張したC++を開発(オブジェクト指向を追加)
- 1989年:ANSI(米国標準化協会)がC89として標準化。翌年ISO C90として国際標準に
- 1990年代〜:インターネット普及とともにPerlやJavaなど後継言語が台頭。しかしOS・組み込みの分野ではCが不動の地位を維持
- 現在:TIOBE Indexでは常にトップ5以内。組み込み・IoT・HPC(高性能計算)で現役
C言語と関連言語の位置づけ
C言語はさまざまな言語の「親」または「影響源」になっています。以下のSVG図で系譜と用途ゾーンを確認しましょう。
C言語 vs 他言語:どこが違う?
| 比較項目 | C言語 | Java | Python |
|---|---|---|---|
| 実行方式 | コンパイル(機械語に変換) | JVMで実行 | インタープリタ(逐次実行) |
| 実行速度 | ◎ 非常に速い | ○ 速い | △ 比較的遅い |
| メモリ管理 | 手動(自分で確保・解放) | 自動(GC) | 自動(GC) |
| 習得難易度 | 難しい | 中程度 | 易しい |
| 主な用途 | OS・組み込み・ゲームエンジン | 業務システム・Android | AI・Web・自動化 |
| 安全性 | 低い(ポインタで誤操作のリスク) | 高い | 高い |
関連する規格・RFC
| 規格番号 | 内容 |
|---|---|
| ISO/IEC 9899:2018 | C17(C言語の最新標準規格、通称C17) |
| ISO/IEC 9899:2011 | C11(マルチスレッド・Unicode対応を追加) |
| ISO/IEC 9899:1999 | C99(可変長配列・複素数型などを追加) |