computer system foundationCSF 2026
言語入門 / 02.3

プログラミング言語
総覧

機械語の誕生から AI 時代の言語まで、80年の歴史を1本の軸で見る。 抽象化の階層・主要言語の特徴・「どの言語をいつ使うか」を体系的に押さえる。

所要:30–40分 難易度:★☆☆ 前提:なし
01

プログラミング言語の歴史

1940年代の機械語から、2020年代の AI 向け言語まで。どの時代も「もっと人間に近い書き方をしたい」という同じ動機で動いてきた。

1940年代

機械語・パンチカード時代

最初のコンピュータ(ENIAC など)はプログラムを 0 と 1 の機械語で直接記述した。 プログラマーはスイッチを切り替えたり、パンチカードに穴を開けたりして命令を入力する。 1台のプログラム変更に数日かかることもあった。
1001 0101 0000 0001   ← 「レジスタ1に5を加算」という意味(例)
1950年代

アセンブリ言語 → 高水準言語の幕開け

機械語の代わりに、人間が読める記号(ニーモニック)を使うアセンブリ言語が登場する。 さらに1957年、IBM の John Backus らが主導した FORTRAN(FORmula TRANslation)が誕生—— 世界初の高水準プログラミング言語で、コンパイラで機械語に変換するというアイデアを実証した。 1958年に LISP(人工知能研究の原点)、1959年に COBOL(銀行・業務システム)が続く。
FORTRAN科学計算
LISPAI・関数型
COBOL業務システム
1960〜70年代

構造化プログラミングと C 言語の誕生

「goto 文有害論」(Dijkstra, 1968)を機に構造化プログラミング(if / for / while で制御する考え方)が普及。 1972年、Bell 研究所の Dennis Ritchie が C 言語を開発した—— OS(UNIX)を記述できるほど低レベルで、かつアセンブリより書きやすい実用的な高水準言語である。 1970年に Pascal(教育向け)、1972年に Prolog(論理型)も登場する。
C 言語が変えたもの
  • OS やコンパイラを、アセンブリではなく高水準言語で書けるようになった
  • 後の C++・Java・C#・Go・Rust すべてに構文的な影響を与えた
1980年代

オブジェクト指向の隆盛

Smalltalk(1972)で提案されたオブジェクト指向の概念が爆発的に普及する。 1983年に Bjarne Stroustrup が C++(C にクラスを追加)を公開。 1987年には Perl(テキスト処理・Web 黎明期に活躍)、1991年に Python が誕生した。
C++ゲーム・OS・組み込み。高速。ただし複雑
Perl正規表現が強力。CGI・サーバー管理
1990年代

Web・JVM・スクリプト言語の爆発

1991年に WWW が公開され、インターネット時代が到来する。 1995年は「言語の当たり年」——Java(Write Once, Run Anywhere)、 JavaScript(ブラウザでの動的 UI)、PHP(Web バックエンド)、 Ruby(日本人 Matz が開発、読みやすさ重視)が一斉に誕生した。 Java の JVM は「どの OS でも動く」マシン独立性を提供し、エンタープライズ開発の標準になる。
JavaJVM・エンタープライズ
JavaScriptブラウザ・Web
PHPサーバーサイド Web
RubyRails・開発速度
2000年代

型安全・関数型の復権と C# / Go の登場

2000年、Microsoft が C#(C++ と Java の利点を統合し .NET 上で動作)を発表。 2003年に Scala(JVM 上で関数型と OOP を融合)が登場し、関数型の考え方が再注目される。 2009年に Google が Go(シンプル・高速コンパイル・並行処理に強い)を公開。 同年、Ryan Dahl が Node.js を発表し、JavaScript がサーバーサイドにも進出した。
2010年代

データサイエンス・安全系言語の台頭

機械学習ブームにより Python が科学計算・AI の事実上の標準になる(NumPy・TensorFlow・PyTorch)。 2011年に Kotlin(JVM、Android の推奨言語に)、2014年に Apple が Swift(iOS 開発)、 2015年に Mozilla が Rust(メモリ安全・C++ 並みの速度・所有権システム)を公開。 TypeScript(2012)も大規模開発で急速に普及した。
PythonAI・データ科学
Rust安全・高速
SwiftApple エコシステム
KotlinAndroid
2020年代〜

AI 生成コード・WebAssembly・マルチパラダイム

ChatGPT(2022)の登場で、コードを「書く」から「生成させる」への転換が加速した。 ブラウザ上で高速に動くバイナリ形式 WebAssembly(Wasm)により、C++ や Rust をブラウザで実行できる。 Mojo(2023、Python 互換で C 並みの速度。AI チップ向け)など特化型言語も続々登場。 言語の境界を超えた LLM ベースのコーディング支援が、開発ワークフローを根本から変えつつある。
02

言語の抽象化階層

ハードウェアから離れるほど「人間に近い」言語になる。 02.2 の アセンブリ入門で見た階段を、実在の言語で埋めたのがこの図である。各層をクリックしてください。

機械語
アセンブリ言語
システム言語(C / C++ / Rust)
汎用言語(Java / C# / Go)
スクリプト言語(Python / JS / Ruby)
ドメイン特化言語(SQL / HTML / R)
AI 生成コード / ノーコード
上ほど 高速・低レベル・機械に近い 下ほど 高抽象・人間に近い
左の階層をクリックしてください
実行方式
コンパイラとインタープリタ

コンパイラ:ソース全体を事前に機械語へ翻訳(C, C++, Rust, Go)。実行が高速。
インタープリタ:1行ずつ逐次実行(Python, Ruby)。開発は速いが実行は遅め。
JIT:実行時に必要な部分だけコンパイル(Java, JavaScript)。中間的な性能。

型システム
静的型付けと動的型付け

静的型付け:コンパイル時に型を検査(C, Java, Rust, Go)。バグを早期発見。
動的型付け:実行時に型が決まる(Python, JavaScript, Ruby)。記述が短い。
強い型 / 弱い型:暗黙の型変換を許すかどうか(例:"5" + 5 がエラーか文字列か)。

パラダイム
プログラムの組み立て方

手続き型:上から下へ順に実行(C, BASIC)。
オブジェクト指向:データと処理をオブジェクトにまとめる(Java, C++, Python)。
関数型:副作用なしに関数の組み合わせで表現(Haskell, Scala, Erlang)。
マルチパラダイム:複数を組み合わせる(Python, C++, Kotlin)。

03

主要言語 詳細解説

8つの代表的な言語を、特徴・構文例・得意分野・代表プロダクトで比べる。タブを切り替えてください。

04

主要言語 一覧比較

パラダイム・型・実行方式・速度・用途を1枚の表にまとめた。

言語誕生年パラダイム実行方式相対速度主用途
アセンブリ1950s命令型なしアセンブル★★★★★ファームウェア・最適化
C1972手続き型静的・弱いコンパイル★★★★★OS・組み込み・カーネル
C++1983OOP・手続き型静的・弱いコンパイル★★★★★ゲーム・HPC・組み込み
Rust2015マルチパラダイム静的・強いコンパイル★★★★★OS・WebAssembly・組み込み
Go2009手続き型・並行静的・強いコンパイル★★★★☆クラウド・マイクロサービス
Java1995OOP静的・強いJVM (JIT)★★★☆☆エンタープライズ・Android
C#2000OOP・関数型静的・強い.NET (JIT)★★★☆☆Windows・ゲーム (Unity)
Python1991マルチパラダイム動的・強いインタープリタ★☆☆☆☆AI・データ科学・自動化
JavaScript1995マルチパラダイム動的・弱いJIT (V8)★★☆☆☆Web フロント・Node.js
TypeScript2012マルチパラダイム静的・強いJS 変換後 JIT★★☆☆☆大規模 Web 開発
Ruby1995OOP・関数型動的・強いインタープリタ★☆☆☆☆Web (Rails)・ラピッド開発
SQL1974宣言型(DSL)静的DB エンジン★★★☆☆データベース操作
R1993関数型・統計 DSL動的インタープリタ★☆☆☆☆統計解析・データ可視化

相対速度はシングルスレッド実行の目安である。実際は実装や用途によって大きく変わる。

05

「何を作りたいか」別 言語選択ガイド

目的が決まれば、選択肢はかなり絞れる。

AI・機械学習・データ分析
PythonTensorFlow / PyTorch / Pandas / scikit-learn。事実上の標準。
R統計・可視化に特化。学術研究で根強い。
Julia科学計算で Python の速度問題を解決する新鋭。
Web 開発
JavaScriptフロントエンドは不可避。React / Vue / Svelte。
TypeScript大規模 SPA・チーム開発では今や必須。
Pythonバックエンド:Django / FastAPI / Flask。
Go高トラフィックな API サーバー・マイクロサービス。
OS・組み込み・システム開発
CLinux カーネル・マイコン・ドライバ。最速・最軽量。
C++組み込み OOP・ゲームエンジン・HPC。
Rustメモリ安全な次世代システム言語。Linux Kernel にも採用。
モバイルアプリ
SwiftiOS / macOS ネイティブ。Apple が開発。
KotlinAndroid ネイティブの公式推奨言語。
DartFlutter で iOS / Android を一本化(Google)。
ゲーム開発
C++Unreal Engine はほぼ全域 C++。AAA タイトルの主力。
C#Unity のスクリプト言語。入門しやすい。
GDScriptGodot 専用の DSL。Python に似た構文。
エンタープライズ / 業務システム
JavaSpring Framework。金融・流通・官公庁で根強い。
C#.NET / ASP.NET。Microsoft 系企業での主力。
COBOL銀行のコアシステムで今なお稼働。レガシー維持の需要が大きい。
どれを最初に学ぶべきか: 「何を作りたいか」が決まっているなら、その分野の王道を選ぶのが最速である。 迷うなら Python(汎用性・AI・可読性)か JavaScript(ブラウザですぐ動く・Web 必須)。 「コンピュータの仕組みを深く理解したい」なら C——この授業の延長線上にある、いちばん自然な選択である。
06

理解度チェック

関連教材: 02.1 Verilog 入門(ハードウェア記述言語)、 02.2 アセンブリ入門(CPU 命令表現)。 この章で見た抽象化の階段は、第3章の 03.4 ソフトウェアの階層構造でさらに下まで掘り下げる。