从20世纪60年代至今,数据库领域经历了六十多年的发展,且愈发蓬勃。作为数据库理论创始人,Jeffrey David Ullman见证了这一发展历程,他坦言数据库发展不会有“AI寒冬”这样的时期。
作者 | 田玮靖 翻译 | 何雨
出品 | 《新程序员》
意外“入坑”,也格外“适合”的编程生涯
2020年,美国计算机协会(ACM)将图灵奖授予Jeffrey Ullman(以下简称Jeffrey)以及与他一直以来的好搭档、哥伦比亚大学名誉教授Alfred Aho,以表彰他们基于编程语言实现的基础算法和理论方面的成就,及其所编撰的书籍对几代计算机科学家所造成的积极影响。获奖消息一公布,便引发业界一片沸腾。
在接受《新程序员》采访时,他坦言对获得图灵奖感到很意外,就如同多年前他进入计算机科学领域一样,也是意料外的事情。Jeffrey回忆说,在他读大学的时候,“计算机科学”还不存在,当时他学的专业与数学应用相关,他一度认为自己可能是精算师岗位的一把好手,为此还参加了几次职业考试。但事情永远不会按照人们所预料的那样去发展,在实习工作期间,Jeffrey被派去协助运行Burroughs 5500计算机。从此他发现了一个“新大陆”,并由衷感受到:“编程很适合我”。
正是对数学与应用程序的浓厚兴趣,促使Jeffrey一步一步走向了计算机科学领域。在1966年攻读完普林斯顿大学电气工程博士后,Jeffrey随即加入贝尔实验室,正式开启了成就非凡的技术生涯,并最终成为世界知名的计算机科学家。
从数据库定义到生态,亲历数据库发展60年
众所周知,“数据库”这一术语是指由数据库管理系统(Database Management System,简称DBMS,或称为数据库系统)管理的数据聚集。但数据库系统到底是什么?众说纷纭。
被称为“数据库理论创始人之一”的Jeffrey,根据自己多年的研究,通过《数据库系统基础教程》一书,不断升级和更新他对数据库的理解。在2019年出版的原书第3版中,他对数据库系统做了如下定义:
- 允许用户使用特殊的数据定义语言(Data-Definition Language,DDL),并说明它们的模式(Schema)即数据库的逻辑结构。
- 使用合适的查询语言(Query Language)和数据操作语言(DataManipulation Language),为用户提供查询(Query,“查询”是数据库关于数据申请的术语)和更新(Modify)数据的能力。
- 支持超大数据量(GB级及以上)数据的长时间存储,并且在数据查询和更新时支持对数据的有效存取。
- 具有持久性,在面对各种故障、错误或用户错误地使用数据库时,数据库的恢复保证了数据的一致性。
- 控制多个用户对数据的同时存取,不允许一个用户的操作影响另一个用户(称作隔离性,Isolation),也不允许对数据的不完整操作(称作原子性,Atomicity)。
作为计算机科学领域的核心方向之一,数据库系统的发展可以追溯至1958年,这一年第一个数据模型被提出。如今,全球已经诞生了成千上万款数据库产品,可谓是从零零星星到百卉千葩,今非昔比。即使在Jeffrey等人创建数据库系统理论时(上世纪八十年代),也并没有预料到如今数据库的发展格局能够如此庞大。
生于1942年的Jeffrey几乎见证了整个数据库发展历程,所著《数据库系统原理》《数据库系统实现》《数据库系统基础教程》等图书与众多数据库相关论文,奠定了他在数据库领域的地位。不过,大多数人对他的印象停留在“龙书”(《编译原理》)作者,只因这本书太过著名。该书1986年出版,随即成为许多高等院校计算机及相关专业本科生及研究生的编译原理课程教材,也被广大技术人员倍加赞赏。
但他的成就远不止于此。除“龙书”外,Jeffrey亲自统计的出版物就有206个,其中,《自动机理论,语言和计算导论》《计算机算法的设计与分析》《大数据:互联网大规模数据挖掘与分布式处理》等书籍都被称为业界规范或经典之作。此外,他还是斯坦福大学名誉教授、美国计算机协会(ACM)院士、冯·诺依曼奖章、Knuth奖的获得者。
对话实录:《新程序员》vs 数据库理论创始人
邹欣:首先祝贺你获得图灵奖!
Jeffrey:坦白说,完全没想过得这个奖。我想你可能已经注意到我写了很多书,一般来说,书籍并不是这个奖项授予的对象,我也不认为这些书是我一生的贡献。
邹欣:图灵奖一年只颁发一次,可能有点少,现实中有很多伟大的开拓者、科学家,甚至程序员值得拥有它。
Jeffrey:我很同意你的观点,你可能还有一个疑问,为什么图灵奖总是颁给长者呢?事实上,Alfred Aho和我是最老的。首位图灵奖获得者Alan Perlis在得奖时只有四十多岁,而现在得奖者年纪越来越大了。这就像一种优先级队列,有些人可能永远得不到了。其中确实还有其他因素,比如人们在很多年后才认识到某种贡献的意义。几年前有三个研究深度学习的人被授予了图灵奖(指Yoshua Bengio、Geoffrey Hinton和Yann LeCun),因为他们在25年前做的工作,直到现在才被认识到大有用处。
邹欣:希望更多的贡献能及时得到认可,你从一开始的学术研究到后来成为专家,你能告诉我们一些贝尔实验室的信息吗?
Jeffrey:我刚加入贝尔实验室时,它还是AT&T的一个分支。AT&T当时是美国的电话电报公司,由亚历山大·贝尔(Alexander Graham Bell)创建。AT&T有一些垄断性质,因为政府认为有一个全国电话就够了,所以他们四处架设电话线,这样就可以让一家公司垄断每个地区。我认为美国80%的地区都在AT&T的影响范围之内,直到联邦政府要求:一是公司不能随意收费,除非得到当地政府的批准。二是公司收入的1%必须投入研究事业中,是收入,而不是利润。这些钱大部分支付给那些直接产生效能的工程师,以此使电话系统更加优秀。科学家、工程师、数学家、物理学家、化学家、计算机科学家也拿到了一小部分,他们告诉我们“随便做什么都可以”。
我在贝尔实验室工作约一年后,在大厅遇到了实验室的总裁。他问我,“你是做什么的?”我解释了我正在做的一些疯狂的事情,他目光有些呆滞,对我说“只要你做得开心就好”。这就是当时大家的态度,所以这儿变成一个人们很想来工作的地方,自然就吸引了很多有能力的人,而且贝尔实验室给了他们真正想要的东西。他们只要提出要求,经理就会支持。比如Unix这个项目,刚开始时,肯·汤普森(Kenneth Thompson)和丹尼斯·里奇(Dennis Ritchie)问他们的经理摩根·斯帕克斯(Morgan Sparks),“我们能购买一台小型机吗?”得到的回答是,“没问题,这就去买回来。”要知道,这如果是在大学,拿到PDP-11的可能性都非常小。
邹欣:我们现在经常听到AI这个词,但它曾经历过“AI寒冬”,那时AI领域的人甚至不愿意提及自己的专业,因为名声很坏,数据库经历过这样的时期吗?
Jeffrey:我不知道它是否真的坏到了这种程度,AI寒冬只是周期性的。作为计算机科学的一个分支,AI的意图是让计算机、机器人的举止行为像人一样,并且能够像人一样思考。AI社区有些独特,他们许下了各种各样奇妙的承诺,但从未实现过。如果知道美国的基金是怎么运作的,你就会发现,假设告诉投资方,投资一笔钱就能让你做出很多让人惊奇的事,他们是很难对你说“不”的,因为他们不想错过下一个风口。这些钱会流入AI社区,并且什么都不会发生。也有人注意到了承诺和现实的差距,因此他们会缩减预算,但几年后,AI的伙计们又会提出其他奇妙的东西,这可能是种文化。
数据库或许和其他计算机科学的分支一样,从事一些比较现实的事情,没人会觉得他们不得不向数据库系统砸钱。数据库领域有足够的钱去生存,也不会进入像AI寒冬这样的周期性循环。
邹欣:你写过很多广为流传的著作,其中Compilers:Principles, Techniques, and Tools(《编译原理》)。这本书曾被很多高校作为教材,但目前很多学校不教编译原理,而替换成了生产应用的知识技能。
Jeffrey:这确实在斯坦福发生,我们不再需要写编译相关的东西,我认为这已经是很普遍的事情。事实上,很少有人通过写编译程序赚钱,只有在学校,你才会让学生写上千行的代码。
编译程序很难写,但这不是不可能的事。我可能会写一些前端工具,也可能参与代码的优化,或者其他事情。如果你能在一个学期或者三个月内写一点编译程序的代码,不仅对你了解大体量的程序有好处,还能帮助你了解表达式是怎么起作用的,以及Context-free grammars(上下文无关文法)怎么工作等等。比如说,使用工具生成你的包,你可能会学到如何实现它,不只是写写代码,你也要知道它是怎么运算工作的。
Alfred Aho已经教授好多年不同的编译课程了。他教学生怎么使用我们开发的前端生成工具,如Lex和Yacc。学生被分成五人一组,并考虑一种自己可以设计和编写的语言来编译这些工具。不是使用C++、Java或者其他语言,而是让学生设计一些简易语言,并体会语言的合理性、多样性。有的小组成功了,并且有学生很喜欢这个教学方式,Alfred Aho认为,这是比教学生怎么写GCC(GNU编译器套件)这种传统教学更好的教学方式,因为几乎没有人这么做过。
邹欣:你的另一本书Foundation of Computer Science(《计算机科学基础》),你在主页中提到它可能没有被广泛印发,但它是对人们免费开放的,并且你认为它很重要。为什么?
Jeffrey:当时,我将因获得图灵奖而去写一篇论文,这篇文章可能最终会发布在CACM(ACM通信)上。我们决定编写计算机科学基础,而不是使用“龙书”,我们的想法是,计算机科学基础被设计成理论的第一门课程,在大学第二年学习,也就是在学完编程之后。
我们有两个主题。第一个主题是数学,数学和计算机技术实际上是同一事物的两个方面。在某种意义上,计算机技术是数学的实现,是你真正能够执行的东西。举个例子,数学家学习递归证明,这和计算机的递归程序想法是一致的。递归算法重点在于做什么,而数学家是证明它。数学家谈论的是图表,而我们谈论的是怎么实现图表以及图表上的算法。这就是这本书想要表达的观点。另一个主题就是抽象,计算机科学实际上是学习抽象概念。
邹欣:假如让你回到大学,在选专业时,你还选计算机科学吗?
Jeffrey:我已经毕业很久了,我上大学时还没有出现计算机科学这个专业。我的专业是应用数学和电子工程,我认为是很好的选择。其实我们有很多条路可以走,可以“去Oracle”,更好地实现、优化数据库,也可以从事基因相关的工作,如果可以的话,我会鼓励人们不仅学习计算机科学,还要学习一些应用领域的知识。因为大多数计算机科学家将要构建应用程序,他们不会构建计算机或操作系统,或者任何核心系统。
本文出自《新程序员·新数据库时代& 软件定义汽车》,即将正式上市!
2018 年图灵奖得主、深度学习三巨头之一Yann LeCun(杨立昆),2020年图灵奖得主、龙书《编译原理》作者Jeffrey Ullman,英特尔副总裁Erez Dagan,阿里巴巴集团副总裁李飞飞,腾讯自动驾驶总经理苏奎峰……《新程序员》第二期,我们以「软件定义汽车 & 新数据库时代」为主题,邀请到国内外60余位学术领航人、技术大咖与产业先锋,为智能驾驶及数据库产业奉上酣畅淋漓的理论交锋及实战演练。
何谓新数据库时代?需要从过去和现在看未来。在“十问数据库”中,华东师范大学副校长周傲英、达梦数据副总经理冯源、TiDB创始人黄东旭、OceanBase CTO阳振坤……各路产学研大神齐聚,从数据库国产化历史,到开源、云,再到数据安全,共话未来数据库走向何方。
扫描下方二维码,添加小助手,即刻加入《新程序员002》「读者群」,抢先一步获取杂志最新资讯,精彩内容不再错过。
《新程序员》立足于行业前沿,深度探索技术未来,通过音视频、图文专栏等丰富的多媒体形式为载体,全方位解读技术与产业,为中国开发者打开新时代的技术之门。
《新程序员001:开发者黄金十年》内容涵盖:
- 60位+ 技术大咖的经典观点与实践干货;
- 34篇 精彩文章;
- 13个 配文视频;
- 1000位+ 技术人才共同学习成长;
- 2张 开源核心技术全景工具收藏图
长按识别二维码即可订阅
无论你是编程爱好者还是职场萌新,无论你是资深程序员还是架构师、CTO,在《新程序员》里,你都会有所收获。