芭芭拉·利斯科夫:数据抽象的首位架构师
1968年,芭芭拉·利斯科夫 (Barbara Liskov) 成为美国首批从计算机科学系获得博士学位的女性之一。四十年后,麻省理工学院 (MIT) 教务长向全世界宣布,每当有人在线查询银行余额或进行搜索时,他们都在“利用她研究的成果”。在这两个时刻之间,她构建了概念框架——数据抽象、抽象数据类型,以及关于一种类型何时可以安全替代另一种类型的正式规则——这些规则在自那以后编写的几乎每一种编程语言下默默运行。
计算领域不可思议的起点
芭芭拉·简·胡伯曼 (Barbara Jane Huberman) 于1939年11月7日出生在洛杉矶,是四个孩子中的长女。她在加州大学伯克利分校 (UC Berkeley) 主修数学,辅修物理,于1961年毕业,是班上仅有的两名学习数学的女性之一。在那个女性技术职业机会几乎不存在的时代,她没有选择轻松的道路,而是在斯坦福大学录取她进入一个刚起步的计算机科学项目之前,先在米特雷公司 (Mitre Corporation) 担任了一名程序员。她1968年的博士论文解决了国际象棋残局编程问题,并产生了“杀手启发式”搜索,这是一种至今仍在人工智能领域探讨的搜索剪枝技术。她的博士导师是人工智能领域创始人之一约翰·麦卡锡 (John McCarthy)。她被公认为美国第一位从计算机科学系获得博士学位的女性。
CLU语言与数据抽象的概念
利斯科夫于1972年加入麻省理工学院,领导了后来成为程序设计方法学小组的团队,并于1970年代中期在那里设计了CLU语言。当时,大多数程序员以过程化方式组织软件,编写直接操作数据结构的指令序列,导致两者在各处纠缠不清。CLU引入了“集群”——一种自包含的模块,将数据类型与允许操作它的唯一方法捆绑在一起,从而将内部表示与程序的其余部分完全隐藏。这就是数据抽象,很难夸大它如何彻底重塑了软件工程:Java、C++、C# 和 Ada 核心中的类结构都源自CLU的集群。利斯科夫设计该语言本质上是一个通过工作代码进行的论证,即大型软件系统只有在被划分为具有清晰接口的、可独立验证的小部分时,才能被可靠地构建。
Argus、拜占庭容错与分布式系统
利斯科夫并没有止步于单机程序。在1980年代,她领导开发了Argus,这是第一个专门为支持分布式计算而构建的高级编程语言——即程序即使在通过网络通信的多台机器上拆分运行也能保持正确,这一思想现在是所有云服务和Web应用的基础。她后来转向了一个更难的问题:分布式系统如何在部分组件机器随意失效或行为恶意的情况下保持正常运行,计算机科学家将这种情况称为“拜占庭容错”。她和她的学生开发的拜占庭容错实用技术现在嵌入在保持大规模互联网服务可靠性的基础设施中,并后来支撑了一些区块链共识协议。
以她名字命名的原则
在1987年的一次主题演讲中,利斯科夫阐述了后来被称为利斯科夫替换原则 (Liskov substitution principle) 的理论,该原则后来与珍妮特·温 (Jeannette Wing) 一起正式确定:如果一个程序是为使用给定类型的对象而编写的,那么它应该能够在不破坏程序正确性的情况下使用该类型的任何子类型对象。直白地说,这听起来几乎是不言而喻的,而这正是它重要的原因——它将一种模糊的直觉(即“子类应该表现得像父类”)转变为一种严谨、可检查的正确面向对象设计的标准。该原则成为教授给几乎每一位软件工程学生的“SOLID”五大支柱之一,这是个人研究者的名字进入整个行业通用词汇的罕见案例。
图灵奖与认可
2008年,计算机协会 (ACM) 授予利斯科夫 A.M. 图灵奖 (A.M. Turing Award),这是计算领域的最高荣誉,“以表彰其在程序设计语言和系统设计的实用与理论基础方面的贡献,特别是在数据抽象、容错和分布式计算方面。”她是第二位获得该奖项的女性。当时的麻省理工学院校长苏珊·霍克菲尔德 (Susan Hockfield) 称她的贡献是“一种麻省理工学院的理想:具有深远益处的开创性研究”,而教务长 L. 拉斐尔·里夫 (L. Rafael Reif) 的致敬则更为具体:“每当你交换电子邮件、在线查看银行对账单或进行谷歌搜索时,你都在利用她研究的势头。”她曾于2004年获得IEEE约翰·冯·诺依曼奖章;2012年入选国家发明家名人堂,并于2023年获得本杰明·富兰克林奖章。她目前仍是麻省理工学院教授,这是该校最高教职殊荣,于2008年授予。
为什么芭芭拉被称为天才
利斯科夫的天才案例本身就是关于抽象的案例——即在复杂系统中划定正确界限的特定智力技能,使得每个部分都可以被独立理解和信任。CLU的集群和以她名字命名的替换原则并非华而不实的创造;它们是对大多数1970年代程序员尚未能清晰表述的问题的精确回答,这也是为什么在一个很少以这种方式认可个人的领域中,她的名字能够永久地与该解决方案联系在一起的部分原因。图灵奖委员会的语言——“实用和理论基础”——恰恰表达了这一点:不是单一的产物,而是一种跨越语言和数十年通用的关于正确性的思考方式。诚实的反对意见是,利斯科夫是在一个已经向模块化和抽象类型发展的研究传统中工作的——托尼·霍尔 (Tony Hoare)、尼克劳斯·维尔特 (Niklaus Wirth) 等人也在同时追求相关思想——而且CLU本身从未成为广泛使用的生产语言;其影响力是二手抵达的,通过后来采用其概念的语言。根据证据,她的天才与其说是纯粹的发明,不如说是不同寻常的清晰度:在任何人之前,就完全准确地把握住了抽象。
遗产
利斯科夫的思想现在隐形地位于运行手机、银行和搜索引擎的软件之下,她的名字作为一种简写存续下来——在工程师进行的从未读过她论文的代码审查中,会问“这是否违反了利斯科夫替换原则?”。很少有研究者能实现那种特殊且不引人注目的永恒:如此彻底地融入了一个领域的常识,以至于人们不再记得曾经有一个名字与之相连。

.jpg)
