
斯坦福数学系起步(1939-1961):Barbara Liskov(原姓 Huberman)1939 年 11 月 7 日出生于美国加州洛杉矶。她的父亲是工程师,母亲是心理学家。1957 年进入斯坦福大学数学系——那一年女性在斯坦福数学系的比例不到 5%,她常常是教室里唯一的女生。
1961 年 Liskov 拿到数学学士学位。毕业后她进入波士顿 Clipper 石油公司做程序员——这是她第一次接触计算机。在 Clipper 她发现「编程」和「数学」一样需要严谨的逻辑推理,这让她决定转行计算机科学。
MIT 硕士与博士(1961-1964):1961 年 Liskov 进入 MIT 数学系读硕士,1962 年转计算机系(当时 MIT 计算机系刚独立成系)。1964 年她成为 MIT 第一位计算机科学女博士,导师是 Ivan Sutherland。博士论文主题是计算机下棋的程序——她开发的程序能在 IBM 1620 上击败业余玩家。
一、问题一:抽象能不能被替换——1968 年:抽象与接口:她留下的那条约束至今仍在生效
1972 年 Liskov 加入 MIT 计算机系担任助理教授,1977 年晋升副教授,1980 年晋升正教授。2001 年她被授予「Institute Professor」——这是 MIT 教授的最高荣誉,全校只有 12 个。
学术影响:Liskov 在 MIT 53 年的学术生涯培养了 30 多位博士生、100 多位学术孙辈。其中包括今天活跃在 MIT、CMU、Stanford 的程序语言研究者——Liskov 学派是程序语言设计领域最有影响力的学术派别之一。
女科学家身份:Liskov 是程序语言和分布式系统领域最有影响力的女性科学家。在她职业生涯早期,女性在计算机科学领域几乎不被看见——她是 1960-1980 年代计算机科学界少数几位女性领导者之一,2008 年图灵奖让她成为女性程序员的榜样。
二、1939 年的波士顿,和一个拒绝学理科的女学生
CLU 的设计动机(1973-1974):1970 年代 Liskov 在 MIT 教授程序设计课程时,发现现有语言(FORTRAN、ALGOL、COBOL)都没有「抽象数据类型」(Abstract Data Type, ADT) 的概念——程序员必须直接操作底层数据表示,无法保证数据完整性。
1974-1975:CLU 语言诞生。Liskov 和学生设计并实现了 CLU 语言——这是第一门完整实现抽象数据类型概念的语言,比 C++(1983)早 9 年、比 Java(1995)早 21 年。
CLU 引入了三个革命性概念:
1. 迭代器 (iterator)。让程序员可以遍历任意数据结构(链表、树、图)而不暴露其内部表示。今天 Python/Java/C++/Rust 的 for-each 循环、Java Stream API 都源于这个概念。
2. 异常处理 (exception handling)。让程序可以优雅地处理错误,不必层层检查返回值。CLU 是第一门把异常作为一等公民的语言——今天所有主流语言(Java/Python/C++/Go/Rust)都有异常处理。
3. 类型参数化 (generics)。让程序员可以写「通用算法」而不必为每种数据类型写一遍。CLU 的「cluster」概念是 Java Generic、C++ Template、Python Type Hint 的直接祖先。
CLU 在 1979 年 ACM SIGPLAN 大会上获得「Programming Language Achievement Award」。虽然 CLU 没有成为主流语言,但它的三个核心概念(迭代器、异常、泛型)成为今天所有主流语言的标配。
三、1960 年代:MIT 与「程序设计语言抽象」
1987 年 OOPSLA 论文:1987 年 Liskov 与 Jeannette Wing 在 OOPSLA 会议上发表《A Behavioral Notion of Subtyping》论文,正式提出「Liskov 替换原则」(Liskov Substitution Principle, LSP):
「子类型必须能够在不改变程序正确性的前提下替换父类型。」
LSP 的核心思想是:继承关系不仅是语法关系(is-a),更是行为关系(must behave like)。子类必须遵守父类的所有行为契约——如果父类方法承诺「返回值大于 0」,子类就不能重写为「返回负数」。
SOLID 五原则:LSP 与 1990 年代 Robert C. Martin 提出的其他四个原则(单一职责 SRP、开放封闭 OCP、接口隔离 ISP、依赖倒置 DIP)共同构成面向对象编程的「SOLID 五大原则」——这是每一个 Java/Python/C++ 程序员都必须掌握的核心设计原则。
现代影响:LSP 直接影响了 Java 8 的 default method 设计、TypeScript 的协变/逆变、Go 的 interface 设计、Rust 的 trait 设计。每一个现代编程语言的设计都绕不开 LSP 这个 1987 年提出的原则。
四、问题二:层次化系统该怎么设计——1970 年代:CLU 与「替换原则」的提出
Argus 语言(1982-1988):1982 年 Liskov 启动 Argus 项目,设计第一门原生支持分布式计算的语言。Argus 引入了「guardian」概念——一个 guardian 是一个持久的、故障恢复的计算单元。
关键贡献:Argus 的「原子事务」(atomic transaction) 抽象成为今天分布式系统的基础。Google Spanner、Amazon DynamoDB、CockroachDB 等分布式数据库的事务模型都源于 Argus 的设计。
1988 年 Thor 分布式对象系统。Liskov 与学生把 Argus 的思想工程化为 Thor 分布式对象系统——这是世界上第一个支持「位置透明」远程调用的系统,比 Java RMI(1997)早 9 年。Thor 的设计直接影响了今天的微服务架构(gRPC、Apache Thrift、AWS Lambda)。
五、1980 年代:MIT 实验室主任与一个研究共同体的建设
图灵奖颁奖词(2008):Liskov 获得图灵奖,评奖委员会表彰她「对编程语言、程序设计方法、分布式系统的基础性贡献」。颁奖词特别提到三个里程碑:CLU 语言的抽象数据类型、Argus 语言的分布式事务、Liskov 替换原则的子类型理论。
Liskov 是图灵奖历史上第二位女性得主(第一位是 2006 年 Frances Allen)。2008 年是图灵奖历史性的一年——Liskov 与 2007 年图灵奖得主 Edmund Clarke、Allen Emerson 的研究都基于形式化方法,标志着「软件工程的形式化」成为计算机科学的核心方向。
图灵奖演讲:Liskov 在 2008 年图灵奖演讲中回顾了她的程序语言设计哲学——「简单性、抽象性、可组合性」。她说:「程序语言不是给计算机用的,是给程序员用的。一个好的语言应该让程序员的意图清晰可见。」
六、1990 年代:把分布式系统的问题重新写一遍
Dorylus 系统(2024)。Liskov 86 岁高龄时仍参与设计了 Dorylus 分布式图计算系统——该系统 2024 年在 SIGCOMM 会议上获得最佳论文奖。Dorylus 解决了大规模图计算中的「边服务器」(edge server) 资源浪费问题,比之前系统快 8 倍。
MIT Institute Professor。Liskov 至今仍是 MIT Institute Professor——这是 MIT 教授的最高荣誉,全校只有 12 个。她在 MIT 53 年(1972-2025)的教学与研究影响了整个程序语言和分布式系统领域。
女性程序员榜样。Liskov 是程序语言和分布式系统领域最有影响力的女性科学家。她的成功路径——从数学系学生到 IBM 程序员到 MIT 教授到图灵奖得主——为女性进入计算机科学领域提供了榜样。
七、2008 年图灵奖,以及一份关于「 substitutability」的坚持
| 1964 | MIT 第一位计算机科学女博士——为女性进入计算机科学领域开辟道路 |
| 1974-1979 | CLU 语言——抽象数据类型、迭代器、异常处理、类型参数化四大概念的工程化 |
| 1982-1988 | Argus 与 Thor——分布式事务、远程调用的早期实现,影响微服务架构 |
| 1987-2008 | Liskov 替换原则与图灵奖——面向对象编程的 SOLID 原则之首,程序语言设计理论 |
Liskov 至今仍在 MIT 担任 Institute Professor。她近年研究「多核系统」「分布式存储」等现代主题,2024 年她参与设计的 Dorylus 系统在 SIGCOMM 获得最佳论文奖。86 岁的她仍在用工程方法推动计算机科学边界。Liskov 是程序语言、分布式系统、面向对象设计三大领域的奠基人——而这三个领域正是今天 AI 系统、云计算、微服务架构的数学基础。