プログラミング言語

C言語 しーげんご

プログラミング言語コンパイラポインタUNIXシステムプログラミング手続き型言語
C言語について教えて

簡単に言うとこんな感じ!

C言語は、コンピューターに「機械語に近い命令」を直接出せる古参のプログラミング言語だよ。1970年代生まれなのに今もOS・組み込み機器・ゲームエンジンの根幹で動いてる、まさに「ITインフラの縁の下の力持ち」なんだ!


C言語とは

C言語は1972年にAT&Tベル研究所でデニス・リッチーによって開発された汎用プログラミング言語です。手続き型言語(処理手順を順番に記述するスタイル)に分類され、ハードウェアに近い低レベルな操作と、人間にも読みやすい高レベルな記述の両方を兼ね備えているのが最大の特徴です。

もともとUNIXオペレーティングシステムを書き直すために設計されたため、メモリを直接操作する「ポインタや、処理速度を優先した設計思想が根付いています。現代の多くのプログラミング言語(C++、JavaPythonGoなど)はCの文法や概念を参考にしており、「プログラミング言語の共通語」とも呼ばれます。

ビジネスの現場では直接Cを書く機会は少ないかもしれませんが、あなたが使っているWindows・macOS・Linuxのカーネル(心臓部)、スマートフォンの組み込みソフト、産業用機械の制御プログラムなど、あらゆるデジタル機器の土台にCが使われています。「発注するシステムが組み込み系かどうか」を判断する際に知っておくと役立つ言語です。


C言語の主な特徴

特徴内容
コンパイル型ソースコードを機械語に変換してから実行。実行速度が速い
ポインタメモリのアドレス(番地)を直接操作できる。強力だが扱いが難しい
移植性コンパイラさえあればほぼどんなOS・CPUでも動く
標準ライブラリ入出力・文字列操作・数学演算などの基本機能を標準装備
静的型付け変数の型(整数・小数など)をあらかじめ宣言する必要がある
手続き型関数(処理のまとまり)を組み合わせてプログラムを構成する

覚え方:「C言語は料理で言えば包丁」

包丁は使いこなせれば何でも作れるけど、使い方を間違えると危ない。C言語も同じで「自由度が高くてパワフル、でも扱いに習熟が必要」という道具です。JavaやPythonが「電子レンジ」なら、Cは「プロの包丁」と覚えましょう!

C言語の規格バージョン

規格名通称主な追加内容
C89/C901989/1990ANSI C最初の公式標準化
C991999C99可変長配列、//コメント追加
C112011C11マルチスレッド、Unicode対応
C172018C17バグ修正・明確化が主
C232023C23最新版。モダンな機能追加

歴史と背景

  • 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言語の系譜と用途マップ C言語 1972年 ベル研究所 C++ オブジェクト指向を追加 C# Microsoft / .NET Java 文法はCに類似 Python インタープリタ型 Go Google製・C影響大 🔧 低レベル用途 OS・組み込み・ドライバ → C / C++ が主力 💼 業務システム Web・エンタープライズ → Java / C# が主力 🤖 AI・スクリプト 機械学習・自動化 → Python / Go が主力

C言語 vs 他言語:どこが違う?

比較項目C言語JavaPython
実行方式コンパイル(機械語に変換)JVMで実行インタープリタ(逐次実行)
実行速度◎ 非常に速い○ 速い△ 比較的遅い
メモリ管理手動(自分で確保・解放)自動(GC)自動(GC)
習得難易度難しい中程度易しい
主な用途OS・組み込み・ゲームエンジン業務システム・AndroidAI・Web・自動化
安全性低い(ポインタで誤操作のリスク高い高い

関連する規格・RFC

規格番号内容
ISO/IEC 9899:2018C17(C言語の最新標準規格、通称C17)
ISO/IEC 9899:2011C11(マルチスレッド・Unicode対応を追加)
ISO/IEC 9899:1999C99(可変長配列・複素数型などを追加)

関連用語

  • C++ — CにOOP(オブジェクト指向)を加えた後継言語
  • コンパイラ — ソースコードを機械語に変換するツール
  • ポインタ — メモリのアドレスを直接扱うC言語の中心概念
  • アセンブリ言語 — Cより低レベルな機械語に最も近いプログラミング言語
  • UNIX — C言語と共に生まれたOSの源流
  • 組み込みシステム — 家電や産業機器に内蔵されるソフトウェア。Cが多用される
  • 静的型付け — 変数の型をコンパイル時に決める言語設計の方式
  • オープンソース — C言語処理系(GCCなど)の多くがオープンソースで提供されている