プログラミング言語の歴史
1940年代の機械語から、2020年代の AI 向け言語まで。どの時代も「もっと人間に近い書き方をしたい」という同じ動機で動いてきた。
機械語・パンチカード時代
1001 0101 0000 0001 ← 「レジスタ1に5を加算」という意味(例)
アセンブリ言語 → 高水準言語の幕開け
構造化プログラミングと C 言語の誕生
- OS やコンパイラを、アセンブリではなく高水準言語で書けるようになった
- 後の C++・Java・C#・Go・Rust すべてに構文的な影響を与えた
オブジェクト指向の隆盛
Web・JVM・スクリプト言語の爆発
型安全・関数型の復権と C# / Go の登場
データサイエンス・安全系言語の台頭
AI 生成コード・WebAssembly・マルチパラダイム
言語の抽象化階層
ハードウェアから離れるほど「人間に近い」言語になる。 02.2 の アセンブリ入門で見た階段を、実在の言語で埋めたのがこの図である。各層をクリックしてください。
コンパイラ:ソース全体を事前に機械語へ翻訳(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)。
主要言語 詳細解説
8つの代表的な言語を、特徴・構文例・得意分野・代表プロダクトで比べる。タブを切り替えてください。
主要言語 一覧比較
パラダイム・型・実行方式・速度・用途を1枚の表にまとめた。
| 言語 | 誕生年 | パラダイム | 型 | 実行方式 | 相対速度 | 主用途 |
|---|---|---|---|---|---|---|
| アセンブリ | 1950s | 命令型 | なし | アセンブル | ★★★★★ | ファームウェア・最適化 |
| C | 1972 | 手続き型 | 静的・弱い | コンパイル | ★★★★★ | OS・組み込み・カーネル |
| C++ | 1983 | OOP・手続き型 | 静的・弱い | コンパイル | ★★★★★ | ゲーム・HPC・組み込み |
| Rust | 2015 | マルチパラダイム | 静的・強い | コンパイル | ★★★★★ | OS・WebAssembly・組み込み |
| Go | 2009 | 手続き型・並行 | 静的・強い | コンパイル | ★★★★☆ | クラウド・マイクロサービス |
| Java | 1995 | OOP | 静的・強い | JVM (JIT) | ★★★☆☆ | エンタープライズ・Android |
| C# | 2000 | OOP・関数型 | 静的・強い | .NET (JIT) | ★★★☆☆ | Windows・ゲーム (Unity) |
| Python | 1991 | マルチパラダイム | 動的・強い | インタープリタ | ★☆☆☆☆ | AI・データ科学・自動化 |
| JavaScript | 1995 | マルチパラダイム | 動的・弱い | JIT (V8) | ★★☆☆☆ | Web フロント・Node.js |
| TypeScript | 2012 | マルチパラダイム | 静的・強い | JS 変換後 JIT | ★★☆☆☆ | 大規模 Web 開発 |
| Ruby | 1995 | OOP・関数型 | 動的・強い | インタープリタ | ★☆☆☆☆ | Web (Rails)・ラピッド開発 |
| SQL | 1974 | 宣言型(DSL) | 静的 | DB エンジン | ★★★☆☆ | データベース操作 |
| R | 1993 | 関数型・統計 DSL | 動的 | インタープリタ | ★☆☆☆☆ | 統計解析・データ可視化 |
相対速度はシングルスレッド実行の目安である。実際は実装や用途によって大きく変わる。
「何を作りたいか」別 言語選択ガイド
目的が決まれば、選択肢はかなり絞れる。