• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            北緯91℃

            處男,畜牲一樣的男人;處男,被女人處理過的男人……
            posts - 9, comments - 12, trackbacks - 0, articles - 0
               :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            [轉(zhuǎn)]C++的救贖

            Posted on 2007-03-29 10:22 北緯91℃ 閱讀(282) 評論(0)  編輯 收藏 引用 所屬分類: C++
              C語言天生就與開放結(jié)緣。C最初是作為UNIX的系統(tǒng)編程語言而流行起來的,而UNIX可以被認(rèn)為是第一個產(chǎn)生重大影響的“開源”軟件。隨著UNIX的流行,C語言逐漸被人們認(rèn)識和喜愛。很快的,在各個平臺上C語言都成為了流行的甚至是統(tǒng)治性的程序設(shè)計語言。

              大約到1980年代中期,C已經(jīng)成為人類歷史上第一種工業(yè)級程序設(shè)計世界語。很多人都知道,正是C這樣一種世界語的出現(xiàn),才使開源運動的出現(xiàn)和最初發(fā)展成為可能,從這個意義上講,說C語言是開源運動之母并不十分過分。但人們不太能夠認(rèn)識到的是,事實上C語言統(tǒng)治地位的獲得,卻也是早期開放軟件運動的直接結(jié)果。多數(shù)人在回顧這段歷史的時候,經(jīng)常會感染中國文人的不嚴(yán)肅的浪漫主義史觀,喜歡把C語言的成功歸結(jié)為漢高祖斬白蛇般的天賦神格,描述為遙想公瑾當(dāng)年,談笑間檣櫓灰飛煙滅的輕飄飄。

              然而如果我們對歷史作一些細(xì)致的調(diào)查,我們會發(fā)現(xiàn)C語言絕非有什么天命,而只不過是幸運地扒上了早期開放運動的快車而已。在C語言“小人乍富”的那幾年,也還有其它不少程序設(shè)計語言具有高性能、可移植、系統(tǒng)開發(fā)能力強(qiáng)的特點,決不是只有C骨骼特異,貌若天仙。如果Pascal也能借助一個像UNIX那樣的開放的幽靈在歐美大學(xué)校園里徘徊,那么我們今天很可能要把begin和end直接映射到鍵盤上。

              如果IBM不是在1970年代極端保守地把一種叫做PL/X的語言牢牢地限定在自己的研究所里,也許整個程序員社群的圖騰就不是貝爾試驗室的那兩個大胡子,而是小沃森實驗室里的IBM某院士。事實上,C語言的成功,更須拜開放軟件運動之時勢所賜,或者更確切地說,C與開放軟件是一對共生體,它們相互扶持,相互成就,共同成長興旺,共同創(chuàng)造歷史。

              根深自然葉茂。今天C語言體系內(nèi)所擁有的開放資源,無論是數(shù)量和質(zhì)量,還是豐富性、多樣性、創(chuàng)新性、可靠性、重要性,都是其它任何開發(fā)技術(shù)體系所無法望其項背的。豐富對于開發(fā)者是好事,但對于寫資源介紹性文章的作者來說,則是絕對的壞事。想要對C語言體系中的開放資源做一個介紹,哪怕只是一次白描,也決不是一個人、一本書所能容納的,更遠(yuǎn)遠(yuǎn)不是雜志中的一篇文章所能及的。因此在本文中,對于C語言開放資源的介紹是以一種蜻蜓點水的姿態(tài)進(jìn)行的。

              相比之下,C++語言在開源世界中的分量,與C語言相比就相去甚遠(yuǎn)了。作為對照,C++語言在工業(yè)界的實際地位,如果不是比C更重要的話,至少也是與C在同一個層次上。考慮到這一點,在開源領(lǐng)域中兩兄弟的這種差距就令人感到非常震驚。如果說在2000年以前,由于C++在工業(yè)界的統(tǒng)治地位,這種差距對C++的影響還不大的話,今天,C++在開源領(lǐng)域里薄弱的基礎(chǔ)就非常要命了。現(xiàn)在在開發(fā)者社群中,“C語言萬壽無疆,C++無壽無疆”的說法得到不少人的支持,其根本原因之一就在于C++在開源運動中的地位遠(yuǎn)遜于C。究其原因,歸根到底是因為編寫高質(zhì)量、可復(fù)用而又拳拳服膺的C++程序庫實在是一件太困難的事情。一方面,大量的C++開源項目質(zhì)量不佳,而且經(jīng)常以一種粗暴的方式要求使用者改變自己程序的風(fēng)格,另一方面,一旦有人完成了一個可用的C++項目或者程序庫,他必須具有極其彪悍的意志才能夠咬著牙把這樣的項目奉獻(xiàn)給開源社群——不僅因為失去了可能的金錢上的回報,更因為可能要面對著暴風(fēng)雨般的批評和鄙視。總之,諸多的原因使得開源文化未能在C++中深深扎根。

              然而,畢竟C++是一種稱霸一時的語言,C++社群的規(guī)模、強(qiáng)悍和創(chuàng)造力,仍然是很多其它新興語言社群難以相比的。特別是在標(biāo)準(zhǔn)C++制定之后,C++ 編程風(fēng)格有了明確的指導(dǎo)思路,開源項目也就大大繁榮起來。雖然時間還不長,但是已經(jīng)有一些令人欣慰的成果。這些成果也就構(gòu)成了寫作本文的基本動機(jī)和素材。

              就重要性而言,開源程序庫和工具集對于C++甚至比對C還要重要得多。因為實踐證明,沒有良好的基礎(chǔ)設(shè)施支持,C++開發(fā)成功的可能性異乎尋常的低。其根本原因是,用C++寫優(yōu)秀的程序庫非常非常難,而一旦有了這樣的程序庫,在其基礎(chǔ)上寫應(yīng)用程序就相當(dāng)容易了。同時,C++的特點又要求基礎(chǔ)設(shè)施的源代碼必須開放,因此,C++程序庫對于開發(fā)者來說意義非常重大。

              我們可以更進(jìn)一步探究開源C++程序庫對于C++開發(fā)的重要意義。用C++編寫可復(fù)用程序庫時所需要的思想方法和技術(shù)風(fēng)格,與用C++編寫應(yīng)用程序時所需要的思想方法和技術(shù)風(fēng)格之間存在相當(dāng)大的差異和差距。前者所需要的高超技術(shù)、豐富經(jīng)驗和良好的權(quán)衡能力,是很少有人能具備的。在所有程序設(shè)計語言中,你恐怕找不出第二種語言像C++那樣,對于程序庫作者的要求如此之高,以至于遠(yuǎn)遠(yuǎn)超過了一般“熟練”C++開發(fā)者的平均水平。在Lisp中,語言、庫和程序根本就是一回事,每一個程序員寫的代碼都可以看成是語言本身的擴(kuò)充。

              在Java、C、 Perl、Python、Ruby中,一個優(yōu)秀的應(yīng)用程序開發(fā)者在積累一定經(jīng)驗之后,不難寫出高質(zhì)量的可復(fù)用代碼。而在C++中,這種事情是非常罕見的,即使是天資卓越、經(jīng)驗豐富的大師級人物,也需要花費多年的打磨,歷經(jīng)幾次反復(fù),才能夠最終推出受到一致認(rèn)可的可復(fù)用程序庫。此道之難,難于上青天,以至于 Andrei Alexandrescu感嘆道,十幾歲的少年天才滿目皆是,滿鬢斑白的優(yōu)秀程序庫設(shè)計者鳳毛麟角。而在另一個地方,一本C++可復(fù)用技術(shù)圖書的作者總結(jié)道,所謂可復(fù)用的C++程序庫,不可能是設(shè)計出來的,只可能是復(fù)用出來的。然而,一旦這樣的程序庫構(gòu)造出來并且為人們熟悉,那么就會大大地簡化應(yīng)用程序的開發(fā)。這也就是為什么在2000年后,Bjarne Stroustrup無數(shù)次地呼吁社群專注程序庫的開發(fā)。他很清楚,只有程序庫能夠救C++,只有程序庫能夠發(fā)展C++。

              現(xiàn)在我們知道,用來寫C++程序庫所需要的技術(shù),與用來寫C++應(yīng)用程序所需要的技術(shù)存在很大的差別。這已經(jīng)比較糟糕了。更糟糕的是,一般的C++開發(fā)者根本分不清這中間的差別,他們在開發(fā)中往往既不是一個稱職的程序庫開發(fā)者,也不是一個單純的應(yīng)用開發(fā)者。他們一邊想著完成手頭的工作,一邊琢磨如何能夠?qū)懗龈哔|(zhì)量的基礎(chǔ)庫和框架,為萬世開太平。如果說C語言是一把輕快的小匕首,遇誰都是進(jìn)身猛刺,血濺一尺,那么這種C++的使用方式無異于左手打鐵鑄兵,右手揮劍刺秦,這種精神分裂的狀態(tài)直接將很多項目變成了既超期超支又質(zhì)量低劣的垃圾。

              認(rèn)識到這樣的事實之后,C++程序員應(yīng)當(dāng)以更理性的態(tài)度來看待自己的工作。大部分情況下,你所需要做的是尋找一些可以互相合作的、穩(wěn)定可靠的開源程序庫,然后在其基礎(chǔ)之上,面向目標(biāo),使用盡可能簡樸的技術(shù),專心專意地進(jìn)行應(yīng)用開發(fā),把那些復(fù)雜精妙的語言技巧和“可復(fù)用”之類的想法扔到Java國去。唯其如此,你才可能更高效地開發(fā)出好的應(yīng)用軟件,而且會逐漸積累和重構(gòu)出真正可復(fù)用的軟件。

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国产69精品久久久久久人妻精品| 久久综合伊人77777麻豆| 日韩人妻无码精品久久久不卡| 久久精品无码午夜福利理论片| 久久精品人人做人人爽电影蜜月| 亚洲精品国产成人99久久| 亚洲精品无码久久不卡| 国产精品无码久久综合| 亚洲v国产v天堂a无码久久| 无码人妻久久一区二区三区免费丨 | 欧洲人妻丰满av无码久久不卡| 久久无码一区二区三区少妇| 久久久久亚洲AV无码专区体验| 国产99久久久国产精免费| 亚洲熟妇无码另类久久久| 久久WWW免费人成—看片| 久久久久久无码Av成人影院| 一本色综合久久| 国内精品久久久久久久久电影网| 色综合久久中文字幕无码| 久久天天日天天操综合伊人av| 72种姿势欧美久久久久大黄蕉| 亚洲欧美国产精品专区久久| 99国内精品久久久久久久 | 精品久久人人做人人爽综合| 久久夜色精品国产噜噜麻豆| 久久久久久伊人高潮影院 | 麻豆AV一区二区三区久久| 午夜精品久久久久久影视777| 国产福利电影一区二区三区久久老子无码午夜伦不| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 成人午夜精品无码区久久| 久久最近最新中文字幕大全| 乱亲女H秽乱长久久久| 久久亚洲日韩精品一区二区三区| 最新久久免费视频| 欧美成人免费观看久久| 伊人久久大香线蕉综合网站| 久久精品国产亚洲αv忘忧草 | 久久精品国产亚洲AV久| 久久久亚洲欧洲日产国码是AV|