第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 Paradox: 自分の言語より下は「劣る」と分かるが、上位の言語は「奇妙」にしか見えない。なぜなら人はBlubで考えているから

グレアムいわく——Blubプログラマが下位の言語を見れば「これは機能が足りない、劣っている」と分かる。 しかし上位の言語を見上げても、「奇妙な言語だ」としか思えない。自分がBlubで考えているから、 その上にある力に気づけないのです。だから彼は結論します。「複数の言語から選べるなら、他の条件が同じである限り、 最も強力な言語を選ばないのは間違いだ」と。

ダイクストラ — 道具が思考習慣を形作る

第6章の締めにふさわしいのが、構造化革命の旗手エドガー・ダイクストラの言葉です。彼はテキサス大学への手紙(2001)で、 プログラミング教育の第一言語の重要性を訴えてこう述べました。

これがこのシリーズの通奏低音です。私たちは構文を「ただの書き方」と思いがちですが、第1章から見てきたように、 構文は思考の形であり、パラダイムは世界の捉え方でした。新しいパラダイムを学ぶことは、新しい考え方を 手に入れることなのです。

まとめ — 変化の力学と思考の器

本章では、クーンのパラダイムシフト論(正常科学→異常→危機→革命、通約不可能性)を土台に、 プログラミングのシフトの引き金(ソフトウェア危機→構造化、大規模化→OOP、マルチコア→関数型回帰)を辿りました。 科学と違いプログラミングではパラダイムが蓄積されること、普及には社会的要因が効くことを確認しました。 そして核心——アイバーソン「思考の道具としての記法」、グレアムのBlub Paradox、 ダイクストラ「道具が思考習慣を形作る」——を通じて、構文とパラダイムが思考の器であることを見ました。

パラダイムが「置き換え」でなく「蓄積」されるなら、その先に待つのは融合です。次章では、ラムダ式・パターンマッチ・ null安全といった関数型の機能が、いかにJava・Python・C#へと流れ込み、言語が互いに似通っていったか—— マルチパラダイムへの収斂を、15年の年表で追います。

理解度チェック

問題 0 / 50%
Q1

トマス・クーン『科学革命の構造』(1962)が示した科学の進み方として正しいものはどれですか?

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