⚙️🐍☕🦀
Chapter 2 — 言語入門

プログラミング言語
総覧

機械語の誕生から AI 時代の言語まで 80 年の歴史を一本の軸で把握し、 抽象化の階層・主要言語の特徴・「どの言語をいつ使うか」を体系的に学ぼう。

⏱ 所要:30–40分·難易度:★☆☆·前提:なし
Section 1

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

1940 年代の機械語から 2020 年代の AI 向け言語まで

1940年代

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

最初のコンピュータ(ENIAC など)はプログラムを 0と1の機械語で直接記述した。 プログラマーはスイッチを切り替えたり、パンチカードに穴を開けたりして命令を入力。 1台のプログラム変更に 数日かかる こともあった。

1001 0101 0000 0001  ← 「レジスタ1に5を加算」という意味(例)
1950年代

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

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

FORTRAN
科学計算
LISP
AI・関数型
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 が誕生(1990年代に急成長)。 PC 普及に伴い Visual Basic などのRAD ツールも台頭。

C++:ゲーム・OS・組み込みの定番。高速だが複雑。
Perl:正規表現が強力。CGI・サーバー管理スクリプト。
1990年代

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

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

Java ☕
JVM・エンタープライズ
JavaScript
ブラウザ・Web
PHP
サーバーサイド Web
Ruby 💎
Rails・開発速度
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)。 2010年に Apple が Swift(Objective-C の後継、iOS 開発)、 2011年に Kotlin(JVM、Android の推奨言語に)、 2015年に Mozilla が Rust(メモリ安全・C++ 並みの速度・所有権システム)を公開。 TypeScript(2012、JavaScript に型を追加)も大規模開発で急速に普及。

Python 🐍
AI・データ科学
Rust 🦀
安全・高速
Swift 🐦
Apple エコ
Kotlin
Android
2020年代〜

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

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

Section 2

言語の抽象化階層

ハードウェアから離れるほど「人間に近い」言語になる

機械語
アセンブリ言語
システム言語(C / C++ / Rust)
汎用言語(Java / C# / Go)
スクリプト言語(Python / JS / Ruby)
ドメイン特化言語 / DSL(SQL / HTML / R)
AI 生成コード / ノーコード(2020年代〜)
↑ 高速・低レベル・機械に近い 低速・高抽象・人間に近い ↓

← 各層をクリック →

← 左の階層をクリックして詳細を表示

🔄

コンパイラとインタープリタ

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

🏷

型システム

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

🎭

プログラミングパラダイム

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

Section 3

主要言語 詳細解説

各言語の特徴・構文例・得意分野・代表製品

Section 4

主要言語 一覧比較

パラダイム・型・速度・用途を一表で把握

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

* 相対速度はシングルスレッドのランタイム速度の目安。実際は実装・用途により大きく異なる。

Section 5

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

目的が決まれば言語の選択肢が絞れる

🤖

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 にも採用。
📱

モバイルアプリ

Swift 🐦iOS / macOS ネイティブ。Apple が開発。
KotlinAndroid ネイティブの公式推奨言語。
DartFlutter で iOS/Android を一本に (Google)。
🎮

ゲーム開発

C++Unreal Engine はほぼ全域 C++。AAA タイトルの主力。
C#Unity ゲームのスクリプト言語。入門しやすい。
GDScriptGodot 専用の DSL。Python に似た構文。
🏢

エンタープライズ / 業務システム

Java ☕Spring Framework。金融・流通・官公庁で根強い。
C#.NET / ASP.NET。Microsoft 系企業での主力。
COBOL銀行のコアシステムで今なお稼働。レガシー維持需要大。

💡 どれを最初に学ぶべきか?

「何を作りたいか」が決まっていれば、その分野の王道を選ぶのが最速。 迷うなら Python(汎用性・AI・可読性)か JavaScript(ブラウザですぐ動く・Web 必須)がエントリー言語として最適。 「コンピュータの仕組みを深く理解したい」なら C —— この授業の延長線上にある自然な選択。

まとめ

理解度チェック

🎓 次のステップ: 言語の全体像を把握したら、Verilog 入門 でハードウェア記述言語の独自の世界へ、 アセンブリ入門 で CPU が直接理解できる最低レベルの言語に触れてみよう。