C 開源程式庫

2021-04-16 08:57:24 字數 4429 閱讀 1612

《程式設計師》雜誌推薦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...