好用的跨平台的 C++ 函式庫介紹

Angus Liu 的照片


長久以來,C++ 的使用者會抱怨寫系統或網路程式沒有現成的函式庫可以用。跟其它物件導向的語言如 Java 和 C# 比起來,有許多現成的內建類別和函式馬上可以使用,C++ 就顯得很不方便。程式設計師要寫這類的應用程式,就只能利用系統的 API 從頭寫起,或者找一些軟體商提供的解決方案。每件事都要從頭來一遍真的很麻煩,尤其是寫程式的人並不全然掌握如何使用作業系統所提供的 API,另外寫出來的程式還不能夠移植到其它平台。就因為這樣,有許多有才華人已經幫我們寫了完整的函式庫來解決這件事。

Adaptive Communication Environment (ACE)

ACE 算是這類型比較久的一個函式庫,一開始是 Douglas C. Schmidt 在加州大學 Irvine 分校就讀時,畢業專題發展出來的。依我的使用經驗,這個函式庫源碼有很多老式的 C++ 寫法,而且大量使用 Macro。再加上一堆數不完的類別和設計模型參雜其中。它算是有些複雜難以駕馭的,精通它需要很長的學習曲線。但是也由於它發展的早,相當有歷史了,所以幾乎現存的作業系統它都可以支援,甚至有些它支援的作業系統你還不曾聽過呢!

Poco C++ Libraries

Poco 你可以想做是一個 ACE 簡潔源碼的翻修版。在某種程式來說,它除了包含所有 ACE 所有的功能外,還加上不少算是標準的 C/C++ 函式庫,如 PCRE 和 zlib。Poco 的文件寫得蠻不錯的,而且源碼也相當的乾淨容易了解。所以我還蠻推薦新手要使用這一類的函式庫,可以先從Poco 開始!

Boost C++ Libraries

Boost 更是 C++ 使用者不能錯過的函式庫。它擁有一堆很好用且超乎你預期多的工具函式庫,而且多數利用了 C++ 的樣版寫成,樣版的彈性和威力會讓你愛不釋手。在最近的版本,Boost 還加入了 ASIO 這樣一個網路的函式庫,也很值得你去嘗試探索。不過呢,也因為源碼含有大量的樣版,在追查程式臭蟲時,可能不是什麼太令你愉快的事。但是如果你是 C++ 的愛好者,你一定不會放過它的!