您的位置: 首页 >> 新闻中心 >> 计算机 >> 软件开发
技术博客掀起“语言大战”。
精英教育阅读提示:显而易见,在C++这种语言上,人们投入了大量精力、撰写了大量图书和文章来关注它的语言细节,却对在真实环境下使用它解决问题的最佳实践重视不足。如果这还不够糟糕的话,不妨再看看C++在项目层面上的最佳实践——几乎没有任何成文的资料存在。当敏捷实践对于Java、.NET、Ruby等等社区的开发者逐渐成为常识时,C++程序员们还要花大把时间去学习摸索如何写一个好的makefile、如何组织自己的项目目录结构,更不用说持续集成和测试驱动开发了。
■ 最新课程推荐更多课程>>
学校培训课程开课时间上课地点精英价报名
正辰培训 微软软件测试工程师电话预约西直门教学区¥4704
新 科 海 软件测试工程师就业班电话预约海淀长远天地¥6280
北师大IT 软件工程与测试实战班电话预约北京师范大学¥1800
北师大IT 高级网络工程师就业班电话预约北京师范大学¥13000
金 同 方 网络工程师就业周末班电话预约人大总部¥7000

  以Linus Torvalds的一番言论为导火索,国内的技术博客们掀起了一场不大不小的“语言大战”。是否真如Linux之父所说的那样,“C++是一种糟糕的(horrible)语言。而且因为有大量不够标准的程序员在使用而使情况更糟,以至于极容易产生彻头彻尾的垃圾(total and utter crap)。”孟岩的切身经验颇值得玩味:

  我早在N年前就发现自己写程序速度慢,我当时对STL远比周围人熟悉,照例说长缨在手,应该效率很高才对。结果发现不是,写程序的时候特别没自信,总在想:“这样固然是可以work了,但恐怕有更好的方案吧,会是什么呢?加个模板参数试试?要么抽象出一个基类?做一个bridge模式?那么Ownership的问题怎么解决?谁来负责回收内存呢?移植一个boost::shared_ptr过来吧!可多线程情况下会不会拖慢速度呢?应该不会,可是会碰到循环引用的情况。要么在中间搞一个weak_ptr把循环链断开?哎呀不行不行,太复杂,别人也理解不了。还是先这样吧,能work就行。” 就这样,兜了一个圈子回来。有的时候,这个圈子不是纯柏拉图式的,我会真的实现不少 “优化” 设计来比对,那个时间啊,花花的就耗在里面了。

  另一位资深的C++程序员刘未鹏则这样感叹:

  群众是容易被误导的,我也曾经是。以为掌握了更多的语言细节就更牛,但实际却是那些语言细节十有八九是平时编程用都用不到的。C++中众多的细节虽然在库设计者手里面有其用武之地,但普通程序员则根本无需过多关注,尤其是没有实际动机的关注。一般性的编码实践准则,以及基本的编程能力和基本功,乃至基本的程序设计理论以及算法设计。才是真正需要花时间掌握的东西。

  显而易见,在C++这种语言上,人们投入了大量精力、撰写了大量图书和文章来关注它的语言细节,却对在真实环境下使用它解决问题的最佳实践重视不足。如果这还不够糟糕的话,不妨再看看C++在项目层面上的最佳实践——几乎没有任何成文的资料存在。当敏捷实践对于Java、.NET、Ruby等等社区的开发者逐渐成为常识时,C++程序员们还要花大把时间去学习摸索如何写一个好的makefile、如何组织自己的项目目录结构,更不用说持续集成和测试驱动开发了。

  但C++团队仍然需要敏捷实践。据记者的了解,国内有多家从事电信、铁道等行业应用开发的IT企业已经痛感缺乏项目组织手段和质量保证手段带来的问题,并希望通过引入敏捷实践来改善项目质量,提高工作效率。在C++项目中引入敏捷方法,至少需要以下几方面的最佳实践作为支撑:

  ·项目自动化:如何在make等现有工具的基础上,通过合理的项目组织,实现项目构建、集成、测试的完全自动化。

  ·测试驱动开发:如何引入以CppUnit、CxxTest为代表的单元测试工具,并以测试驱动功能代码的开发。这个话题又可以引申出两个方面:

  ·面向对象设计:针对某一特定领域的软件应用,如何进行合理有效的面向对象设计,使之有可能进行单元测试;

  ·mock:如何为C++应用引入mock技术(甚至是IoC容器),从而简化单元测试。

  ·持续集成:如何加快集成的频率,将C++项目与现有的持续集成工具(例如CruiseControl)结合起来,使集成状态成为项目健康情况的重要标示信息。

  ·重构:如何有效利用现有工具,对规模较大的C++程序进行重构;如何避免使用对重构构成障碍的语言特性。

  正如记者所指出的,C++的敏捷实践正在日益受到相关IT企业和开发团队的重视,但这方面的系统研究和资料仍然非常欠缺,给希望引入敏捷实践的C++团队造成了巨大的障碍。经验丰富的C++程序员们如果投入更多的精力来讨论和总结“如何用C++做好一个项目”,会给整个行业带来更大的价值。

下一篇:程序员需要HR了解的七件事

  一切都是从一次不成功的电话面试开始的。正在学车的我刚刚通过了桩考,心情不错,正在大厅里悠哉游哉地等着刷卡。忽然一个陌生的电话打进来,对面介绍说是一家S开头的手机操作系统公司,刚在北京设立了研发中心。

  七月初的时候在CSDN看到消息,说这家公司有很宏伟的中国计划,浏览职位时发现Senior Trainer的职位,于是投了份简历。因为开发方向不同,所以并没有抱太大希望。没想到两个多月之后竟然要我进行电话面试。其实,当时很礼貌的拒绝了,也不会有之后的不愉快,但是谁叫我当时刚过桩考呢,我在心情好的时候不...[查看详情]

  影视动画培训   北大BEC培训官方报名网站   2008美国夏令营启航官方指定报名网站   2008留学第一站!  
  北师大 火星时代
共举影视动画培训之鼎
  北大BEC培训官方报名网站
现在报名独享95折!
  2008年国家职业资格考试
一次过关完全备考手册
  2008留学第一站
留学资讯尽在精英留学站!
 
上一篇:Web2.0 思潮正在瓦解洗脑文化
下一篇:程序员需要HR了解的七件事
 相关新闻
·2006年下半年软件设计师考试答案·我从外行到专业的软件测试工程师
·软件工程师现有工作满意率仅为7.1%·软件资格和软件水平考试的业界评价
·风雨过后见彩虹 谈我的软考经历·自学通过软件设计师考试后的一些感想
·关于软件资格水平考试,我很想说几句·从软件设计师试题看软件测试七原则
·软件设计师考试必看 如何应考?·45天考过软考中级信息系统监理师心得
·软考超级Fans-五次软考心路历程·计算机软件水平考试应避免的五大失误
·通过软件设计师考试 专业能力很重要·2007年软件测试工程师需求继续增大
·从人性格看哪些人不适合做软件测试·软考三考三捷 我是怎么备考和应考的
 
◇ 重点栏目导航
◇ 精英服务承诺
教育顾问:010-51660910
QQ交流:138660910
相关资料
·软件测试新手的修炼之路
·Smarty简体中文参考手册
·Struts中文手册
·Struts快速学习指南
·ultradev动态网页制作教程
·UML工具箱
·《设计模式》中文版
·学友Flash伴侣 1.11
·阿须图像水印(AssureMark)V2.0
·超级语霸
相关试题
·2008年云南公务员考试专业试卷之科技环保
·2008年云南公务员考试试卷之教育文化类专
·2008年云南公务员考试试卷参考答案之科技
·2008年云南公务员考试试卷参考答案之教育
·2008年公务员考试科教管理类专业试卷参考
·2008年公务员考试科教管理类专业试卷(云
·2007年全国CPA考试试卷及答案解析之《会
·2007年CPA试卷及答案解析之《财务成本管
·2008年注会考前模拟试题之《财务成本管理
·2007年全国CPA《税法》考试试卷及答案解
相关热贴
·如何改QQ IP地址!
·恰当选择软件测试自动化方案
·ADO.NET学习总结
·.net操纵xml文件类(c#)
·Log4net教程
·VPN技术详解
·高手必读 网络端口安全防护技巧放送
·访问XP共享出现的问题解决办法
·Web2.0时代,RSS你会用了吗?(技术实现总
·.NET下正则表达式应用的四个示例