《程式設計師》雜誌推薦 C 開源程式庫

2021-04-23 14:36:29 字數 2196 閱讀 8878

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++的正規表示式支援一直以來是乙個軟肋。大約在2023年左右,boost中出現了regex庫,初步解決了這個問題。但是最初的regex無論在效率上還是可靠性方面都有一些問題,後來經過一次大規模的翻修之後,達到了比較完善的程度。

其他可以選擇的替代品還有c語言的pcre庫,qt中的qregexp類等。

5、矩陣計算:mtl

自2023年以來,c++在科學計算領域當中取得了巨大的突破。這主要歸功於template技術的高階應用,使得c++在科學計算的效能方面取得了巨大的進步,一大批優秀的c++科學計算庫湧現出來。比如blitz++、pooma、mtl、boost::ublas。而這其中,mtl就功能豐富程度、效能、開發支援和成熟程度來講,是比較突出的乙個,因此可以優先考慮。值得一提的是,2023年,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++安全程式庫。 

C 開源程式庫

程式設計師 雜誌推薦c 開源程式庫 1 系統和網路程式設計庫 ace 除了ace zthread boost thread 如果放大到 c c 領域,還有 apr,還有 cii。在檔案和目錄操作方面,boost 也有相應的元件,而在網路程式設計方面有 socket 還有boost asio 未來的 ...

C 程式設計師書籍推薦

c 程式設計師書籍推薦1 c 程式設計 c windows form 程式設計 對熟練掌握 winform 程式設計基礎比較有用,看得時候建議將書中的例子從頭到尾做一遍,這樣會有比較好的收穫,否則,學習效果一般。c xml 從入門到精通 這本書前半部分講的關於 xml的基礎操作比較有用,後半部分如果...

C 著名程式庫

1 c 標準庫 1 dinkumware c library p.j.plauger編寫的高品質的標準庫。p.j.plauger博士是dr.dobb s程式設計傑出獎的獲得者。其編寫的庫長期被microsoft採用,並且最近borland也取得了其oem的license,在其 c c 的產品中採用d...