TL

Language Profile

C

Dennis Ritchie(ベル研究所) / 1972年登場

OS やドライバ、組込みの土台を作る低レベル言語ハードウェアに近く高速で、ほぼすべての言語や OS の基礎になっている

TL;DR要点だけ先に
  • 1.ハードに近い低レベルの手続き型言語。
  • 2.OS・組込み・他言語処理系の土台。
  • 3.速度と制御が要るなら C、安全性重視なら Rust。

Specifications

基本情報

Introducing

C のロゴ
COS やドライバ、組込みの土台を作る低レベル言語。ハードウェアに近く高速で、ほぼすべての言語や OS の基礎になっている。
型付け
静的弱い型付け
実行方式
コンパイルネイティブ)
パラダイム
手続き型
登場
1972年Dennis Ritchie(ベル研究所)
この言語の強み
ハードを直接制御でき非常に高速移植性が高くどこでも動く
活躍する領域
OSカーネルドライバ組込み・マイコン / 高速なライブラリ・処理系

Decision Guide

選定ポイント

採用する理由と、事前に受け入れるべきトレードオフを分けて確認します。

Why It Fits

選ぶ理由

  1. ハードを直接制御でき非常に高速
  2. 移植性が高くどこでも動く
  3. OS・組込み・基盤の事実上の標準

Trade-offs

考慮すべき点

  1. 手動メモリ管理で安全性が低い(領域外参照など)
  2. 標準ライブラリが小さく自前実装が増える
  3. 抽象度が低く生産性は劣る

Best Fit

こんな用途に向く

OS・カーネル・ドライバ組込み・マイコン高速なライブラリ・処理系

Deep Dive

もっと詳しく

どんな言語か

C は 1972 年ごろに Dennis Ritchie がベル研究所で開発した、低レベルの手続き型言語です。当初は UNIX を記述するために作られ、ハードウェアに近い操作をしながらもアセンブリより読み書きしやすい、という絶妙な位置を占めました。半世紀を経た今も、OS・デバイスドライバ・組込み機器の土台として現役で使われています。

「小さくて速い」が本質

C の核心は、言語そのものが極めて小さいことです。余計な仕組みを持たず、メモリ配置やポインタ操作を直接扱えるため、生成されるコードは高速で、ハードウェアの挙動を予測しやすくなります。

加えて、ほぼあらゆる CPU 向けにコンパイラが存在し、移植性が高い点も見逃せません。多くのプログラミング言語の処理系や OS 自体が C で書かれており、現代のソフトウェアの基礎になっています。

得意なこと・不得意なこと

  • 得意:OS・ドライバ・組込みなど、速度と移植性が要る低レイヤ。
  • 不得意:高速な大規模アプリ開発。安全網が乏しく自分で守る必要がある。

つまずきやすいところ

#include <stdlib.h>
int main(void) {
    int *a = malloc(4 * sizeof(int)); // 確保したら
    a[4] = 1;                         // 領域外! 検出されないまま壊れる
    free(a);                          // 解放も自分の責任
    return 0;
}
  • 標準ライブラリが小さく、文字列や配列も自前で慎重に扱う。
  • 手動メモリ管理と領域外参照により、安全性は低い。バグが静かに潜む。

Language Decision

Cを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

OS・カーネル・ドライバ

比較で見る軸

型付け: 静的・弱い型付け / 実行方式: コンパイル(ネイティブ) / パラダイム: 手続き型

導入後に効く点

移植性が高くどこでも動く

先に潰すリスク

手動メモリ管理で安全性が低い(領域外参照など)

数字・仕様の読み方
型付け
静的・弱い型付け
実行方式
コンパイル(ネイティブ)
パラダイム
手続き型
登場
1972年
Dennis Ritchie(ベル研究所)

判断チェックリスト

  • 自社の用途が「OS・カーネル・ドライバ / 組込み・マイコン」に近いか確認する。
  • 強みである「ハードを直接制御でき非常に高速」が本当に評価軸になるか確認する。
  • 注意点の「手動メモリ管理で安全性が低い(領域外参照など)」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

OS・カーネル・ドライバ組込み・マイコン高速なライブラリ・処理系

First Step

Hello, World!

#include <stdio.h>
int main(void) {
    printf("Hello, World!\n");
    return 0;
}
公式ドキュメント