1. 身近な「OOP・SOLID 原則」を逆算する
プログラマがクラス設計を学ぶときに必ず出会う SOLID 原則。その L (Liskov Substitution Principle) は バーバラ・リスコフ の名前。彼女が 1970 年代に作った CLU 言語 が現代のオブジェクト指向の理論基盤。
現代のオブジェクト指向理論が違っていた可能性。CLU は Java / Python / Ruby / C++ の祖先、彼女の「抽象データ型」概念がプログラミング言語の標準に。
2. 100 文字でわかる
バーバラ・リスコフ (1939〜)。米国 CS 学者、MIT 教授。1970 年代 CLU 言語、1987 年「リスコフの置換原則」提唱。2008 年女性 CS 史上 2 人目のチューリング賞。
3. 500 文字でわかる
1939 年米国カリフォルニア生まれ、ユダヤ系。スタンフォード大学博士。1972 年 MIT 教授、1974 年から CLU (CLUster) 言語を開発 — 「抽象データ型 (ADT)」「反復子 (iterator)」「多重戻り値」などの概念を初導入、現代のオブジェクト指向の理論基盤。CLU は商用言語にはならなかったが、Java / Python / Ruby / C++ / Modula-3 すべてに影響。1987 年、論文「Data Abstraction and Hierarchy」で「リスコフの置換原則 (LSP)」提唱 — 「派生クラスのオブジェクトは、基底クラスのオブジェクトと置き換えても挙動が変わらないべき」。これが SOLID 原則の L に。2000 年代から分散コンピューティング (Byzantine Fault Tolerance) の研究、Bitcoin・分散システムの理論基盤に。2008 年、女性 CS 史上 2 人目のチューリング賞 (1 人目は Frances Allen 2006)。MIT Institute Professor (最高位の教授職) として現在も活躍。
4. もっと詳しく
CLU 言語 (1974-)
1974 年から MIT で CLU 言語を開発。「抽象データ型 (ADT)」を初導入 — 「データの内部実装を隠蔽し、操作だけを公開する」という現代 OOP の核心概念。反復子 (Python の for 文の元)、多重戻り値 (Go の return a, b の元)、例外処理 等も初。当時の言語学界に衝撃。
リスコフの置換原則 (1987)
1987 年論文で「サブタイプはスーパータイプと置換可能であるべき」を厳密に定義。「正方形は長方形か?」問題 が有名な例 — 正方形は長方形のサブクラスではダメ (LSP 違反)、なぜなら長方形の `setWidth(5)` を正方形に呼ぶと挙動が崩れる。これが SOLID 原則の L。
Byzantine Fault Tolerance (BFT)
1999 年から Castro と「Practical Byzantine Fault Tolerance」研究。「悪意のあるノードがネットワークに混在していても、合意できる」分散合意アルゴリズム。これが Bitcoin・分散システム・ブロックチェーン の理論基盤の 1 つ。
チューリング賞 (2008)
2008 年、女性 CS 史上 2 人目のチューリング賞 (1 人目は 2006 年 Frances Allen)。受賞理由「プログラミング言語と分散システムの設計の基礎、特に抽象データ型・容認的故障耐性 への貢献」。「女性が CS で最高位を取れる**」象徴的事件。
5. 現代への影響
- SOLID 原則 (L): クリーンコードの基本
- 抽象データ型 (ADT): 全 OOP 言語の基本概念
- 反復子・例外処理: Python / Java / Ruby に直系
- Byzantine Fault Tolerance: Bitcoin / 分散合意の理論
- 女性 CS リーダーの象徴: 現代の Diversity 議論の核
6. もっと知りたい人へ
- Wikipedia (日本語): バーバラ・リスコフ
- 論文「Data Abstraction and Hierarchy」(1987): LSP 原典
- MIT 個人ページ: https://www.csail.mit.edu/person/barbara-liskov
7. 次の話
EP.65 では エドガー・コッド を扱います。リレーショナルデータベース (SQL) を発明した IBM 研究員。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。