淺析C++語言風(fēng)格問題
對第一次接觸到C++語言的用戶和學(xué)者來說,了解C++語言的概念是非常重要的,那么就先說一下什么是C++語言,所謂C++語言:是一種使用非常廣泛的計算機編程語言。
這些跡象反映出C++語言來源于C又盡量與C保持兼容的設(shè)計思想——這種設(shè)計思想既為C++的迅速普及提供了便利(C++語言的順利推廣顯然得益于C語言已有的龐大用戶群)。
也在C++的語言風(fēng)格中深深地烙上了C語言的印記,以至于在若干年后,當(dāng)C++語言已經(jīng)基本具備了“獨立人格”的時候,Stroustrup還不得不時常提醒人們要盡量拋開C語言的思維方式。
另一方面,Stroustrup從Simula語言借用的類、派生、訪問控制等面向?qū)ο蟾拍钤趲ь惖腃中牢牢地扎下了根。據(jù)Stroustrup介紹,他為C語言引入面向?qū)ο髾C制的本意在于尋找一種“合適的工具”。
以便實現(xiàn)分布式系統(tǒng)或解決類似的復(fù)雜問題。但無論怎樣,Stroustrup將C的高效和Simula的優(yōu)雅捆綁在一起的做法都在事實上為C++語言埋下了“雙重性格”的種子——很難說這不是C++語言風(fēng)格多樣化的直接誘因。
如果說C++語言的生身父母分別是C語言和Simula語言的話,那么,1984年出現(xiàn)的,借助操作符重載實現(xiàn)的I/O流技術(shù)就是C++這個幼童甩開父母的庇護(hù),向新的代碼風(fēng)格邁出的第一步了。上面幾行代碼來自Stroustrup所著《C++程序設(shè)計語言》中的示例程序。注意那一行由“<<”連接的代碼,I/O流、變量、字符常量在代碼中被巧妙地串聯(lián)在一起。
從技術(shù)角度看,這種全新語法的引入彌補了C語言中printf()函數(shù)族缺乏類型安全機制和擴展能力的弱點。從代碼風(fēng)格上說,“<<”等通俗易懂的運算符大大改變了程序員對C++語言的第一印象。
我自己第一次接觸C++ I/O流庫時,就曾清晰地感覺到,一個試圖擺脫C語言風(fēng)格束縛的C++精靈正順著“<<”和“>>”組成的溪水“流淌”而來——這種行云流水般的代碼風(fēng)格在十幾年前就已經(jīng)顯示出了C++語言在塑造新形象、引進(jìn)新觀念方面的決心和勇氣。
20世紀(jì)80年代末到90年代初,X Window、Mac OS、Windows等窗口環(huán)境的先后出現(xiàn)為程序設(shè)計提出了新的課題,而C++語言兼顧面向?qū)ο蠛蛡鹘y(tǒng)開發(fā)方法的特性無疑使其成為了窗口環(huán)境下編程語言的最佳選擇。一批基于C++語言的窗口框架不僅在商業(yè)上取得了成功,也在很大程度上改變了C++語言本身的風(fēng)格特點。
最早在窗口開發(fā)中贏得大多數(shù)程序員青睞的C++框架是Borland公司于1992年內(nèi)置在Borland C++ 3.1中的OWL(Object Windows Library)框架庫。下面這段代碼取自Borland C++ 的示例程序:
為了解決窗口編程中最關(guān)鍵的消息映射問題,OWL的設(shè)計者為C++語言的成員函數(shù)引入了“=[…]”的古怪語法,這是許多用過Borland C++的程序員至今都無法忘懷的一種語言風(fēng)格。
我承認(rèn),Borland公司在C++語言的發(fā)展初期為我們提供了最好的編譯器和最出色的集成開發(fā)環(huán)境(IDE),但Borland通過OWL框架為C++引入的另類語言風(fēng)格的確讓人不敢恭維(客觀地講,這筆賬也不應(yīng)全算在Borland頭上,因為OWL的前身是Borland從White Water公司購買的框架代碼)。
【編輯推薦】


2010-01-21 09:34:57
2010-01-14 17:13:53
2009-08-03 16:28:53




