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

目录

  • • 个人简介
  • • 程序基于精确的数学——STL之父Alex Stepanov访谈录
  • • 轻轻松松学习C++ 标准模板库STL
  • • 参考文献

个人简介回目录

Alexander Stepanov (born November 16, 1950 in Moscow) is the key person[clarification needed] behind the C++ Standard Template Library, which he started to develop around 1993 while employed at HP Labs. He had earlier been working for Bell Labs close to Andrew Koenig and tried to convince Bjarne Stroustrup to introduce something like Ada Generics in C++[1]. He is currently employed by Adobe Systems.

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

了解Alex和STL

Alexander Stepanov

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

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

Alex Stepanov先生

什么是STL呢?STL就是Standard Template Library(标准模板库)的简称,它是由Alexander Stepanov和Meng Lee在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前,Alex和David  Musser已对该技术进行了很长一段时间的研究。STL是多年来编程应用中常用组件的集合,STL的贡献是将各组件和接口泛化及标准化。这样可以极大地提高编程效率,STL现在是C++的一部分,任何C++平台都包含着它。

中国.数学.未来
对于STL之父Stepanov先生来说,他更像一位数学家,而他的经历也说明了这一点。和在上个月我们采访的C++之父一起,这次他是第一次来到中国,而他对古代中国和中国数学家的了解,更是让人佩服;当然,更有他对中国程序员们的祝愿!除了祝愿,还有大师的点滴看法,毕竟不能只说好听的!——真正的朋友都是这么做的。

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

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

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

Alex和中国电脑爱好者共勉:继续学习!

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

大师和成长历程
1950年11月16日,Stepanov先生生于苏联莫斯科,在莫斯科大学研究数学,但他从未成为一名数学家。因为他实在不能对Tamagawa算术、Coxeter群等一些纯数学的东西感到兴趣。Stepanov先生的想法很单纯,他要脚踏实地干事。对他来说最幸运的事情是,他能够看到很多伟大的数学家是如何做学问的,也就使他更清楚地看清计算机科学中一些司空见惯的伪数学。因此,能成为一名程序员对他和计算机科学来说真是一件好事。另两位大师对他的影响是显而易见的,一位是计算机程序设计艺术教授高德纳(Donald Knuth)先生, 另一位则是计算机科学大师Edsger Dijkstra。他深情地说:“前者告诉我答案,后者则引我深思。”而他对高德纳先生的《计算机程序设计艺术》一书的推崇,也使我们找到了提高自己编程水平的杀手锏。1984年,他成为纽约布鲁克林理工大学助理教授。他说:“教授计算机科学使我受益匪浅,我要对付各种研究生课程。在此过程中,我学到了很多新东西。我还用Scheme语言开发了一个巨大的数据结构和算法库,这项工作导致了Ada泛型库的诞生(这是和Dave Musser合作的)。在贝尔实验室短暂地研究了一段时间,设计了一个新的C++算法库,在1998年去了位于Palo Alto的惠普实验室。在那儿,先花了四年时间研究存储系统 。1993年,得到了一个回头研究泛型编程的机会。而STL就是这次研究的结果。1995年又到了Silicon Graphics,在此,组建了一个小组继续进行STL的开发工作。”他现在是Adobe公司的首席科学家。Adobe是一家生产诸如Acrobat和Photoshop之类桌面软件的公司。

Alexander Stepanov

高德纳先生的《计算机程序设计艺术》一书,正是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最终广为世人传播。

Stepanov 先生在互联网上很低调,既没有个人主页,也很难搜索其电邮。STL代表什么呢?Stepanov and Lee,这不完全是个玩笑,Meng Lee架起了我们与Stepanov先生沟通的又一架桥梁。这篇采访中滋润着她的汗水……

对话STL之父Alex Stepanov
 当我面对面见到Alex Stepanov先生时,和我面对他的像片时想像的是另一个人,从他的唯一的官方照片上, 我们不难对他有威严的遐想,但实际上那并非他自然的一面——幽默风趣、平易近人才是真正的他。

Stepanov先生和C++之父Bjarne Stroustrup 先生是很好的朋友,Bjarne的推荐对我们的采访起了重要的推动作用,他告诉我:Stepanov先生经常有一些有趣的和重要的东西要说。Stepanov先生有着非常严重的个人魅力,他的言辞激进,甚至让人想到“猛烈”“尖锐”等字眼,这可能也正是他对计算机内涵的深刻体会和精深的数学涵养所致——他的眼里容不得半粒沙子。

他给我们的忠告很简洁:“好好学数学,好好学计算机,好好学英语。”  溯源STL
问:您认为编程的好的方法是什么?对于编程来说,一种工具是不是必需的?Alex:我认为学习多种不同的编程语言是非常重要的。我用过Algol-60, Common Lisp, Scheme, Ada, C, C++, Java,和多种汇编语言。然而,也不能仅仅局限于程序语言,它仅仅是种表达算法和数据结构的工具——并且是种有缺陷的工具。一如Niklaus Wirth有句精辟见解:程序=算法+数据结构。 问:您认为计算机语言和人类的语言有什么区别?Alex:没有人尝试过用计算机语言写出诗歌来。计算机语言发展到能允许我们解决一些真正美好的现实生活中的东西,还有很长的路要走。STL和OO
 追根溯源,STL起源于什么?意大利记者的提问对我们将有所帮助。问:STL一开始被设想为今天这个样子吗?即所谓的C++标准库,或者,它是从别的什么项目来的?告诉我们一些关于STL的历史好吗? 答: 1976年,又要说回到苏联了,我因为吃生鱼片得了严重的食物中毒而住院,在精神恍惚中,我忽然意识到并发的加法计算能力是基于加法是结合性的[译注:我对这句 话的理解是:比如说a + b + c = a + ( b + c) = ( a + b) + c]。(因此,STL可以说是细菌传染的结果J)同时,我意识到并发的减法运算是和半群结构类型有关联的,这就是最基本的重点:算法是定义于代数结构基础之上的。我又花了一些年头,意识到必须在正规公理上加入复杂性必要条件以扩展结构的概念,接着又花了15年之久才完成全面的架构。(我直到现在都不能确定我是否成功地让我朋友小圈子之外的任何人理解了这一点)。我相信迭代器理论是计算科学的中心就象环或Banach区间理论是数学的中心一样。每次当我找到一个算法时,我都要努力去寻求它所定义的结构基础。我想做的就是泛化地描述算法,并乐此不疲。我可以花一个月时间去精确地描述一个众所周知的算法的泛化表示。迄今为止,在向人们解释我这种行为的重要性方面,我是异乎寻常的失败。然而,不知何故,这种行为的结果─STL却是如此成功。关于STL还有很多故事:STL如何成为C++标准的呢?Stepanov先生有下面的表述,表述中也有他对C++之父Bjarne Stroustrup先生的精彩描述。问:有一件事情我一直都很惊奇—C++标准委员会那么快就采纳了STL。我的意思是,这些委员会可都是以谨慎和保守而出名的。这一点,你怎么解释?答:Bjarne Stroustrup的支持是至关重要的。如果说Bjarne想要什么东西的话,那就是他真的想把STL弄到标准里,他办到了。他象骡子一样固执。甚至逼着我去改STL——我从来都不会为第二个人这么做——我也是个顽固分子。但他是我所认识的最有主见的人,他花了一些时间去理解STL是干啥的,当他理解之后,他决定使其成功地被大家接受。他对STL的贡献还在于他支持“不止一种编程方法是‘合理的’”的观点——这对立于十来年认同“唯一”方法的无休止的争执和夸大——而坚持把弹性、效率、重载、类型安全结合在模板里以致于STL成为可能。我很乐意明白地声明Bjarne是我这一代人里卓越的语言设计家。问:您是由于什么原因而发明了STL?发明的过程是什么样子的?它对您的生活和研究有什么影响吗?Alex:STL的发明源于我多年对程序灵活性和参数化探索的结果。我对此仍不太满意:因为C++语言上的一些缺憾,使得我不能完全表达我要表达的意思。STL应当做将来要设计的库的草稿。我不知道在我有生之年是否能看得到,但我坚信最终会有一个关于算法和数据结构的标准架构,说不定作为读者的你就是这一发明人呢!我觉得很难形容STL对我生活和研究的影响。STL并未从本质上改变我的生活,因为我没有通过它赚到任何钱。我想向我的几个朋友展示一下正确的编程方法,而 STL正是为他们而做的。事实上将这项工作完成带给我很多快乐,当我听说它帮助某人解决了问题时,我更加快乐。当然也有人说如果让他们设计他们可以设计出更好的东西来,也有人对STL嗤之以鼻。这些攻击也确实伤害到我。和STL形成对照的是OO——面向对象编程。OO的思想困绕着许多程序员,OO的思想一直困绕着我,从未有人对OO表达过如此强烈的想法——除了Stepanov先生。我想:作为一个程序员,这种东东一定是要掌握的,但是……,请看下面Stepanov先生的观点: 问: 您对面向对象是怎样理解的?它是不是一种好的可接受的编程思考方式?有没有学习OO必须的有用的工具?Alex:我尽量避免用OO思考问题,我对他们编程的方法不感冒。在对意大利的一家期刊采访时我曾说过:“我发现 OOP在技术上是有问题的,它妄图用基于单一类型的不同接口来分解世界,为了处理不同的实际问题,你需要不同种类的代数方法以横跨不同类型的接口族;我发现OOP在思想上是不健全的,它声称一切都是一个对象。即使真的是这样这也没什么意思─说一切都是对象跟什么都没说一样;我发现OOP的方法论是错误的,它从类开始。就好像数学要从公理开始一样。你不是从公理开始─你是从证明开始。直到你找到了一大堆相关证据你才能归纳出公理,以公理结束。编程上存在着同样的事实:你要从有趣的算法开始。只有很好地理解了算法,你才有可能提出合理的接口以让其他组件共同工作。”我再重复强调一点:程序是描述算法和数据结构的,而不是描述继承性和多态。

STL之父Alex Stepanov亚历山大·斯特潘诺夫相关推荐

  1. STL之父Alexander Stepanov访谈录

    http://hi.baidu.com/barrypp/item/10c580df7e1c454fdcf9beca STL之父Alexander Stepanov访谈录 翻译者 : myan 出处:  ...

  2. 【转】STL之父访谈录

    转自:http://www.jr163.org/cup2/9/9597.htm STL之父访谈录 STL之父访谈录 1995年3月,Dr.Dobb's Journal特约记者, 著名技术书籍作家Al ...

  3. 计算机科学家蒂姆,“万维网之父”蒂姆·伯纳斯·李的科学家精神

    摘要: 科学家精神不是经典科学哲学研究的问题,但其属于广义的科学哲学研究的范围.由于近年来对科学.技术与社会(STS)这一领域的研究十分活跃,因而探讨科学家精神就有其必要性.本文在总结国内外研究成果的 ...

  4. 柯尔莫可洛夫-斯米洛夫检验(Kolmogorov–Smirnov test,K-S test)

    柯尔莫哥洛夫-斯米尔诺夫检验(Колмогоров-Смирнов检验)基于累计分布函数,用以检验两个经验分布是否不同或一个经验分布与另一个理想分布是否不同. 在进行cumulative probab ...

  5. 人工智能之父马文・明斯基

    (说明:本文原载2016年第六期<财新周刊>) 1. 1月底,"人工智能"领域发生了两件大事. 第一件是1月24日,学科创始人之一的马文・明斯基(Marvin Mins ...

  6. java合并果子_C++(STL)树-堆结构练习——合并果子之哈夫曼树

    priority_queue 对于基本类型的使用方法相对简单. 他的模板声明带有三个参数,priority_queue Type 为数据类型, Container 为保存数据的容器,Functiona ...

  7. C++核心准则边译边学-P.9 不要浪费时间和空间

    P.9: Don't waste time or space(不要浪费时间和空间) Reason(原因) This is C++. 我们在用C++. 译者注:之所以选择C++而不是其他语言,就是希望使 ...

  8. qt4的quick程序升级到qt5_最新8月书单出炉!送给你程序员

    8月好书赏不停,喜欢的就收藏一下. 1.计算广告:互联网商业变现的市场与技术(第2版) 作者:刘鹏.王超 全球第一本全面讲解计算广告与互联网变现秘密的专业图书升级版 @北冥乘海生 刘鹏老师力作:众多互 ...

  9. 推荐国外经典计算机教材9本

    国外经典计算机教材9本推荐给你,其中前两本刚刚上架.你读过哪些经典教材欢迎一起来分享. 最新上架: 1.C++程序设计(第3版) 作者:[美]瑞克·莫瑟(Rick Mercer) 译者:凌杰 合没有编 ...

最新文章

  1. linux 增量备份镜像,【备份与恢复】合并增量备份与映像副本
  2. STM32开发 -- base64详解
  3. 完美解决ALEXA工具条无法显示或显示白框
  4. 2019 DDCTF 部分writeup
  5. 字体感觉小了 引入的vant_动态字体海报如何设计与制作?
  6. python中key_python属性和key的区别?
  7. 一本名不符实的.NET书籍: Game Engine Toolset Development
  8. 论文笔记_S2D.61_2019-CVPR-DeepLiDAR:基于稀疏激光雷达数据和单张彩色图像的户外场景的表面法线引导的深度预测
  9. windows 2008服务器还原系统,windows 2008服务器系统
  10. 近来接连换了U盘、剃须刀,京东服务确实好
  11. PCB原理图绘制(1)——工程文件的建立
  12. HDU 1097 JAVA
  13. UGUI实现图片特效轮播,使用插件DOTWEEN
  14. 剽悍一只猫---新书分享
  15. 【深度学习】保姆级教程:个人深度学习工作站配置指南
  16. 【APICloud系列|34】上架华为应用市场缺少免责函?
  17. 我在阿里做数据分析师,一位阿里数据分析师的日常
  18. mongodb 复制集部署(主从升级版)
  19. 【转载】浅析金庸武侠小说中的哲理意蕴
  20. 海子 java,我把海子读给你听(二)

热门文章

  1. 设计模式 by Python1:策略模式
  2. 基于WSL2和Clion搭建Win下C开发环境
  3. centos yum的配置文件 repo文件详解
  4. Android 实现在文字末尾添加图片
  5. android 7.0 sdk jar jack,Jack 服务编译问题 Android 7.0
  6. 如何选择香港虚拟主机
  7. 零基础python自动化办公系统_python自动化办公?学这些就够用了
  8. 【VIO】第2讲 基于优化的IMU
  9. 毕业生大礼包之论文查重
  10. html中的宫格怎么做?常用于商品展示等