プログラミング言語史には、ふしぎな「集中」の瞬間があります。第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の正反対の思想です。

言語 設計哲学 一言で
Python There should be one obvious way to do it やり方は1つ、明白に(規律と可読性)
Perl There's More Than One Way To Do It (TIMTOWTDI) やり方は何通りもある(自由と表現力)
Ruby Optimize for programmer happiness プログラマの幸福が最優先
C Trust the programmer プログラマを信頼し、危険も止めない
Java Write 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 で回答