透視“語言大戰”:C++呼喚敏捷實踐

以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++做好一個項目”,會給整個行業帶來更大的價值。

騰訊敏捷教練艾永亮:創新的敏捷實踐
騰訊敏捷教練艾永亮:創新的敏捷實踐
  近日,敏捷實踐者的盛會Scrum Gathering大會在上海召開,此次盛會雲集了傳統行業和互聯網行業的衆多知名企業,如百度、支付寶、SAP、愛立信……來自于騰訊的嘉賓們也帶來了騰訊6年敏捷實踐的精華——創新的敏捷實...查看完整版>>騰訊敏捷教練艾永亮:創新的敏捷實踐
 
全國計算機等級考試命題大透視-二級C語言|報價¥14.90|圖書,工業技術,自動化、計算機技術,計算技術、計算機技術,綜合,
目錄:圖書,工業技術,自動化、計算機技術,計算技術、計算機技術,綜合,品牌:基本信息·出版社:人民郵電·頁碼:184 頁碼·出版日:2007年·ISBN:7115156131·條碼:9787115156136·版次:1·裝幀:平裝·開本:0開...查看完整版>>全國計算機等級考試命題大透視-二級C語言|報價¥14.90|圖書,工業技術,自動化、計算機技術,計算技術、計算機技術,綜合,
 
C++程序設計語言編程風格演變史
  程序代碼也有風格,這算不得什麽新鮮事。早在20世紀80年代,C語言程序員就必須在K&R風格和ANSI風格之間擇善而從。但平心而論,我確實沒有見過哪一種語言能像C++這樣,在代碼風格方面表現得如此詭谲和難以捉摸...查看完整版>>C++程序設計語言編程風格演變史
 
初級 WINDOWS API C++語言版 編程(1)
  當我們使用著漂亮的界面,方便快捷的應用程序的時候。我們才會發現,以前曾編寫的程序是多麽的粗糙(TC編寫的程序)。簡單的界面,16色的顯示系統,大大的落後于計算機的發展。簡單的說就是殺雞用牛刀。如何該改...查看完整版>>初級 WINDOWS API C++語言版 編程(1)
 
初級 Windows API C++語言版 編程(3)
  由于上一章的文章中我沒有向大家介紹清楚初試化的具體實現,造成很多的讀者無法很好的理解,這是我的失誤。本人現在補上,請大家原諒。   一個Windows API程序的初始化主要分爲爲四個部分。1、窗口類的定義2、...查看完整版>>初級 Windows API C++語言版 編程(3)
 
C++語言學習之從結構到類
C++語言學習之從結構到類
  編程之前,有必要複習一下C++中面向對象的一些基本概念。我們知道,C++與C相比有許多優點,主要體現在封裝性(Encapsulation)、繼續性(Inheritance)和多態性(Polymorphism)。封裝性把數據與操作數據的函數組織在一...查看完整版>>C++語言學習之從結構到類
 
體驗Visual Studio 2005中C++語言
Viusal Studio2005極大地豐富了它的庫,可以說是科研背後的清障機和加速器,對于這一點,我想大部分人都是這麽認爲的。它帶來的大量工具及新增的功能性函數使開發人員的生活越來越快樂、簡單。但對于我來說,所有這些...查看完整版>>體驗Visual Studio 2005中C++語言
 
代碼大戰:哪種語言會贏得開發的霸權
原CNET的開發人員Dan Seewer和Kevin Cobb接受了我們的采訪,就哪些編程語言位列開發語言前茅以及哪些語言正在參與排名的競爭發表了自己的看法。Dan在軟件開發上的經驗超過17年,他所使用過的語言包括Perl、C、Java和...查看完整版>>代碼大戰:哪種語言會贏得開發的霸權
 
AIX如何安裝/配置C/C++/Fortran語言License
環境: 産品: C for AIX 4.4 平台:RS/6000 版本:AIX 4.3 問題: 安裝好C/C++/Fortran編譯器的包後,仍然不能使用編譯程序(如:cc -o objectfile sourcefile.c),出錯提示爲“No License Configured”。這時需要對...查看完整版>>AIX如何安裝/配置C/C++/Fortran語言License
 
 
回到王朝網路移動版首頁