プログラミング言語史には、ふしぎな「集中」の瞬間があります。第2章では1957〜60年に4つの源流が出揃いました。 そして本章で扱う1991〜95年は、それに匹敵する第二の爆発期です。Python・Java・Ruby・JavaScript・PHP——今日のソフトウェア界を支配する言語の多くが、 このわずか5年間に集中して誕生しました。なぜこの時期だったのか。そして、それぞれがどんな哲学を背負っていたのか。

なぜ1990年代前半に集中したのか

偶然ではありません。3つの大きな force が同時に働いていました。

要因内容言語設計への影響
計算資源の余裕ムーアの法則でCPU/メモリが潤沢に。少々の非効率は許容できる時代へ機械効率より「開発者の書きやすさ」を優先できるようになった
WWWの登場1991年にWeb公開。動的なWebサイト・スクリプトの需要が爆発Webに特化した言語(PHP, JavaScript)が生まれる土壌に
時代精神の転換「人間の生産性こそ最重要」という価値観の台頭動的型・GC・簡潔な構文を持つスクリプト言語が花開く

象徴的なのは、これらの言語がほぼ例外なく動的型付け・ガベージコレクション・簡潔な構文を採用したことです。 C/C++が「機械に近く効率的だが書くのが大変」だったのに対し、新世代は「多少遅くても、人間が速く書ける」ことを選びました。 この価値観の転換こそが、スクリプト言語爆発の本質です。

Python(1991)— 唯一の明白な方法

口火を切ったのが Python です。オランダのグイド・ヴァンロッサムが、1989年12月の クリスマス休暇に趣味として実装を始め、1991年2月に v0.9.0 を公開しました。名前は爬虫類ではなく、 愛好していた英国コメディ『空飛ぶモンティ・パイソン』に由来します。

Pythonの哲学は明快です——「物事のやり方は、できれば1つだけ、明白な方法があるべきだ(There should be one obvious way to do it)」。 そして最大の特徴が、ブロックを中括弧でなくインデント(字下げ)で表現すること。これにより、 誰が書いても見た目が揃い、可読性が強制されます。

# Python: インデントがブロックを定義する
def greet(names):
    for name in names:       # コロンとインデントでブロック
        print(f"Hello, {name}!")

greet(["Alice", "Bob"])

JavaScript(1995)— 10日間の突貫工事

もっとも劇的な誕生秘話を持つのが JavaScript です。1995年、ネットスケープのブレンダン・アイクは、 ブラウザに動きを与えるスクリプト言語を、なんとわずか10日間でプロトタイプしました。 当初の名は「Mocha」、次に「LiveScript」、そして同年Sunとの提携で、当時最も話題だったJavaにあやかり「JavaScript」と命名されます——名前は似ていますが、Javaとは別物のマーケティング命名でした。

// JavaScript: ブラウザに動きを与えるために生まれた
function greet(names) {
  names.forEach(name => {
    console.log(`Hello, ${name}!`);
  });
}

greet(["Alice", "Bob"]);

Ruby(1995)— プログラマの幸福のために

同じ1995年、日本のまつもとゆきひろ(Matz)が Ruby を公開しました。Rubyの設計指針はただ一つ——「プログラマの幸福(developer happiness)」。機械の効率でも理論的純粋さでもなく、 「書いていて楽しいか、自然に思考を表現できるか」を最優先したのです。

まつもとはPerl・Smalltalk・Lisp・Adaなど多くの言語の「良いところ」を融合させ、「すべてがオブジェクト」という 純粋OOPと、柔軟で人間的な構文を両立させました。名前は同僚の誕生石「ルビー」に由来し、 6月の誕生石「パール(Perl)」を意識した「後継」のニュアンスも込められています。

# Ruby: 人間が自然に読める表現を重視
def greet(names)
  names.each do |name|
    puts "Hello, #{name}!"
  end
end

greet(["Alice", "Bob"])

PHP と Java — Webの両輪

残る2つも1995年に登場します。PHPはもともと個人サイトの管理ツールとして生まれ、 HTMLに直接埋め込めるWeb特化の手軽さで、動的Webサイトの定番になりました(後のWordPressなどを支える)。 そしてJava(第4章)は、JVMとWORAを武器に企業システムの基盤となり、 「堅牢な大規模開発」の象徴となります。1990年代後半のWebは、この多様な言語たちの競演で花開いたのです。

設計哲学の対比 — 言語の「人格」

この時代の言語を並べると、それぞれが鮮明な「哲学=人格」を持っていることがわかります。 特に有名なのが、PythonとPerlの正反対の思想です。

言語設計哲学一言で
PythonThere should be one obvious way to do itやり方は1つ、明白に(規律と可読性)
PerlThere's More Than One Way To Do It (TIMTOWTDI)やり方は何通りもある(自由と表現力)
RubyOptimize for programmer happinessプログラマの幸福が最優先
CTrust the programmerプログラマを信頼し、危険も止めない
JavaWrite Once, Run Anywhere(規律ある大規模開発)堅牢さと移植性を最優先

PythonとPerlの対比は象徴的です。Perlを設計した言語学者ラリー・ウォールは「自然言語のように、同じことを 何通りもの方法で表現できる自由」を尊びました。対してPythonのグイドは「選択肢が多いと混乱する。 明白な1つの方法に絞るべき」と考えました。この哲学の違いが、Perlの「自由だが読みにくくなりがち」と Pythonの「制約的だが誰が書いても読める」という対照的な人格を生んだのです。

Python 実装開始

グイド・ヴァンロッサムがクリスマス休暇に。1991年2月にv0.9.0公開。名はモンティ・パイソン由来

Ruby 命名

まつもとゆきひろ。「プログラマの幸福」を最優先。1995年に公開

JavaScript プロトタイプ

ブレンダン・アイクが10日間で。Mocha→LiveScript→JavaScriptと改名

Java 公開

サン。JVM・WORA。企業システムとWebの大規模開発を担う

PHP 公開

HTMLに埋め込めるWeb特化言語。動的サイトの定番に

Ruby on Rails

キラーアプリがRubyの人気を世界的に牽引。「規約より設定」

理解度チェック

問題 0 / 50%
Q1

1991〜95年にPython・Java・Ruby・JavaScript・PHPが集中して誕生した背景として、本章が「本質」と位置づけた価値観の転換はどれですか?

キーボード: 1〜4 で選択、Enter で回答