《程式設計師》雜誌推薦c++開源程式庫
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::**art_ptr
,hans-boehm gc
c/c++
的記憶體管理是乙個永恆的話題。一般來說,
c++的開發者傾向於自己管理記憶體。然而,出乎很多
c++開發者意料的是,近期
c++的一些領袖人物已經公開宣稱,如果不配備自動記憶體管理機制,用
c++編寫安全可靠的大型程式是非常困難的。而
bjarne stroustrup
也曾對中國開發者建議,如果沒有特別的理由,應該在大型專案中使用自動記憶體管理工具。因此,今天的
c++開發者應當積極地學習和應用自動記憶體管理設施。
說到自動記憶體管理,比較輕量級的做法是
boost::**art_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++
安全程式庫。
c++開源專案
1、超級瑪莉:
用sdl
,c++
編寫的超級瑪莉遊戲。
sdl號稱
linux
上的directx
,通行於
windows
、linux
兩界,c++
的物件導向寫法優於純
c的例子,另外它還是個真正的遊戲,是學習的遊戲程式設計的入門藍本。
(不過最新版的
gobal.h
漏了#include )
《程式設計師》雜誌推薦 C 開源程式庫
2 gui庫 qt 傳統上qt被認為是可移植的gui庫,但實際上qt現在已經是乙個比較完整的可移植應用程式框架了,其中包含了大量的工具,比如正規表示式 web和socket類 2d和3d圖形 xml解析 sql類等,甚至還包括了乙個完整的容器類庫,不過其王牌還是gui。在目前的跨平台gui框架中,q...
C 著名程式庫
1 c 標準庫 1 dinkumware c library p.j.plauger編寫的高品質的標準庫。p.j.plauger博士是dr.dobb s程式設計傑出獎的獲得者。其編寫的庫長期被microsoft採用,並且最近borland也取得了其oem的license,在其 c c 的產品中採用d...
C 標準程式庫
1.如果要把乙個template中的某個識別符號號指定為一種型別,就算意圖顯而易見,關鍵字typename也不可或缺,因此一般的規則是,除了以typename修飾之外,template內的任何識別符號號都被視為乙個值而非乙個型別.2.類的成員函式可以是個template,但這樣的成員函式既不能是vi...