




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C历史上最重要的软件C+55断想之三C+历史上最重要的软件文/ScottMeyers译/罗小平在本系列的第三篇文章里,我将把视线转移到评选过去最重要的c+十软件上来.用c+编写软件,你需要工具的帮助.在我看来,这些工具曾经是(将来也是)有关c+的最重要软件.可以想到,曾经出现了不少用c+开发的重磅软件.它们促使很多人为了以后项目的开发选择了这门语言,但我不关心这些.这门语言最重要的软件应该是软件开发人群使用的最基本的东西:编译器和库.可能,c+是更是为库编写而不是为应用开发所设计的一门语言.我选择的C+历史上最重要的五个软件如下,以诞生年份为序Cfront.AT&T的Bell实验窒开发
2、,1985-1993.Cfront是最早的C+编译器.它可是真正的编译器,不过生成的是C格式的目标码.因此将它认作C+到C代码的预处理器是很自然的.很难让人在调试时不做他想,因为至少在我1998年开始使用它时,仍然没有c+调试器.头发花白的前辈们当时使用c调试器,必须要对付那些让人精神崩溃的名字(比如.识别调试器里指向c+源代码中某个加法函数的pLtAft).事实上,Cfront生成C目标码有两个好处.第一,可以非常容易地将Cfront移植到新的平台,因为C编译器到处都是.这就促成了C+在各种环境里的快速传播.第二,使用者可以观察编译生成的代码,知道编译所做的工作.当大多数人还是c+新手的时候
3、,通过揭示其工作过程,有助于消除大家对c+的神秘感.它也扮演某种保护伞的角色.不用担心c+用黑纱蒙住你的眼睛,因为它所做的任何事情都清清楚楚摆在那里(至少和从前机器生成的C代码一样清楚).在1990年前,Cfront不仅是个编译器,而且也成了事实上的语言标准.c+诞生于AT&T,Cfront来自AT&T的C+小组,因此无论Cfront千什么,自然是不会错的.长期以来,其他厂商的编译器紧跟Cfront,以致Cfront的bug都被原样复带0.直爹U(AnnotatedC+ReferenceManua1)(ARM)发布,Cfront的标准色彩才逐渐消退.特别是大家认识到要为Cfro
4、nt加入异常处理机制需要付出巨大努力的时候.Cfront的最后版本发布于1993年,但阴魂不散.EdisonDesignGroup,一家专业生产最贴近c+标准的front-end编译器的商业公司,在2006年7月的文件里还指出它们的编译器兼容Cfront模式.我猜ilCfront仍然在一些不支持本地c十+编译器的嵌入式项目中发挥作用,当然仅仅是猜测.GCC.GNU工程的杰作,1987至今.很早就进入了C+商业领域,并且发布了第一个生成本地代码的编译器(相对Cfront的C+一C转换而言).多年以来,GNU编译器成了跨平台应用开发的不二选择.事实上.它是一个交叉编译器,这也使它在嵌入式系统开发领
5、域广受欢迎.GCC本身是一个支持多种frontend(包括C,c+11FORTRAN等)和针对各种平台的back-end工具的编译器平台,其C+版本就是广为人知的g+.g+的早期推动人是MiChaelTiemarm.我不由地回忆起自己曾经提交了一份g+的bug报告,很快就得到了Tiemann的回应.他提供了新的g+文法,并请我据此重建编译器,看看我报告的问题是否解决了.我记得问题依然存在,但一个编译器的作者特意送你一个修改补丁并请你安装试用,已经难能可贵了.顺便提及一下,Tiemann干1989年与人合伙创办了CygnusSupport,我相信Cygnus是历史上第一个提供免费软件的公司.据说
6、早期的时候,Tiemarm有时会躺在浴盆里召开Cygnus的会议.g+是开源的,这样c+社区就可免费获得与c+标准一致的front-end工具.但我从未听说哪个以g+代码为基础编写的开源工具(如Lint,重构工具等等)的解析能力能与g+比肩.有不少可以解析所有C+声明的工具(1:llgccxm1),但据我所知,没有哪个工具能同时解析声明和定义部分(特别是函数体).因此尽管我从未使用过这个工具,但我怀疑g+的front-end在是否完全开源上有所保留.这对于c+开发者来说是不幸的.因为尽管有很多工具可供使用.但其真正威力应该是解析0C+源代码的能力,这是一个难以逾越的障碍.VisualC十十.M
7、icrosoff出品,1992至今.VC十+是C+成功的最大推动力之一,也是延缓c+进步的最大障碍之一.尽管BjarncStroustrup断言没有人知道大多数c+开发者到底在干什么.,但我基本上不会怀疑如果我将这颗星球上所有c+开发者召集到一起.并要求他们为自13O-程序员一已他川的编译器投票.段总大多数人都会提硎Vct.仅就这点而,VcH已经井将继续埘C十产生重蜉景;响.而H.MicrosoflJ就舰产品(如操作系统,Office译)电党成要垌cu-编笃,井J=Hvc+t编弹这加雨丁Vc在c+世界的分僦.战公司对c+的倚碴促使它Jt发r很多具;IIAPI柬支持#应用.从而导致微多windo
8、ws开发人龇也使朋这语亩到了q0年代晚期.很多人(这L:l找震惊甚聚恐惧)将c十十叫做Microsoft语言.VC往(翎域r擗了统治地位.对l犬多数张序品而卣.Visua1c什就是CH.:幸的是(EMicrosofl的c+十实现咀,标准的觖必持续r徽多年.l998/-:前,避筛不上?个胚.嘲为帐本就存征nT以遵从的标准.其他鳊佯器J商】王足辞行其道然ifii,vc6干1998年发布.此时距c+标准完成已近?年.与同l奘产晶4rlL.VC6与c叶标准蔗得最远.然避侄当时仍然不是一个分严壅的题.嘲为很少有氍序员马f啦用c标准里的最新特性糟糕的足VC6一直维持到2002年(VC7发布).甚至VC7编
9、译器本身电没有太的政变在这些年里,对标准的点持.躺乖l都足以更新库(ISTI)的蟛式现.而我们楸多人都诧得多年就应该发市升级版本.2003年的VC7.1终1解决丁大部分标准兼容问题,但VC6叠VC71的年1.使用VC6的跨台卧蒋必须因其缺陷付出艰莆努力.垃媳的姚是通过条件编译【电就意味蕾代酽零乱)解决横板偏特化等M题.过.fI=;多开发者直到令_天仍在使用VC6.他们电得继续感谢VC6小组大范I弼忽视杯准鞭锌的决定.比如,新的椒奉在内存托时不抛出井常,而直接返回空指针.2003后.Vc币再存任我为相1严露的标准兼容性问胚,我桐情它现任的领导者作常囊m标准箍.然1m,我19985q2003这六柬
10、经常接触的魁【:作(量少就编程序而矗)小I无特55lJ碓的?【篮者,此我壬!I!气J.地决定将我对Microsoft的謦懒持剑2008年从他们发布一个蛳J的c+编惮器起的年TheStandaElTemplateLibrary.源自I_IP1993乍令.像c+这类悟亩的标准席戚恢提供一系qtll用容器和算法.这个法并会让人格外惊讶,fHIl便这样的怍一也可能上这个榜.rfijSTL耐c的贡献远IliOn此它引人了容器霸l算法的设计构.这样.仪仪通过迭代器交互就能炎税缝胁作.它示范丁如何用容器和迭代摊特代数组和指针此外,它告诉H1一如何扩胜架构,允许引入新的容器.算法和选代类型-g,f】町以像Sl
11、L自右组什那样和任f町符合STL杯准的组件一超工作所有这些都姒教牢为班现蟮础,考虑绕媳的面向对象,基于继承的解决囊.酊儿乎完垒依赖F楼板技l术.它迁为c抖引人了泛编程.这匕1)的努给我们带来r库和库椭架蹬汁思路【的转变.电满坦丁那些找便利的【|移机容器者的需求.我任EffecliveSTL)(AddisonWesley,2001)里譬刮.我已经编程三十年,找从未发观STL的比者.观已经超过丁30年.我J然没有发现.Boost类库.诞生于1999年.这项选择姒平骷点儿欺骗.为Boost实际L不足一个类臃.而是一个牧释人们因静种门的和想法世计现的?系列席的组织IN此.Boost库提供什幺功能以及/
12、dIlf,lJ提供功能匕似乎漫无臼的.然.Boost及其库对(竹产哏r蔗火量三u;l】这种彬响怔未来可能为明.TRI扣规定的14奥新功能(蜱II3个已经写入C%Ox苹案)里.有10个崃濒于Boost席他川者的l!i女.Boost们肜响井非偶然.它就足以充当那蝗f能最终被加入c+标准的库的吱验床和推动者为H的而刨止的TR1对Boost的蔼悦已经怔明了它的成功.斫TR2很可能乜纳Boost中更多助能./til果征Gtmgle中搜索c+libraries(?特lq).你会发现Boost排头条.这是否意咪黄.,kgl想到cH庳.就会想刮Boost呢?我想它至少l兑fiff了Boost与c+摩的关系是多
13、幺密切吧当前,软件1具已经成为c+成功的关键因素,但归根结底.任何美的糸西都要人来创造c什是如此.人类任何别的势动也是如此在篇系列文章里,拽将告际你我认为谁是最重要的人c什世界的巨人.注释:0所讲辨析.我柑的不忸倥是构建抽卑语法柑.还也括执行肫式幔板实州化.辞竹重毂函靛调甩午,也就是观包括辨析和语是舟析.不过恨c_.工具的成越.是语卫分析的姑果人们常常特选整十过杜叫做秆舯0c杜匡正如此虎太和轧杂.以王干无法分析太多数杜井日的仟岣0Unix语t是Java.我不如道AppLe语言应试是什幺它们屯referencewrappers.smanpointers.enhancedmmberlmlmerad
14、aptemi(memfn).hancedbindcrs(bind)generalizedFunctors(nation)typetraiRrandomnullbers,luplus,fixed-sizearrays和regularlxprlsskms.每个人都道巨人的力量.但戒俄名研完的老馨卸提醒我诅.尽管巨人们鄙力量趟辨.但在他们的i量漫长路上.蔓依靠的是艰辛努刁不正他们天生劬神巾.遣就蔗他们计仆后憔般身与奥棘匹斯山主串者(宙斯相他的仆L)斗争的原因我将犯判断c十_-世平皇是冉在川样甩单的问趣留培你们,如果有,那幺是谁置青兄是什幺扮浦昔奥还套选手的舟邑呢?ScottMeyers.C+顶级权威之一.为世界各地客户提供培训和咨询服务.发表有畅销的E
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上半年四川省教育化与大数据中心(四川省电化教育馆)招聘编外工作人员3人模拟试卷及答案详解(网校专用)
- 2025北京市海淀区中关村第一小学教育集团招聘模拟试卷及答案详解(夺冠系列)
- 2025辽宁中国地质科学院岩溶地质研究所招聘交流选调人员1人考前自测高频考点模拟试题及一套完整答案详解
- 2025年吉林松辽水利水电咨询有限责任公司公开招聘考前自测高频考点模拟试题及答案详解一套
- 茶艺师(中级)理论知识模拟试题(附答案)
- 2025福建南平绿发集团有限公司招聘及拟进入模拟试卷及答案详解(夺冠系列)
- 2025年宣城宁国市人民医院招聘医疗卫生人才15人模拟试卷带答案详解
- 2025年合肥市第一人民医院双凤院区招聘31人考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025年国家公务员法知识竞赛试题库及答案(159题)
- 2025年教师资格证考试(中学生物)生物学教学案例分析冲刺试卷
- 医务人员思政教育
- 2025年全国统一高考英语Ⅰ卷(含解析)
- 小儿过敏性紫癜护理常规
- 纪检干事考试题及答案
- 脑卒中中西医综合治疗
- 敬老院财务管理培训
- 胰源性糖尿病的护理
- 北京花园乡村建设导则
- 医学知识 鼻腔鼻窦内翻性RU头状瘤(SNIP)的影像诊断与鉴别诊断学习课件
- 日用百货、食品定点供货服务方案
- 《证券基础知识》课件
评论
0/150
提交评论