開源庫

1、系統和網絡編程庫:ACE
    除了ACE之外,還有很多系統和網絡編程方面的程序庫。比如在線程庫方面,還有ZThread、boost::thread,如果放大到C/C++領域,還有APR,還有CII。在文件和目錄操作方面,boost也有相應的組件,而在網絡編程方面有socket++,還有boost::asio,未來的C++0X中幾乎肯定有一個網絡編程和一個線程庫。然而目前看來,ACE仍然是進行系統和高性能網絡編程的首選,其地位在一段時間內不會被撼動。它不但是一個實用的程序庫、框架集,還是一個典範的設計模式應用範例,非常值得學習。

2、GUI庫:Qt
    傳統上Qt被認爲是可移植的GUI庫,但實際上Qt現在已經是一個比較完整的可移植應用程序框架了,其中包含了大量的工具,比如正則表達式、Web和Socket類、2D和3D圖形、XML解析、SQL類等,甚至還包括了一個完整的容器類庫,不過其王牌還是GUI。在目前的跨平臺GUI框架中,Qt成熟度最高,已經被一些大公司應用在關鍵產品中。由於Trolltech對Qt採用的dual license模式,該產品既可以從開源社區獲得支持,又能夠賺取足夠的商業利潤,因此其前景也令人比較有信心。
    Qt的主要技術特色是其元對象模型。Qt實際上使用的並不是標準的C++,而是標準C++的一個擴展。它通過元對象模型擴展,實現了著名的signal/slot機制,而這一機制也成爲Qt的最大特色和優勢。
    與Qt類似的可移植GUI框架還有wxWidget、FOX等。

3、分佈式對象中間件:ICE
    ICE是分佈式對象中間件領域裏的後起之秀,可以大致地將其視爲“改進版”的CORBA。目前應用在一些大型項目當中,其中包括波音公司主持的下一代陸軍作戰系統。
    ICE的一個特別價值是其代碼的範例意義。由於ICE的出現較晚,開發者比較系統地應用了新的C++編程風格,所以成爲了研讀C++代碼的良好目標。

4、正則表達式:boost::regex
    正則表達式是編程工作中最強有力的工具之一。C++的正則表達式支持一直以來是一個軟肋。大約在2001年左右,boost中出現了regex庫,初步解決了這個問題。但是最初的regex無論在效率上還是可靠性方面都有一些問題,後來經過一次大規模的翻修之後,達到了比較完善的程度。
    其他可以選擇的替代品還有C語言的pcre庫,Qt中的QRegExp類等。

5、矩陣計算:MTL
    自1995年以來,C++在科學計算領域當中取得了巨大的突破。這主要歸功於template技術的高級應用,使得C++在科學計算的性能方面取得了巨大的進步,一大批優秀的C++科學計算庫涌現出來。比如Blitz++、POOMA、MTL、Boost::uBLAS。而這其中,MTL就功能豐富程度、性能、開發支持和成熟程度來講,是比較突出的一個,因此可以優先考慮。值得一提的是,2002年,MTL與後來被Intel收購的KAI C++配合,曾經在性能評測中擊敗了FORTRAN。

6、XML、TinyXml
    C++的XML相關庫不少,但是大部分其實都是C庫,使用起來自然不那麼輕便。其中基於DOM的有TinyXml,基於SAX的當然是Xerces。前者小巧快捷,便於使用,適合做數據交換。後者則是全功能的XML解析器。

7、內存管理:boost::smart_ptr,Hans-Boehm GC
    C/C++的內存管理是一個永恆的話題。一般來說,C++的開發者傾向於自己管理內存。然而,出乎很多C++開發者意料的是,近期C++的一些領袖人物已經公開宣稱,如果不配備自動內存管理機制,用C++編寫安全可靠的大型程序是非常困難的。而Bjarne Stroustrup也曾對中國開發者建議,如果沒有特別的理由,應該在大型項目中使用自動內存管理工具。因此,今天的C++開發者應當積極地學習和應用自動內存管理設施。
    說到自動內存管理,比較輕量級的做法是boost::smart_ptr,而激進的做法是引入完整的GC機制。目前開源而又比較可靠的GC中,Hans-Boehm GC無疑是最受信賴的。作爲一個保守的GC,Hans-Boehm GC在性能和功能方面都算是卓越。特別是,使用這個GC,你仍然可以delete、free來自己管理內存,對於我們編程習慣的衝擊比較小。

8、配置管理:Lua
    隨着軟件系統越來越複雜,對軟件的可配置型提出了越來越高的要求。傳統上只要通過命令行參數來配置的系統,現在可能需要越來越多的方式和機制。目前越來越受歡迎、並且得到越來越多證實的做法,是將Lua嵌入到C/C++程序中,而用Lua程序作爲配置腳本。這種做法的優勢是,Lua語言強大靈活,可以適應複雜的配置要求。同時,Lua便於嵌入C/C++程序,而且編譯執行速度非常快,可以說是目前解決C/C++程序配置管理問題的一個出色方案。

9、密碼及安全:OpenSSL
    安全是今天進行C/C++編程無法迴避和必須重視的問題。然而編寫安全的應用程序,特別是跟網絡相關的C/C++應用程序,是一件十分困難的事情。可以說,整個業界目前在這個進程上仍然處於“初級階段”。特別是涉及到大量的安全、密碼學相關的算法、規範,如果讓開發者自己摸索,其工作量和難度達到了不現實的程度。因此必須藉助可靠的相關程序庫纔有可能提高程序的安全性。在這方面,OpenSSL是目前最好的選擇,其內容之全面可靠,已經成爲業界標杆。然而,由於安全編程固有的複雜性,即使使用penSSL,開發工作仍然是非常繁瑣的。因此我們也希望能夠儘快看到更簡單、更易用的C/C++安全程序庫。

發佈了14 篇原創文章 · 獲贊 2 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章