专访2014年图灵奖得主:只编码不编程,相当于没有蓝图就盖房子
[原文链接]
莱斯利·兰波特
图灵奖(Turing Award)常被称为计算机界的诺贝尔奖,这一奖项在3月18日揭晓。今年的获得者是计算机科学家莱斯利·兰波特(Leslie Lamport),他的研究让我们可以开发大型、网络化的计算机系统。而这类系统真是今天的云计算和网络服务的驱动之一。美国计算机协会(Association for Computing Machinery)每年颁发图灵奖,奖金为25万美元。
现年73岁的兰波特是微软公司的研究员,他因20世纪70年代起的一系列重大突破而知名。他设计的算法让软件能可靠地运行,哪怕这些软件被安装在有通讯延时或全部出现故障的一组独立计算机或组件上。
这一成果所在的领域现在被称为分布式计算。这一技术对互联网巨头不断扩大的数据中心仍然至关重要。在计算机和移动设备上,该技术也被用于现代多核处理器的协作。兰波特接受了《麻省理工学院科技评论》记者汤姆·西蒙奈特的采访,解释了他的技术可以持续应用的原因。为什么分布式计算很重要?
分布式计算并不是件想干就干的事情,例如“让我们来把东西分布一下吧”。问题其实是“如何能让这些东西协调运作?”
1980年,我在拜占庭将军问题(Byzantine Generals)上为解决软件容错性所做的工作,来自我在SRI公司获得的一份为美国国家航空航天局(NASA))构建一台帮助飞机制造的原型计算机合同。这一工作要用到多台可能出现故障的计算机,因此就有了分布式系统。现在帕罗奥图(Palo Alto)、北京和其他地方都有计算机,人们想要统一使用这些计算机,所以我们就搭建了分布式系统。含有多个处理器的计算机也属于分布式系统。
现在,我们已经不再使用你在上世纪70年代和80年代用的那种计算机了。但为什么分布式计算算法却被保留下来?
一些领域发生了巨大变化,但在我看来,同步的基本概念没有变。
例如,一台多处理器计算机和一组被速度不快的网络连接的计算机非常不同。但当你尝试以数学方法推导其正确性时,这两套系统并无本质差别。我在1989年开发了Paxos算法,因为当时数字设备公司(Digital Equipment Corporation,简称DEC)的人正在创建分布式的文件系统。Paxos算法目前被广泛应用。看看必应、谷歌和亚马逊内部那些放满了计算机的房间,那里大概都在使用Paxos算法。
最近,你在研究如何更好地构建软件。现在的软件设计方法有什么问题呢?
人们似乎把编程等同于编码,这就是问题所在。在编码之前你应该弄清自己在干什么。如果不能写下自己在干什么,你就不会清楚自己是否理解它。如果首先写下的是代码,那你大概确实不能理解自己要做的事。如果你在没有蓝图(我们称为规格)说明的情况下就想建一座桥或搭一座房子,那就很难建得既好看又可靠。然而大多数代码就是这样写出的。每次你咒骂你的电脑,你其实是在骂那个没想明白就编出程序的人。
软件文化中的某些东西阻碍了规格说明的应用。我们有一种精确描述事物的方式,这种方式已经发展了几千年,它的名字叫数学。我想在我们构建某种东西的时候,应该以这种方式来进行思考。