程序基于精确的数学——STL之父Alex Stepanov访谈录

新软件

了解Alex和STL

Alex Stepanov,STL(标准模板库)之父,并因此而荣获第一届Dr. Dobb's 程序设计杰出奖,现在是Adobe公司首席科学家。他曾是康柏电脑公司的副总裁和首席科学家,AT&T实验室副总裁和首席架构师,SGI服务和超级计算机业务首席技术官。

背景:Dr. Dobb's程序设计杰出奖

从1991 年起,每年《Dr. Dobb's Journal》都会将荣誉给予那些对软件开发技术的发展做出了重要贡献的人。这就是著名的Dr. Dobb's 程序设计杰出奖 (Excellence in Programming Award)。

什么是STL呢?STL就是Standard Template Library(标准模板库)的简称,它是由Alex Stepanov和Meng Lee在惠普实验室工作时开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前,Alex和David Musser已对该技术进行了很长一段时间的研究。

STL是多年来编程应用中常用组件的集合,STL的贡献是将各组件和接口泛化及标准化。这样可以极大地提高编程效率。STL现在是C++的一部分,任何C++平台都包含着它。

中国·数学·未来

对于STL之父Stepanov先生来说,他更像一位数学家。和在上个月我们采访的C++之父一起,这次他是第一次来到中国,而他对古代中国和中国数学家的了解,更是让人佩服。

Stepanov先生告诉记者,计算机科学是建立在数学之上的精确的学科,他说:“程序设计就像同未理顺的复杂性问题的一场战斗,既然要进行这场战斗,首先需要运用数学这门工具,几个世纪以来,数学的作用正在于此。如果将现在生动的数学体系作为实验证据,对于解决人类遇到的复杂性问题,数学还是最有效的。”

当我们问他对中国和中国的程序员的认识时,他的回答还是和数学相关。他告诉记者:中国是一个伟大的国家。曾经有许多伟大的数学家:秦九韶的《数书九章》就是古代数学中的经典;《孙子兵法》中已包含现代西方称之为中国余数定理的内容。现代中国也产生过许多真正的伟大的数学家,如对哥德巴赫猜想做出杰出贡献的陈景润先生。

Stepanov先生的编程信条是:程序设计是基于精确的数学训练的。他的建议更是浅显而简洁:好好学数学,好好学计算机,好好学英语。

谈到未来时,他虽然并没有明确回答什么,但对美好未来的憧憬,还是和大家的期待一样。关于将来要用的计算机语言,他也有自己的答案。他说:C++和Java会在近几年得到最广泛的应用,我更期望最终会有某些新的、更完美的语言出现。

大师和成长历程

1950年11月16日,Stepanov先生生于苏联莫斯科。他曾在莫斯科大学研究数学,但未成为一名数学家。因为他实在不能对Tamagawa算术、Coxeter群等一些纯数学的东西感兴趣。Stepanov先生的想法很单纯,他要脚踏实地地干事。对他来说最幸运的事情是,他能够看到很多伟大的数学家是如何做学问的,也就使他更清楚地看清计算机科学中一些司空见惯的伪数学。因此,能成为一名程序员对他和计算机科学来说真是一件好事。

另两位大师对他的影响是显而易见的,一位是计算机程序设计艺术教授高德纳(Donald Knuth)先生, 另一位则是计算机科学大师Edsger Dijkstra。他深情地说:“前者告诉我答案,后者则引导我深思。”而他对高德纳先生的《计算机程序设计艺术》一书的推崇,也使我们找到了提高自己编程水平的杀手锏。

1984年,他成为纽约布鲁克林理工大学助理教授。Stepanov告诉记者:“教授计算机科学使我受益匪浅,我要对付各种研究生课程。在此过程中,我学到了很多新东西。我还用Scheme语言开发了一个巨大的数据结构和算法库,这项工作导致了Ada泛型库的诞生(这是和David Musser合作的)。”在贝尔实验室短暂地研究了一段时间,Stepanov设计了一个新的C++算法库,在1998年他又去了位于Palo Alto的惠普实验室。在那儿,他先花了四年时间研究存储系统 。1993年,Stepanov得到了一个回头研究泛型编程的机会。而STL就是这次研究的结果。1995年他又到了Silicon Graphics,在此,组建了一个小组继续进行STL的开发工作。”

Stepanov现在是Adobe公司的首席科学家。Adobe是一家生产诸如Acrobat和Photoshop之类桌面软件的公司。

高德纳先生的《计算机程序设计艺术》一书,正是Alex Stepanov先生极力推荐的一部作品,不论电邮中还是面对面时,他反复强调这部著作是一个珍宝库,想要什么,里面便有什么。而他在和这本书打交道的三十多年中,从中受益无穷。从他对高德纳先生《计算机程序设计艺术》的极力推崇上,也对他的个性有所印证。

STL故事

STL是Stepanov先生一生中浓墨重彩的一笔,而这一笔在他的描述中却是那样地不经意。STL也是他个性的重要体现,独立思考,缜密逻辑。要了解STL之父,首先要知晓什么是STL。

有一位意大利记者曾向Stepanov先生问过此问题:STL究竟是指Standard Template Library(标准模板库)还是 Stepanov and Lee?

Stepanov先生笑着解释他的玩笑:“哦,它真的是指Standard Template Library。我曾经在Dr. Dobb的杂志做的那个专访里开玩笑说,STL是指‘Stepanov and Lee’,但它只是个玩笑而已。”

而STL实质上包含了二者的意思。Meng Lee是他的一位无可挑剔的合作伙伴,她使Stepanov先生更专注,她在代码和文档上花了大量的令人精疲力尽的时间。正是由于像Lee这样的合作者,使得STL广为世人传播。

STL代表什么呢?Stepanov and Lee,这不完全是个玩笑,Meng Lee架起了我们与Stepanov先生沟通的又一座桥梁。这篇采访中浸透着她的汗水......

8-g1-1-3.jpg
Alex和中国程序员们共勉:继续学习