程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 探秘開源C++程序庫

探秘開源C++程序庫

編輯:C++入門知識

用C++程序進行編寫應用程序時所需要的思想方法和技術風格之間存在相當大的差異和差距,在進行C++的編制過程中,可以隨隨便便的自定義自己的編程,但是C++程序庫對於開發者來說具有很重要的意義。

如果IBM不是在1970年代極端保守地把一種叫做PL/X的語言牢牢地限定在自己的研究所裡,也許整個程序員社群的圖騰就不是貝爾試驗室的那兩個大胡子,而是小沃森實驗室裡的IBM某院士。

事實上,C語言的成功,更須拜開放軟件運動之時勢所賜,或者更確切地說,C與開放軟件是一對共生體,它們相互扶持,相互成就,共同成長興旺,共同創造歷史。 根深自然葉茂。

今天C語言體系內所擁有的開放資源,無論是數量和質量,還是豐富性、多樣性、創新性、可靠性、重要性,都是其它任何開發技術體系所無法望其項背的。豐富對於開發者是好事,但對於寫資源介紹性文章的作者來說,則是絕對的壞事。

想要對C語言體系中的開放資源做一個介紹,哪怕只是一次白描,也決不是一個人、一本書所能容納的,更遠遠不是雜志中的一篇文章所能及的。因此在本文中,對於C語言開放資源的介紹是以一種蜻蜓點水的姿態進行的。

相比之下,C++語言在開源世界中的分量,與C語言相比就相去甚遠了。作為對照,C++語言在工業界的實際地位,如果不是比C更重要的話,至少也是與C在同一個層次上。考慮到這一點,在開源領域中兩兄弟的這種差距就令人感到非常震驚。

如果說在2000年以前,由於C++在工業界的統治地位,這種差距對C++的影響還不大的話,今天,C++在開源領域裡薄弱的基礎就非常要命了。現在在開發者社群中,“C語言萬壽無疆,C++無壽無疆”的說法得到不少人的支持,其根本原因之一就在於C++在開源運動中的地位遠遜於C。究其原因,歸根到底是因為編寫高質量、可復用而又拳拳服膺的C++程序庫實在是一件太困難的事情。

一方面,大量的C++開源項目質量不佳,而且經常以一種粗暴的方式要求使用者改變自己程序的風格,另一方面,一旦有人完成了一個可用的C++項目或者程序庫。

他必須具有極其彪悍的意志才能夠咬著牙把這樣的項目奉獻給開源社群——不僅因為失去了可能的金錢上的回報,更因為可能要面對著暴風雨般的批評和鄙視。總之,諸多的原因使得開源文化未能在C++中深深扎根。

  • 如何進行C++異常處理?
  • C++異常處理幾大秘訣
  • 提高學習C++效率淺析
  • 深度剖析C++復雜性問題
  • C++實現程序方法總結之談

然而,畢竟C++是一種稱霸一時的語言,C++社群的規模、強悍和創造力,仍然是很多其它新興語言社群難以相比的。特別是在標准C++制定之後,C++編程風格有了明確的指導思路,開源項目也就大大繁榮起來。雖然時間還不長,但是已經有一些令人欣慰的成果。這些成果也就構成了寫作本文的基本動機和素材。

就重要性而言,開源程序庫和工具集對於C++甚至比對C還要重要得多。因為實踐證明,沒有良好的基礎設施支持,C++開發成功的可能性異乎尋常的低。

其根本原因是,用C++寫優秀的程序庫非常非常難,而一旦有了這樣的程序庫,在其基礎上寫應用程序就相當容易了。同時,C++的特點又要求基礎設施的源代碼必須開放,因此,C++程序庫對於開發者來說意義非常重大。

我們可以更進一步探究開源C++程序庫對於C++開發的重要意義。用C++編寫可復用程序庫時所需要的思想方法和技術風格,與用C++編寫應用程序時所需要的思想方法和技術風格之間存在相當大的差異和差距。前者所需要的高超技術、豐富經驗和良好的權衡能力,是很少有人能具備的。

在所有程序設計語言中,你恐怕找不出第二種語言像C++那樣,對於程序庫作者的要求如此之高,以至於遠遠超過了一般“熟練”C++開發者的平均水平。在Lisp中,語言、庫和程序根本就是一回事,每一個程序員寫的代碼都可以看成是語言本身的擴充。

在Java、C、Perl、Python、Ruby中,一個優秀的應用程序開發者在積累一定經驗之後,不難寫出高質量的可復用代碼。而在C++中,這種事情是非常罕見的,即使是天資卓越、經驗豐富的大師級人物,也需要花費多年的打磨,歷經幾次反復,才能夠最終推出受到一致認可的可復用程序庫。

此道之難,難於上青天,以至於Andrei Alexandrescu感歎道,十幾歲的少年天才滿目皆是,滿鬓斑白的優秀程序庫設計者鳳毛麟角。而在另一個地方,一本C++可復用技術圖書的作者總結道,所謂可復用的C++程序庫,不可能是設計出來的,只可能是復用出來的。

然而,一旦這樣的程序庫構造出來並且為人們熟悉,那麼就會大大地簡化應用程序的開發。這也就是為什麼在2000年後,Bjarne Stroustrup無數次地呼吁社群專注程序庫的開發。他很清楚,只有程序庫能夠救C++,只有程序庫能夠發展C++。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved