天天看点

c++历史上最重要的人物

C++断想:5x5系列之四 c++历史上最重要的人物   作者:Scott Meyers 2006.8.30   摘要: 在本文中,Scott Meyers向读者列举了他认为在C++发展历史中最重要的五个人物,并阐述了选择他们的理由。   在我的系列文章的前三篇中,我分别列举了c++历史上作出最重要贡献的图书,文献和软件: 1、最重要的c++图书 2、最重要的c++文献 3、最重要的c++软件 在该系列的第四篇中,我主要关注人物。   c++是一项技术,但在技术背后却隐藏着那些发明它,塑造它,推广它和使用它的人群。在本周,我将向大家介绍我认为的在c++发展史中最重要的五位大师。   我所列举的人物都享有很高的公众知名度。其原因有两个。首先,这些先驱("front men")(Scott Meyers特别在这里提出,front men中的men是名副其实,因为列举的所有人物都是男性,他对此感到很抱歉。其实在c++的发展过程中,许多女性也同样扮演了不可忽视的角色,大概是限于列举人数的关系,作者无法顾全,才在这里对女性没有入选做了一个玩笑性的特别说明)的工作直接影响了许多人,因此他们就变得曝光率很高。你能对越多的人产生影响,你往往就变得越重要。事情就是这样。 第二个在列人物成为公众人物的原因,就像我在我前面几篇系列文章中说到的,我的观察点主要是集中在表面。也许有人已经或者曾经对c++产生了重大的影响,但是我从来没有注意到他们。也许Stroupstrup仅仅是一个台面人物,而真正在他背后从事或正在从事技术工作的另有其人。也许c++标准化协会的成就仅仅是从某个不愿意抛头露面的小技术精英团体那里克隆过来的。如果事情真的是这样的话,那么那些表面背后的人是伟大的,只是因为我未曾听说他们,所以他们没能被列举出来罢了。 在我对我列出的每个人物进行分析的时候,我认识到: (1)、该人物已经为c++工作了很长的时间,并且 (2)、该人物目前还在从事c++方面的工作。 许多人也曾经是非常重要的,但是最重要的人物一定要曾经坚持长期从事该研究,并能持续地做出贡献,直至今日。 需要说明的是,在我所列的最重要的c++人物的名单中,人物列举的顺序是按照他们每个人发表c++重要文献的时间排列的,所谓文献,是指比新闻稿更正规的形式发表的出版物。(这些人物发表文献的时间往往是在他们开始研究c++很长一段时间以后,因为一个人要想充分了解一种思想,并形成值得众人借鉴的结论,往往需要一个很长的过程。)就像我在以前的系列中所做的一样,我把我自己也列在了五个人当中,这样做不是有什么情结,也不是为了炫耀我的荣誉。因为我在这里列举的是活生生的人而不是没有生命的物体,所以在斟酌名单的时候我觉得非常为难。但是我最后还是决定按照评判客观事物的尺度来选择我的名单,因为规则就是规则。   Bjarne Stroustrup.1985 年。   好吧 , 这么评价他吧 , 是他发明了 c++ 这种语言 , 是他写了第一个 c++ 编译器 , 他出版了大量的 c++ 专著 ( 祥 见其著作列表 http://www.research.att.com/~bs/papers.html ) 。他曾经活跃在c++语言的推广和标准化活动中,时至今日,他仍然在这些方面辛勤工作。(比如,近来他关于SELLs的论文http://lcsd05.cs.tamu.edu/papers/stroustrup.pdf和STAPL research project http://parasol.tamu.edu/groups/rwergergroup/research/stapl/ 是该项目的合作者)。在获得了一个发明家所能获得的一切荣誉和头衔以后,他本可以退休在家颐养天年,可是他却选择了继续在c++社群工作,并30年如一日地把如今的c++(最初c++被称作 “ 带有类的c语言 “ ) 奉献到众人面前。尽管在我做的这一系列的文章中并没有按个人的贡献大小对人物进行排序,但是我想,在c++领域估计没有人会比Bjarne Stroustrup更重要,因为是他发明了这种语言,第一个实现了这个语言,并且直到今天还是软件开发力量中导师级别的人物。   Andrew Koenig.1988年。 Andrew Koenig是唯一一个在列的人员中未曾独立发表过跟c++有关的专著文献就被列举的人物。无论如何,我都愿意把它归于一个低调的 “ 局内人 “ 。但是他的著作目录却往往掩饰了这一事实。他写了两本关于c++的书,但是他只是与Barbara Moo合写的。他还写了一本关于c的书(但是这本书并不是出于c++的目的而写的,即便如此......)他还是几个杂志的专栏作家(他的个人主页里有他专栏的连接http://www.acceleratedcpp.com/authors/koenig/) 与此同时,真正让我吃惊的是Koenig使一个被别人提及频率非常高的人,特别是在和标准化工作相关的领域。例如,是他认识到了STL的重要性,并且指导Alexander Stepanov将其标准化,当时这些工作还没有显示出象今天这样的重要性,因此还未被人考虑和关注。 我无法统计我多少次从那些标准化协会的会员那里听到或者读到这样的话: “ 好吧,我们也这样考虑过,但是那是Andrew指出...... “ 或者 “ 这的确是由问题,不过那时Andy建议...... “ ,实际上,Koenig,就我目前所知,是唯一一个能够用他的名字来命c++语言特性的人。在标准化的过程中,曾经发现与namespace相关的命名查找法则在写成下面的形式,编译的时候会失败, std::cout << someObject; Koenig提出了一个修改法则的建议,修改后的法则很快地被命名为 “ Koenig查找。 “ 在c++标准中,这条法则被官方称为 “ 参数相关查找 “ (argument-dependent lookup,对于广大爱好者来说大家比较喜欢叫它ADL).在c++标准的章节中对该法则还有一个描述(3.4.2章节,如果你知道的话)作了一个标注: “ [basic.lookup.koenig]。"   Scott Meyers,1991年。   正如我在写这段的时候的反应一样,写自己为什么自认为能够成为最重要的人物之一的时候,你肯定想象不到我自己抖得多厉害。不过,我已经尽我最大的努力做到客观公正。有一大堆确凿的证据证明了我确实在 c++的世界里留下了我的印记,可能这个印记是伤疤也说不定,哈哈。我也写了3到6本关于c++的专著(具体是几本取决于是否将书的再版算作一本新书。我妻子认为不能算,或者有的人认为应该算。),这些书包括的范围非常广泛。并且我也写了大约50个c++专栏和专题以及应用程序,这些年来,我还在许多会议,培训上作了不少的演讲,为数以千计的开发者指点迷津。许多我出版的 “ 建议 “ 已经成为了被广泛承认的 “ 编程智慧 “ ,用以衡量一个c++程序是否是足够的 “ 好 “ 。 许多lint-like工具商都支持我的 “ 建议 “ ,并把我写代码的风格作为他们的判断标准。 我目前甚至还在c++标准化过程中扮演一个小角色,恩,在公众中制造错误的角色。根据我的理解,至少有两种不同的标准化方法已经引起了争论,人们会说: “ 这个问题我们需要注意,因为甚至连Scott Meyers都搞不定它。 “ (比如:看看加载智能指针给TR1的问题,看看能不能找到我的名字。http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1450.html)   Herb Sutter,1997年。   Sutter进入c++舞台10年了,连 “ 多产 “ 这个词很难能够形容他活动的范围。在写了三本书以及与别人合写了一本书以后,他又独自或与别人合作陆续发表了200个专栏和文章(大多数都是他自己完成的)。不知你的大脑是否能接受他多产的事实,他同时是三个专栏的独家或合作作家。我都不能想象他给c++标准委员会提交了多少方法和文档,但是好像我还没有告诉你他是c++标准委员会的会长吧?他也是前任《C++ REPORT〉〉的主编,一个经常在相关会议和活动上发表言论的人,也是一个我所认识的对c++持续保持激情的人。目前,他正就多线程编程将造成应用程序性能危机的问题发动一场空前的大讨论,并且他也在尝试解决危机的新途径 —— 也许这就是未来的c++语言和扩展库呢? —— 令开发者能够更容易地使用多线程编程。   Andrei Alexandrescu,1998年。   在他的书《MORDEN C++ DESIGN》出版以后,人们对模板的思考引发了一场革命。从此,Andrei Alexandrescu的名字就和模板紧密地联系在了一起。在某些领域内,他的名字和模板拥有相同的意义,不过那也许不是什么幸运的事情。他对c++的贡献可远不止提供了使用尖括号的有趣新用法那么简单。(尽管,目前,就我所知,他是第一个演示模板化参数形成有效模板的人,例如,模板化参数形成模板。) 即使不算他与Herb Sutter(《C++ Coding Standards》, Addison-Wesley, 2005)合写的书,纵观他出版的40篇以上的文章,足以显示他在对象复制,alignment constraint enforcement,多线程编程,异常-安全,和搜索等方面的杰出贡献。从他的眼光考虑,总是试图找到提高所谓 “ 标准 “ 做法性能的方法。如果让我花钱买书看的话,我想过去几年唯一让我值得持续关注的就是Alexandrescu的作品。许多别的作家(包括我自己)只不过是在已经很肥沃的农田里周期性地探索并宣布他们找到了新的麦穗,但是Alexandrescu却以惊人的频率开垦着新的农田,并在上面彻底地耕作。   好了,我现在已经列举了在c++语言历史中的五位最重量级的人物以及相关的图书,文献,软件。我注意到,在我的文章系列的一开始就带有先天的主观因素。不过在本系列的最后一篇文章里,我将彻底超越主观的界限,直接转到个人感受。下周,我将写出我关于c++的五个最重要的 “ Aha! “ 时刻 —— 当我突然触碰倒某些东西,通过对c++语言的工作原理,应用的理解而达到了新的层次的五个瞬间!    

继续阅读