機械語の誕生から AI 時代の言語まで 80 年の歴史を一本の軸で把握し、 抽象化の階層・主要言語の特徴・「どの言語をいつ使うか」を体系的に学ぼう。
1940 年代の機械語から 2020 年代の AI 向け言語まで
最初のコンピュータ(ENIAC など)はプログラムを 0と1の機械語で直接記述した。 プログラマーはスイッチを切り替えたり、パンチカードに穴を開けたりして命令を入力。 1台のプログラム変更に 数日かかる こともあった。
機械語の代わりに人間が読める記号(ニーモニック)を使う アセンブリ言語 が登場。 さらに 1957年、IBM の Grace Hopper らが主導した FORTRAN(FORmula TRANslation)が誕生 —— 世界初の高水準プログラミング言語で、コンパイラで機械語に変換するというアイデアを実証した。 1958年には LISP(人工知能研究の原点)、1959年に COBOL(銀行・業務システム)が続く。
「goto 文有害論」(Dijkstra, 1968)を機に 構造化プログラミング(if/for/while で制御する考え方)が普及。 1972年、Bell研究所の Dennis Ritchie が C 言語 を開発 —— OS(UNIX)を記述できるほど低レベルで、 かつアセンブリより書きやすい実用的な高水準言語として基盤を確立。 1970年には Pascal(教育向け)、1972年に Prolog(論理型)も登場。
C 言語が変えたもの
Smalltalk(1972)で提案されたオブジェクト指向の概念が爆発的に普及。 1983年に Bjarne Stroustrup が C++(C にクラスを追加)を公開。 1987年には Perl(テキスト処理・Web の黎明期に活躍)、 1991年に Python が誕生(1990年代に急成長)。 PC 普及に伴い Visual Basic などのRAD ツールも台頭。
1991年に WWW が公開され、インターネット時代が到来。 1995年は「言語の当たり年」 —— Java(Write Once, Run Anywhere)、 JavaScript(ブラウザでの動的 UI)、PHP(Web バックエンド)、 Ruby(日本人 Matz が開発、読みやすさ重視)が一斉に誕生。 Java の JVM(Java Virtual Machine)は「どの OS 上でも動く」マシン独立性を提供し、 エンタープライズ開発の標準となった。
2000年、Microsoft が C#(C++ + Java の利点を統合し .NET 上で動作)を発表。 2003年に Scala(JVM 上で関数型 + OOP を融合)が登場し関数型の考え方が再注目される。 2009年に Google が Go(シンプル・高速コンパイル・並行処理に強い)を公開。 同年、Ryan Dahl が Node.js を発表し JavaScript がサーバーサイドにも進出。
機械学習ブームにより Python が科学計算・AI の事実上の標準に(NumPy・TensorFlow・PyTorch)。 2010年に Apple が Swift(Objective-C の後継、iOS 開発)、 2011年に Kotlin(JVM、Android の推奨言語に)、 2015年に Mozilla が Rust(メモリ安全・C++ 並みの速度・所有権システム)を公開。 TypeScript(2012、JavaScript に型を追加)も大規模開発で急速に普及。
ChatGPT(2022)の登場でコードを「書く」から「生成させる」への転換が加速。 ブラウザ上で高速に動くバイナリ形式 WebAssembly(Wasm) により C++/Rust をブラウザで実行可能に。 Mojo(2023、Python 互換で C 並み速度。AI チップ向け)など特化型言語も続々登場。 言語の境界を超えた LLM ベースのコーディング支援 が開発ワークフローを根本から変えつつある。
ハードウェアから離れるほど「人間に近い」言語になる
← 各層をクリック →
← 左の階層をクリックして詳細を表示
コンパイラ:ソースコード全体を事前に機械語に翻訳(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)。
各言語の特徴・構文例・得意分野・代表製品
パラダイム・型・速度・用途を一表で把握
| 言語 | 誕生年 | パラダイム | 型 | 実行方式 | 相対速度 | 主用途 |
|---|---|---|---|---|---|---|
| アセンブリ | 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 | 動的 | インタープリタ | ⚡ | 統計解析・データ可視化 |
* 相対速度はシングルスレッドのランタイム速度の目安。実際は実装・用途により大きく異なる。
目的が決まれば言語の選択肢が絞れる
💡 どれを最初に学ぶべきか?
「何を作りたいか」が決まっていれば、その分野の王道を選ぶのが最速。 迷うなら Python(汎用性・AI・可読性)か JavaScript(ブラウザですぐ動く・Web 必須)がエントリー言語として最適。 「コンピュータの仕組みを深く理解したい」なら C —— この授業の延長線上にある自然な選択。