【51CTO.com独家特稿】采访嘉宾简介:Andrei Alexandrescu是新一代C++天才的代表人物,他创造力非凡,思维方式不循常理,剑走偏锋,却往往能收到奇效;善于在各种“标准”中游走,发现提升空间,有“庖丁解牛”之功力。其他身份:华尔街咨询师,摇滚乐队鼓手,古典吉他演奏家,罗马尼亚伞兵。
Andrei Alexandrescu日前接受了51CTO记者孙淑娟的专访,就C++当前的情况进行了广泛而深入的讨论,他号召C++程序员要保持乐观和信心,继续努力开发优秀的软件。在整个采访过程中,Andrei Alexandrescu给出了C++五大方面的看法。
前段时间,Linux之父对C++进行了炮轰,说它是糟糕程序员的垃圾语言,可谓是一石激起千层浪,引起众多程序员朋友的关注和讨论。51CTO网站还特别制作了专题“C++是垃圾语言?!”,博引国内外专家的正反观点。在我们51CTO网友投票结果中对“您认为Linux之父为什么要对C++进行炮轰呢?”的原因分析里,认为“Linux之父之前在C++编程上吃过大苦头”占到最多的37%的比例。我们就先以这一事件作为引子,请教C++的天才作家Andrei Alexandrescu先生对这一事件的的态度来开始我们的对话。
1、Linux之父犯不上炮轰C++ 因为他不必用C++
Andrie Alexandrescu先生首先肯定C++很好,希望程序员不要对它失去信心和乐观。因为Linux之父Linus Torvalds是天才级人物,擅长C语言,作为出色的程序员,可以和最高水平的团队一起工作,从他的技术能力角度来说,C++是不必要的,因为他使用C语言就可以做到他想做的所有事情。可是,这也有一个限制。因为对于不同的项目,不同水平的人会有不同的选择。在你做大项目时,需要和其他不同水平的人合作,那些C++相比C多出来的特征,如面向对象和模板,就变得很必要了。
另外,对于天才级的程序员,他都会钟爱于自己使用的工具,所以,我们可以理解他前面提到的那种对待C++的态度。
2、C++带给程序员的心智包袱是C语言这一负担带来的副作用
C++带来的对一个程序功能实现的多种可选择的处理方式,增加了程序员的心智负担方面,Andrei会给我们C++程序员那些好的建议呢?
Andrie Alexandrescu:因为C++是基于C语言的基础逐渐发展起来的,它的这一自身限制使它无法去除C语言的负担,不可能达到精致的设计,实现对每个问题有一个确定答案。确实是C++如果没有C语言的负担,就不会增加这么大的心智负担。比较幸运的是,C++拥有很强的惯用法,同时,在我们的社区存在大量成熟的经验可以供大家参考!C++的那些惯用法和C语言对等的功能相比起来,功能要强大,具有很强的抽象性和性能效力。一旦你掌握了这些惯用法,成为出色的程序员,肯定要比那些只会用C语言的程序员要更具有竞争力。其实,这也符合一个规律,当你实际上需要更多的特征时,就需要承担更多的东西。
另外,从我们的51CTO网友的投票结果来看,“您认为要不要学习C语言呢?”的结果中“当然要,C语言是入门必学的基础语言”的支持率是66%,可见C语言拥有良好的群众基础。
3、程序需求:高性能要求+强的抽象和建模能力=必选C++
C++目前处于一种被夹攻的态势,一方面在企业级系统开发(数据密集、业务规则复杂多变)中,C++已经基本被Java和C#等淘汰出局,另一方面在系统编程和嵌入式等更接近硬件的领域,又遭到C的强烈狙击。那么,Andrei Alexandrescu先生是如何看待C++与其他语言的比较呢?
Andrie Alexandrescu:C++相比于10年、20年之前,它的应用领域确实是狭窄了,这是事实。但是,如果在你的应用中,有两个需求同时发生,你就必须要考虑采用C++,第一是对性能的要求要高,还有一个是有很强的抽象和建模能力。这两种能力,很多语言只具备其中一个,比如C语言和Phyhon有性能,而Java和C#有很强的建模能力,还有Ruby、Leda等。但是,目前同时具有这两种能力的,只有C++。
在C++与其他语言的比较上,Andrei Alexandrescu先生给出了一个非常有趣的回答(这个比喻的讲解援引于另一个C++的著名作者Scott Douglas Meyers的说法)。让我们换种角度来看,哪种语言写出来的软件最挣钱?你可以看到世界上最挣钱的程序可能是微软的Office,这个程序是用C++写的。其次是微软的Windows,实际上也是用C++写的。而Java和.Net在企业级应用这块,只是为了把这些软件卖出去,所花的市场经费最多。而且,他认为用C++写出的软件最挣钱这件事上,在他所能预见到的未来不会发生变化。
4、C++Ox标准的出台可能还要等待一年时间
根据51CTO记者的了解,C++标准委员会主席Herb Sutter透露,C++0X的草案将很有可能在07年10月完成。可是现在快到年底了,仍然没有任何的消息。作者籍此机会向Andrei Alexandrescu先生了解C++标准委员会的工作进展情况。Andrei Alexandrescu先生表示一直在跟踪这一标准的制定。整个标准委员会也一直都在积极工作,因为很多人都会牵扯之中,很耗时。截至目前,所有主要、重要功能已经出来,标准肯定是一个往前推进当中,但是并不能承诺今年或者明年会出来。
看来,我们还是要耐心的等候一段时间了。
新的C++标准主要在四个方面对C++标准进行了扩充:
◆增强STL库,标准库TR1和TR2中的新组建,比如“正则表达式”
◆并发内存模型和并发库(面向多核处理器)
◆垃圾收集器
◆可简化的泛型程序的开发
在这些新制定的标准中,Andrei Alexandrescu对两个特征比较喜欢,一个是editor template里可变参数的模板,它是在参数后面打几个点,这样可以不必强调类型名。另一个是O2的关键字,它可以大大的简化代码,可以自己编译、推导,不需要程序员自己写很多的代码。这样大幅度提高了代码的可维护性,比如它不需要在很多地方强调类型的名字,只需要在一个地方放这个类型的签名,然后改动一个地方,其他地方就可以相应的改变。这有点类似于引进动态语言的特征。
另外,还有一个是概念的特征,现在标准委员会还没有确定是否可以进入标准。因为它可以使模拟实现脱离繁琐,当然希望它可以进入标准。但是相比较而言,它没有第一个特征提到的那个可变参数有用。
| 共2页: 1 [2] 下一页 | ||
|
|
· 让加密技术为Xen保驾护.. · 深入学习Make命令和Mak.. · 深入学习Make命令和Mak.. · 绿色IT请从规划做起 · RUP大讲堂(第三讲):.. · 设计模式之策略模式 |
· “轻松掌握WCF 帮你找.. · IT英雄系列访谈 赵劼:I.. · IT英雄系列访谈 崔新军.. · SQL语言艺术 · 求用C语言编写的 电话.. · windows核心编程 |
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||