`
阿尔萨斯
  • 浏览: 4165143 次
社区版块
存档分类
最新评论

【Scott Meyers】C++5×5断想之四:C++历史上最重要人物

 
阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>

原文地址:http://www.artima.com/cppsource/top_cpp_people.html。译文发表于《程序员》2007.2。

作者介绍

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_s1031" style="MARGIN-TOP: 8.35pt; Z-INDEX: 6; LEFT: 0px; MARGIN-LEFT: 0px; WIDTH: 75pt; POSITION: absolute; HEIGHT: 99pt; TEXT-ALIGN: left; mso-wrap-edited: f" wrapcoords="-216 0 -216 21436 21600 21436 21600 0 -216 0" type="#_x0000_t75"><font size="6"><imagedata o:title="scottMeyers" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/01/clip_image001.jpg"></imagedata><wrap type="tight"></wrap></font></shape>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++工作的时间晚,因为任何成果在产生影响力前都需要一个周期)的时间为序。在此,我仍然限制为五个名额,没有并列,也没有荣誉奖。因为我这是品活人而不是评静物,难度很大啊。规矩就是规矩,我必须要坚持。

<shape id="_x0000_s1026" style="MARGIN-TOP: 7.8pt; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 0px; WIDTH: 75pt; POSITION: absolute; HEIGHT: 94.5pt; TEXT-ALIGN: left; mso-wrap-edited: f" wrapcoords="-216 0 -216 21429 21600 21429 21600 0 -216 0" type="#_x0000_t75"><imagedata o:title="bjarne" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/01/clip_image002.jpg"></imagedata><wrap type="tight"></wrap></shape>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++领域里还有谁比发明、最初实现,然后又引导它融入现代软件开发的人更为重要。

<shape id="_x0000_s1027" style="MARGIN-TOP: 7.8pt; Z-INDEX: 2; LEFT: 0px; MARGIN-LEFT: 0px; WIDTH: 75pt; POSITION: absolute; HEIGHT: 101.25pt; TEXT-ALIGN: left; mso-wrap-edited: f" wrapcoords="-216 0 -216 21440 21600 21440 21600 0 -216 0" type="#_x0000_t75"><font face="Times New Roman"><imagedata o:title="ark" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/01/clip_image003.jpg"></imagedata><wrap type="tight"></wrap></font></shape>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

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

<shape id="_x0000_s1028" style="MARGIN-TOP: 7.8pt; Z-INDEX: 3; LEFT: 0px; MARGIN-LEFT: 0px; WIDTH: 75pt; POSITION: absolute; HEIGHT: 99pt; TEXT-ALIGN: left; mso-wrap-edited: f" wrapcoords="-216 0 -216 21436 21600 21436 21600 0 -216 0" type="#_x0000_t75"><font face="Times New Roman"><imagedata o:title="scottMeyers" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/01/clip_image001.jpg"></imagedata><wrap type="tight"></wrap></font></shape>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),可以在页面里搜索我的名字)。

<shape id="_x0000_s1029" style="MARGIN-TOP: 7.95pt; Z-INDEX: 4; LEFT: 0px; MARGIN-LEFT: 0px; WIDTH: 75pt; POSITION: absolute; HEIGHT: 101.25pt; TEXT-ALIGN: left; mso-wrap-edited: f" wrapcoords="-216 0 -216 21440 21600 21440 21600 0 -216 0" type="#_x0000_t75"><font face="Times New Roman"><imagedata o:title="herbSutter" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/01/clip_image004.jpg"></imagedata><wrap type="tight"></wrap></font></shape>Herb Sutterhttp://www.gotw.ca/),1997年至今。Sutter走上C++舞台不过10年时间,但其活跃程度几乎让人瞠目结舌。最早是自撰三本图书,和人合著一本。他发表过200多篇文章(绝大部分是独立作者,少量合作),特别让人吃惊的是,他同时是三个专栏的长期作者或合作者[注释3]。我也记不清他为C++标准化委员会提交过多少建议和其他文件了——我好像提到过他是该委员会吧?他还是《C++ Report》前任首席编辑,在各种会议和技术大会上做报告,他一直是我知道的对C++最具热情的鼓手。同时,面对性能敏感应用支持的日益紧迫,他还在多线程领域首倡抽象再构造,并为此寻找新方法——可能就是C++语言和库的未来扩展方向——以让开发者更加容易编写多线程代码。[注释4]

<shape id="_x0000_s1030" style="MARGIN-TOP: 7.8pt; Z-INDEX: 5; LEFT: 0px; MARGIN-LEFT: 0px; WIDTH: 75pt; POSITION: absolute; HEIGHT: 101.25pt; TEXT-ALIGN: left; mso-wrap-edited: f" wrapcoords="-216 0 -216 21440 21600 21440 21600 0 -216 0" type="#_x0000_t75"><font face="Times New Roman"><imagedata o:title="andrei" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/01/clip_image005.jpg"></imagedata><wrap type="tight"></wrap></font></shape>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的名字空间内搜索操作符“”的实现。像这样的操作符函数,如果在被它操作的类型的名字空间内也有定义,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)。




分享到:
评论

相关推荐

    Scott Meyers_Effective C++

    Effective C++是世界顶级C++大师Scott Meyers的成名之作,初版于1991年。在国际上,这本书所引起的反响之大,波及整个计算机技术出版领域,余音至今未绝。几乎在所有C++书籍的推荐名单上,这部专著都会位于前三名。...

    Scott Meyers: Overview of the New C++ (C++0x)

    Scott Meyers关于C++11的ppt,英文

    Overview of the New C++ C++0x Scott Meyers

    Overview of the New C++ C++0x Scott Meyers

    Effective C++ 中文版] Scott Meyers 中文版&amp;第3版 pdf

    Effective C++ 中文版] Scott Meyers 中文版&amp;第3版 pdf

    Effective C++中文版 第三版 Scott Meyers

    Effective C++中文版 第三版 Scott Meyers

    Effective.STL(2001)].Scott.Meyers.文字版

    In this book, best-selling author Scott Meyers (Effective C++, and More Effective C++) reveals the critical rules of thumb employed by the experts – the things they almost always do or almost always...

    Effective Modern C++:改善C++11和C++14的42个具体做法(中文版 + 英文版)

    作者简介 作者:(美国)迈耶斯(Scott Meyers) 迈耶斯(Scott Meyers),二十多年来,Scott Meyers的Effective C++系列书籍(包括《Effective C++》《More Effective C++》和《Effective STL》)为C++编程语言...

    侯捷译Scott Meyers的 More Effecitve C++

    每个条款都在特定主题上精简摘要出C++ 程式设计社群所累积的智慧。大部份条款以准则的型式呈现,附随的说明则阐述这条准则为什么存在,如果不遵循会发生什么後果,以及什么情况下可以合理违反该准则。

    [Effective.C.中文版].(Scott.Meyers).(中文版&第3版).pdf.7z

    [Effective.C.中文版].(Scott.Meyers).(中文版&第3版)

    effective modern c++

    Learn how to program expertly with C++ with this practical book from Scott Meyers, one of the world's foremost authorities on this systems programming language. Scott Meyers takes some of the most ...

    More Effective C++.pdf

    广博如四库全书者有之(The C++ Programming Language、C++ Primer),深奥如重山复水者有之(The Annotated C++ Reference Manual, Inside the C++ Object Model),细说历史者有之(The Design and Evolution of ...

    Effective Modern C++ 原版pdf by Meyers

    If you’re an experienced C++ programmer and are anything like me, you initially approached C++11 thinking, “Yes, yes, I get it. It’s C++, only more so.” But as you learned more, you were surprised...

    推荐的C++书籍 4.3 Generic programming and the STL

    并且,Scott Meyers 在最近的Top5系列文章中,评价C++历史里面最重要5本书中、把Modern C++ Design列入其中,另外四本是它自己的effective c++、以及C++ Programming Language、甚至包括《设计模式》和《C++标准文档...

    Effective C++(中文版).pdf

    Effective C++是世界顶级C++大师Scott Meyers的成名之作,初版于1991年。在国际上,这本书所引起的反响之大,波及整个计算机技术出版领域,余音至今未绝。几乎在所有C++书籍的推荐名单上,这部专著都会位于前三名。...

    [Effective.C.中文版].(Scott.Meyers).(中文版&第3版)

    Effective C++是世界顶级C++大师Scott Meyers的成名之作,初版于1991年。在国际上,这本书所引起的反响之大,波及整个计算机技术出版领域,余音至今未绝。几乎在所有C++书籍的推荐名单上,这部专著都会位于前三名。...

    推荐的C++书籍 4.4 STL源码剖析

    并且,Scott Meyers 在最近的Top5系列文章中,评价C++历史里面最重要5本书中、把Modern C++ Design列入其中,另外四本是它自己的effective c++、以及C++ Programming Language、甚至包括《设计模式》和《C++标准文档...

    [Effective.C++].(Scott.Meyers).(中文版&第3版)

    [Effective.C++].(Scott.Meyers).(中文版&第3版),据网上好多人评论比谭浩强写的好

    More Effetive c++

    Scott Meyers 的Effective C++ 和More Effective C++ 是此类佼佼,Herb Sutter 的Exceptional C++ 则是後起之秀。 这类书籍的一个共通特色是轻薄短小,并且高密度地纳入作者浸淫於C++/OOP 领域多年而广泛的经 验。...

Global site tag (gtag.js) - Google Analytics