C++历史上最重要人物

2007-03-12 | [转]C++历史上最重要人物

标签: 搜索  名单  图书  名字  模版 

作者介绍Scott MeyersC++顶级权威之一,为世界各地客户提供培训和咨询服务。发表有畅销的Effective C++系列图书(《Effective C++》、《More Effective C++》和《Effective STL》),设计了创新型的Effective C++ CDAddison WesleyEffective Software Development Series顾问编辑,The C++ Source (http://www.artima.com/cppsource/)咨询板块专家。布朗大学计算机科学博士,他的网站是www.aristeia.com 

 

C++是一门技术,而其背后支持它的是人——这些人发明、完善、繁荣和应用技术。本周,我将介绍我心目中最重要的五位C++大师。

本周名单上的这些人都拥有巨大的公众影响力。这些“公众人物”(抱歉,都是男性,不过我也没办法)能对很多人产生直接影响。受你影响的人越多,你自然就越重要。

不过,在系列的开篇文章里我也提到过,我是一个C++局外人。可能还有一些在台前幕后对C++产生了重要影响的人物不为我知。Stroustrup或许只是为众多技术工作者代言,标准委员也可能是替代一些不愿抛头露面团体做前台表演。如果是这样,那他们还真的达到目的了:我不知道他们。当然也就不会出现在我的名单上。

另外,我对入选者还有两点要求:(1)应该长期从事C++工作;(2)现在仍在为C++工作。重要的人很多,但最重要的人应该是长期而持续为C++做出贡献,并且直到现在仍在努力。

好了,现在公布我的名单,以较之新闻组文章更正式发表物(当然,这肯定比他们实际开始C++工作的时间晚,因为任何成果在产生影响力前都需要一个周期)的时间为序。在此,我仍然限制为五个名额,没有并列,也没有荣誉奖。因为我这是品活人而不是评静物,难度很大啊。规矩就是规矩,我必须要坚持。

 

Bjarne Stroustruphttp://www.research.att.com/~bs/homepage.html),1985年至今。嗯,怎么说呢,他是C++发明人,并编写了第一个编译器,还撰写了大量文章和图书(参见http://www.research.att.com/~bs/papers.html),积极参与C++的普及与标准化工作,并且一直持续到今天(如最近的SELLshttp://lcsd05.cs.tamu.edu/papers/stroustrup.pdf)和STAPLhttp://parasol.tamu.edu/groups/rwergergroup/research/stapl/,合作者)研究项目)。本来,Stroustrup很多年前就可以退休了,躺在无数的赞誉声里懒洋洋地晒太阳。但他却选择了继续他30年前就开始的研究工作,这是对现代C++(最开始叫“C with Classes”)发展的巨大贡献。尽管我无意评比名单入选人孰轻孰重,但很难想象C++领域里还有谁比发明、最初实现,然后又引导它融入现代软件开发的人更为重要。

 

Andrew Koenighttp://www.acceleratedcpp.com/authors/koenig/),1988年至今。Andrew Koenig应该是绝无仅有、即便没有撰写任何C++文章和图书也能进入这个名单的人。他是一位真正的C++内部权威,这一点因其写作历史而少为人知。他撰写过两本C++图书(与Barbara Moo合作。译者注:MooKoenig夫人)、一本C图书(我没打算用这个为他在C++上加分,但即使这样,他仍然……)和大量专栏文章(可参看其主页上的介绍)。

不过,Koenig最让我感到吃惊的是别人对他的提及率,特别是在C++标准化方面。他一直是引导公众认识STL重要性的践行者,并带领Alexander Stepanov(译者注:原Compaq首席科学家,现Adobe首席科学家,STL之父)将STL引入C++标准。

我已经记不清多少次听到或读到标准化委员会成员类似这样的话了:“我们也在考虑这个问题,但Andrew指出……”,“那的确是个问题,不过Andrew建议……”。事实上据我所知,Koenig是唯一被以其名字命名C++语言特性的人——在标准化工作中,人们发现命名空间相关的名字搜索规范有时会导致编译失败,比如:

 

std::cout << someObject;

 

Koenig对此提出了修改意见,这就是后来的“Koenig lookup[注释1]。在标准中,此规范的官方名称是ADLargument-dependent lookup),但《Standard》对其的详细描述,则是“[basic.lookup.koenig]”(如果你一定要知道出处,那我告诉你,3.4.2小节)。

 

Scott Meyershttp://www.aristeia.com/),1991年至今。同样,我必须拿出真凭实据说明我的重要性,而不是靠主观臆断。我会尽量保持客观,用大量事实证明我在C++世界留下了自己的印记——或许是一个伤痕。我写过3本书(像我妻子那样不算再版,如果算上再版,就是6本),发行量都很大。我还撰写过近50篇有关C++及其应用的专栏文章,并且这些年来,我还在不少会议和开发者大会上做过报告。我公布的很多技术规范也成了C++最佳编程实践的一部分[注释2],不少厂商提供的“lint-likeC++检测工具都支持我的规范,它们常常将我的规范作为指导意见。

显然,我在C++标准工作中也扮演了一个小角色。嗯,别误会(译者注:他并没有正式从事C++标准工作,具体可见http://blog.csdn.net/lxpbuaa/archive/2006/11/09/1375988.aspx中他对自己的说明),我的意思是至少有两份标准建议稿,都受到我的影响:“我们还需要进一步讨论这个问题,因为即便Scott Meyers也还没弄明白”(如TR1中有关增加智能指针的建议部分http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1450.html),可以在页面里搜索我的名字)。

 

Herb Sutterhttp://www.gotw.ca/),1997年至今。Sutter走上C++舞台不过10年时间,但其活跃程度几乎让人瞠目结舌。最早是自撰三本图书,和人合著一本。他发表过200多篇文章(绝大部分是独立作者,少量合作),特别让人吃惊的是,他同时是三个专栏的长期作者或合作者[注释3]。我也记不清他为C++标准化委员会提交过多少建议和其他文件了——我好像提到过他是该委员会主席吧?他还是《C++ Report》前任首席编辑,在各种会议和技术大会上做报告,他一直是我知道的对C++最具热情的鼓手。同时,面对性能敏感应用支持的日益紧迫,他还在多线程领域首倡抽象再构造,并为此寻找新方法——可能就是C++语言和库的未来扩展方向——以让开发者更加容易编写多线程代码。[注释4]

 

Andrei Alexandrescuhttp://erdani.org/),1998年至今。是他的《Modern C++ Design》(http://www.artima.com/cppsource/top_cpp_books.html#mcppd)促成了我们模版思想的巨变,从此,Alexandrescu的名字也就和模版紧紧相连。甚至在一些场合下,他的名字就是模版的代名词,但这对他是不公平的。他对C++的贡献,远远不仅仅是尖括号的新用法(尽管就我所知,他是第一个描述“template template parameters”——即将模版作为参数在模版编程中使用——用法之第一人)。

即便抛开与Herb Sutter合著的《C++ Coding Standards》(Addison-Wesley, 2005),他发表的40多篇文章http://erdani.org/publications/main.html)也充分展示了他在对象拷贝(object copying)、对齐约束(alignment constraint)、多线程编程、异常安全和搜索等领域的巨大贡献;他常常将性能提升看得比符合标准更为重要。以我看来,近几年来工作值得我们一直关注的,仅此Alexandrescu。绝大多数其他写作者和报告人(包括我)时常会奔回收割过的田野一遍遍巡视,以期捡到遗留的麦穗,而Alexandrescu却以其无人望其项背的速度,不断开荒,还在里面种上了新的庄稼[注释5] 

 

截至目前,我已经开出了C++历史上最重要的图书、文献、软件和人物名单。这些名单相对来说是比较客观的,但在此系列的最后一篇文章里,我想抛开客观,完全表达下自己的主观想法。下次,我将列出C++最重要的五个历史时刻——五个突然来临后,我对C++语言、工作方式及其应用的认识达到新高度的时刻。

 

注释:

1.简单来说,Koenig lookup指的是:如果函数的参数类型定义在名字空间内,那么函数被调用时,首先应该在此名字空间内搜索被调用函数,然后再是其他地方。比如调用“std::cout << someObject”,应该首先在定义someObject的名字空间内搜索操作符“<<”的实现。像<<这样的操作符函数,如果在被它操作的类型的名字空间内也有定义,Koenig lookup就发挥作用了。

2.我这些年公布的大多数规范都已经成为C++社区的“基本常识”。我的主要贡献不是去自己发明发现这些规范,而是普及之。

3.如果你像我一样,也作过专栏作家,那么你就能更容易理解其工作量之浩繁。我已经很难做到一年六次跟踪那些值得阅读的东西,而Sutter众所周知是每月三次。

4.他还是MicrosoftC++/CLI首席架构师。将这点放在注释里说明,是因为我认为C++/CLIC++的一个分支语言,而不是C++本身的一部分。直到现在,我仍然搞不清他哪来那么多时间同时开展这么多工作。

5.当然这并不是说所有他写的和提到的东西都是他首创的。尤其是他2001年开始读博士后,也常常会将学术上的研究成果传播到C++社区,例如无锁编程lock-free programming)(http://erdani.org/publications/cuj-2004-10.pdf)。

阅读更多
换一批

c++断想:5x5系列之四 c++历史上重要人物 中文翻译

01-18

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

没有更多推荐了,返回首页