第4章で「パラダイム」という言葉がフロイドによってクーンから借用されたことを見ました。本章では、そのクーンに立ち返り、 パラダイムはなぜ・どうやって移り変わるのかという力学そのものに踏み込みます。そしてこのシリーズで最も思索的な問いに向き合います—— 「私たちが使う言語(構文・パラダイム)は、私たちの思考を規定するのか」。
クーンのパラダイムシフト — 科学はどう進むか
科学哲学者トマス・クーンは『科学革命の構造』(1962)で、科学は知識を少しずつ積み上げて直線的に進むのではなく、 断絶的な革命によって進むと論じました。彼のモデルは四つの局面からなります。
graph LR N["正常科学\n既存の枠で問題を解く"] A["異常の蓄積\n解けない問題が増える"] C["危機\n枠への信頼が揺らぐ"] R["革命\n新パラダイムが旧を置換"] N --> A A --> C C --> R R -->|新たな正常科学へ| N style C fill:#f97316,stroke:#ea580c,color:#fff style R fill:#8b5cf6,stroke:#6d28d9,color:#fff
鍵となる概念が通約不可能性(incommensurability)です。異なるパラダイムは、互いに完全には翻訳し合えない—— 天動説と地動説が「同じ言葉で語れない」ように。プログラミングで「命令型脳」の人と「関数型脳」の人が話が噛み合わないことがあるのは、 この通約不可能性の小さな現れと言えるかもしれません。
歴史上のシフトと、その引き金
プログラミングのパラダイムシフトには、必ず引き金がありました。多くは「既存のやり方では立ち行かなくなった」という危機です。
ソフトウェア危機 → 構造化
NATOソフトウェア工学会議で「ソフトウェア危機」が命名される。大規模化でGOTOのスパゲッティコードが破綻。Dijkstraの「GOTO有害」論文が構造化プログラミングの号砲に。
大規模化・GUI → オブジェクト指向
Simulaのシミュレーション需要から生まれたクラスとオブジェクト。再利用と保守性の危機、そしてGUIという「キラーアプリ」(Xerox Alto)がOOPの普及を牽引した。
マルチコア → 関数型の回帰
CPUのクロック向上が限界に達しマルチコア化。共有された可変状態は並行実行で競合を生む。不変性と参照透過性を持つ関数型が再評価された。
フロントエンドへ関数型が浸透
React、そしてElmのアーキテクチャに触発されたReduxが、関数型スタイルをWeb開発の主流に押し上げた。
なぜ「置き換え」でなく「蓄積」なのか
ここでプログラミングと科学の決定的な違いが現れます。科学では地動説が天動説を置き換えました。 しかしプログラミングでは、古いパラダイムが消えません。Cは今も組み込みで動き、JavaはOOPに関数型を取り込み、 JavaScriptはあらゆるパラダイムを内包しています。
| 観点 | クーン的な科学 | プログラミング言語 |
|---|---|---|
| シフトの性質 | 旧パラダイムを置換 | ツールボックスに蓄積 |
| 複数の共存 | 基本的に単一の真理 | 複数パラダイムが常に共存 |
| 理由 | 自然界に一つの真理 | 問題領域が多様(UI・数値計算・組込み…) |
| 現代の言語 | — | マルチパラダイムが標準(第7章) |
理由はシンプルです。ソフトウェアには物理法則のような「単一の真理」がありません。UIにはイベント駆動やオブジェクト的思考が、 数値計算には関数型が、性能が要る組込みには手続き型が向く。だからパラダイムは「勝者総取り」ではなく、 適材適所の道具として積み重なっていくのです。この蓄積の必然的な帰結が、次章のマルチパラダイム収斂です。
普及の社会学 — 何が新パラダイムを広めるか
優れたパラダイムが必ず普及するとは限りません。技術的な優劣だけでなく、社会的・経済的な要因が普及を左右します。
| 要因 | 内容 | 具体例 |
|---|---|---|
| キラーアプリ | そのパラダイムでしか作れない魅力的なもの | GUI → OOP普及 |
| ハードウェアの変化 | 物理的制約の変化が需要を生む | マルチコア → 関数型回帰 |
| 既存資産(パス依存性) | 移行コストが高いと旧来が残り続ける | COBOLが金融で今も稼働 |
| 学習コスト | 優れていても学ぶ手間が障壁になる | 関数型の数学的概念への敷居 |
| コミュニティ | ライブラリ・情報・回答の蓄積 | エコシステムの厚みが言語選択を決める |
言語は思考を規定するか — このシリーズの核心
ここからが本章の——そしてこのシリーズ全体の——核心です。言語学にサピア=ウォーフの仮説があります。 「話す言語が、その人の思考を規定する(あるいは影響する)」という説です。これのプログラミング版を、 三人の巨人が異なる角度から語っています。
アイバーソン — 記法は思考の道具である
APLを設計したケネス・アイバーソンは、1979年のチューリング賞講演で 「Notation as a Tool of Thought(思考の道具としての記法)」と題し、 記法そのものが思考を拡張すると論じました。講演はホワイトヘッドの言葉から始まります。
ポール・グレアム — Blub Paradox
ポール・グレアムのエッセイ「Beating the Averages」(2001)が描いたBlub Paradoxは、 プログラマの認識の盲点を鋭く突きます。「Blub」という架空の平均的な言語を使うプログラマを想像してください。
graph TB HIGH["より強力な言語\n→「奇妙で不要に見える」"] BLUB["Blub\n自分が使う言語\n=思考の枠"] LOW["より非力な言語\n→「明らかに劣ると分かる」"] HIGH -.見上げても理解できない.-> BLUB BLUB -->|見下ろせば分かる| LOW style BLUB fill:#3b82f6,stroke:#2563eb,color:#fff style HIGH fill:#8b5cf6,stroke:#6d28d9,color:#fff
グレアムいわく——Blubプログラマが下位の言語を見れば「これは機能が足りない、劣っている」と分かる。 しかし上位の言語を見上げても、「奇妙な言語だ」としか思えない。自分がBlubで考えているから、 その上にある力に気づけないのです。だから彼は結論します。「複数の言語から選べるなら、他の条件が同じである限り、 最も強力な言語を選ばないのは間違いだ」と。
ダイクストラ — 道具が思考習慣を形作る
第6章の締めにふさわしいのが、構造化革命の旗手エドガー・ダイクストラの言葉です。彼はテキサス大学への手紙(2001)で、 プログラミング教育の第一言語の重要性を訴えてこう述べました。
これがこのシリーズの通奏低音です。私たちは構文を「ただの書き方」と思いがちですが、第1章から見てきたように、 構文は思考の形であり、パラダイムは世界の捉え方でした。新しいパラダイムを学ぶことは、新しい考え方を 手に入れることなのです。
まとめ — 変化の力学と思考の器
本章では、クーンのパラダイムシフト論(正常科学→異常→危機→革命、通約不可能性)を土台に、 プログラミングのシフトの引き金(ソフトウェア危機→構造化、大規模化→OOP、マルチコア→関数型回帰)を辿りました。 科学と違いプログラミングではパラダイムが蓄積されること、普及には社会的要因が効くことを確認しました。 そして核心——アイバーソン「思考の道具としての記法」、グレアムのBlub Paradox、 ダイクストラ「道具が思考習慣を形作る」——を通じて、構文とパラダイムが思考の器であることを見ました。
パラダイムが「置き換え」でなく「蓄積」されるなら、その先に待つのは融合です。次章では、ラムダ式・パターンマッチ・ null安全といった関数型の機能が、いかにJava・Python・C#へと流れ込み、言語が互いに似通っていったか—— マルチパラダイムへの収斂を、15年の年表で追います。
理解度チェック
トマス・クーン『科学革命の構造』(1962)が示した科学の進み方として正しいものはどれですか?
キーボード: 1〜4 で選択、Enter で回答