• <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>

            大龍的博客

            常用鏈接

            統(tǒng)計(jì)

            最新評(píng)論

            [轉(zhuǎn)載]C++之父B. Stroustrup言論

            [轉(zhuǎn)載]C++之父B. Stroustrup言論- -

            ??????????????????????????????????????

            翻譯者 : myan

            [譯者按] Bjarne Stroustrup博士,1950年出生于丹麥,先后畢業(yè)于丹麥阿魯斯大學(xué)和英國(guó)劍橋大學(xué),AT&T大規(guī)模程序設(shè)計(jì)研究部門負(fù)責(zé)人,AT&T、貝爾實(shí)驗(yàn)室和ACM成員。1979年,B. S開始開發(fā)一種語言,當(dāng)時(shí)稱為揅 with Class?#65292;后來演化為C++。1998年,ANSI/ISO C++標(biāo)準(zhǔn)建立,同年,B. S推出了其經(jīng)典著作The C++ Programming Language的第三版。C++的標(biāo)準(zhǔn)化標(biāo)志著B. S博士?jī)A20年心血的偉大構(gòu)想終于實(shí)現(xiàn)。但是,計(jì)算技術(shù)的發(fā)展一日千里,就在幾年前人們還猜想C++最終將一統(tǒng)天下,然而隨著Internet的爆炸性增長(zhǎng),類似Java、C#等新的、現(xiàn)代感十足的語言咄咄逼人,各種Script語言更是如雨后春筍紛紛涌現(xiàn)。在這種情況下,人們不禁有些惶恐不安。C++是不是已經(jīng)過時(shí)了呢?其前景如何?標(biāo)準(zhǔn)C++有怎樣的意義?應(yīng)該如何學(xué)習(xí)?我們不妨看看B. S對(duì)這些問題的思考。以下文字是譯者從Stroustrup1998年之后發(fā)表的若干文章、談話筆記中精選出來的,由于出處不一,內(nèi)容多有重復(fù)。為保持完整,亦一并譯出。以下內(nèi)容選自B. S在自己主頁上發(fā)表的FAQ。

            1、請(qǐng)談?wù)凜++書。

            沒有,也不可能有一本書對(duì)于所有人來說都是最好的。不過對(duì)于那些真正的程序員來說,如果他喜歡從?#32463;典風(fēng)格?#30340;書中間學(xué)習(xí)一些新的概念和技術(shù),我推薦我的<The C++ Programming Language>, 1998年的第三版和特別版。那本書講的是純而又純的C++,完全獨(dú)立于平臺(tái)和庫(kù)(當(dāng)然得講到標(biāo)準(zhǔn)庫(kù))。該書面向那些有一定經(jīng)驗(yàn)的程序員,幫助他們掌握C++,但不適合毫無經(jīng)驗(yàn)的初學(xué)者入門,也不適合那些臨時(shí)程序員品嘗C++快餐。所以這本書的重點(diǎn)在于概念和技術(shù),而且在完整性和精確性上下了不少功夫。如果你想知道為什么C++會(huì)變成今天的模樣,我的另一本書<The Design and Evolution of C++> 能給你滿意的答案。理解設(shè)計(jì)的原則和限制能幫助你寫出更好的程序。www.accu.com是最好的書評(píng)網(wǎng)站之一,很多有經(jīng)驗(yàn)的程序員在此仗義執(zhí)言,不妨去看看。

            2. 學(xué)習(xí)C++要花多長(zhǎng)時(shí)間?

            這要看你說的?#23398;習(xí)?#26159;什么意思了。如果你是一個(gè)Pascal程序員,你應(yīng)該能很快地使你的C++水平達(dá)到與Pascal相近的程度;而如果你是一個(gè)C程序員,一天之內(nèi)你就能學(xué)會(huì)使用C++進(jìn)行更出色的C風(fēng)格編程。另一方面,如果你想完全掌握C++的主要機(jī)制,例如數(shù)據(jù)抽象,面向?qū)ο缶幊蹋ㄓ镁幊蹋嫦驅(qū)ο笤O(shè)計(jì)等等,而此前又對(duì)這些東西不很熟悉的話,花上個(gè)一兩年是不足為奇的。那么是不是說這就是學(xué)習(xí)C++所需要的時(shí)間呢?也許再翻一番,我想打算成為更出色的設(shè)計(jì)師和程序員最起碼也要這么長(zhǎng)的時(shí)間。如果學(xué)習(xí)一種新的語言不能使我們的工作和思想方式發(fā)生深刻的變革,那又何苦呢?和成為一個(gè)鋼琴家或者熟練掌握一門外語相比,學(xué)習(xí)一種新的、不同的語言和編程風(fēng)格還算是簡(jiǎn)單的。

            3. 了解C是學(xué)習(xí)C++的先決條件嗎?

            否!C++中與C相近的子集其實(shí)比C語言本身要好學(xué),類型方面的錯(cuò)誤會(huì)少一些,也不像C那樣繞圈子,還有更好的支持庫(kù)。所以應(yīng)該從這個(gè)子集開始學(xué)習(xí)C++。

            4. 要想成為真正的OO程序員,我是不是得先學(xué)習(xí)Smalltalk?

            否。如果你想學(xué)Smalltalk,盡管去學(xué)。這種語言很有趣,而且學(xué)習(xí)新東西總是一個(gè)好主意。但是Smalltalk不是C++,而且把Smalltalk的編程風(fēng)格用在C++里不會(huì)有什么好結(jié)果。如果你想成為一個(gè)出色的C++程序員,而且也沒有幾個(gè)月的時(shí)間百無聊賴,請(qǐng)你集中力量學(xué)好C++以及其背后的思想。

            5. 我如何開始學(xué)習(xí)C++?

            這取決于你的基礎(chǔ)和學(xué)習(xí)動(dòng)機(jī)。如果你是個(gè)初學(xué)者,我想你最好找個(gè)有經(jīng)驗(yàn)的程序員來幫助你,要不然你在學(xué)習(xí)和實(shí)踐中不可避免的犯下的種種錯(cuò)誤會(huì)大大地打擊你的積極性。另外,即使你的編譯器配備了充足的文檔資料,一本C++書籍也永遠(yuǎn)是必不可少的,畢竟文檔資料不是學(xué)習(xí)編程思想的好教材。選擇書籍時(shí),務(wù)必注意該書是不是從一開始就講授標(biāo)準(zhǔn)C++,并且矢志不渝地使用標(biāo)準(zhǔn)庫(kù)機(jī)制。例如,從輸入中讀取一個(gè)字符串應(yīng)該是這樣的:
            string s; // Standard C++ style
            cin >> s;
            而不是這樣的:
            char s[MAX]; /* Standard C style */
            scanf("%s",s);
            去看看那些扎實(shí)的C++程序員們推薦的書吧。記住,沒有哪本書對(duì)所有人來說都是最好的。另外,要寫地道的C++程序,而避免用C++的語法寫傳統(tǒng)風(fēng)格的程序,新瓶裝舊酒沒多大意義。(遺憾的是,目前在市面上的中文C++教材中,符合B. S的這個(gè)標(biāo)準(zhǔn)的可以說一本都沒有,大家只好到網(wǎng)上找一些英文的資料來學(xué)習(xí)了。棗譯者)

            6. 怎樣改進(jìn)我的C++程序?

            不好說,這取決于你是怎么使用該語言的。大多數(shù)人低估了抽象類和模板的價(jià)值,反過來卻肆無忌憚地使用造型機(jī)制(cast)和宏。這方面可以看看我的文章和書。抽象類和和模板的作用當(dāng)然是提供一種方便的手段建構(gòu)單根的類層次或者重用函數(shù),但更重要的是,它們作為接口提供了簡(jiǎn)潔的、邏輯性的服務(wù)表示機(jī)制。

            7. 語言的選擇是不是很重要?

            是,但也別指望奇跡。很多人似乎相信某一種語言能夠解決他們?cè)谙到y(tǒng)開發(fā)中遇到的幾乎所有問題,他們不斷地去尋找完美的編程語言,然后一次次的失敗,一次次的沮喪。另外一些人則將編程語言貶為無關(guān)緊要的細(xì)節(jié),把大把大把的銀子放在開發(fā)流程和設(shè)計(jì)方法上,他們永遠(yuǎn)都在用著COBOL, C和一些專有語言。一種優(yōu)秀的語言,例如C++,能幫助設(shè)計(jì)者和程序員做很多事情,而其能力和缺陷又能夠被清楚地了解和對(duì)待。

            8. ANSI/ISO標(biāo)準(zhǔn)委員會(huì)是不是糟蹋了C++?

            當(dāng)然不是!他們(我們)的工作很出色。你可以在一些細(xì)節(jié)上找些歪理來挑刺,但我個(gè)人對(duì)于這種語言以及新的標(biāo)準(zhǔn)庫(kù)可是欣欣然。ISO C++較之C++的以前版本更出色更有條理。相對(duì)于標(biāo)準(zhǔn)化過程剛剛開始之初,你今天可以寫出更優(yōu)雅、更易于維護(hù)的C++程序。新的標(biāo)準(zhǔn)庫(kù)也是一份真正的大禮。由于標(biāo)準(zhǔn)庫(kù)提供了strings, lists, vectors, maps以及作用于其上的基本算法,使用C++的方式已經(jīng)發(fā)生了巨大的變化。

            9. 你現(xiàn)在有沒有想刪除一些C++特性?

            沒有,真的。問這些問題的人大概是希望我回答下面特性中的一個(gè):多繼承、異常、模板和RTTI。但是沒有它們,C++就是不完整的。在過去的N年中,我已經(jīng)反復(fù)考慮過它們的設(shè)計(jì),并且與標(biāo)準(zhǔn)委員會(huì)一起改進(jìn)了其細(xì)節(jié),但是沒有一個(gè)能被去掉又不引起大地震。
            從語言設(shè)計(jì)的角度講,我最不喜歡的部分是與C兼容的那個(gè)子集,但又不能把它去掉,因?yàn)槟菢訉?duì)于在現(xiàn)實(shí)世界里工作的程序員們來說傷害太大了。C++與C兼容,這是一項(xiàng)關(guān)鍵的設(shè)計(jì)決策,絕對(duì)不是一個(gè)叫賣的噱頭。兼容性的實(shí)現(xiàn)和維護(hù)是十分困難的,但確實(shí)使程序員們至今受益良多。但是現(xiàn)在,C++已經(jīng)有了新的特性,程序員們可以從麻煩多多的C風(fēng)格中解脫出來。例如,使用標(biāo)準(zhǔn)庫(kù)里的容器類,像vector, list, map, string等等,可以避免與底層的指針操作技巧混戰(zhàn)不休。

            10. 如果不必和C兼容,你所創(chuàng)造的語言是不是就會(huì)是Java?

            不是,差得遠(yuǎn)。如果人們非要拿C++和Java來做比較,我建議他們?nèi)ラ喿x<The Design and Evolution of C++>,看看C++為什么是今天這個(gè)樣子,用我在設(shè)計(jì)C++時(shí)遵從的原則來檢驗(yàn)這兩種語言。這些原則與SUN的Java開發(fā)小組所持的理念顯然是不同的。除了表面語法的相似性之外,C++與Java是截然不同的語言。在很多方面,Java更像Smalltalk(譯者按:我學(xué)習(xí)Java時(shí)用的是Sun的培訓(xùn)教材,里面清楚地寫道:Java在設(shè)計(jì)上采用了與C++相似的語法,與Smalltalk相似的語義,所以可以說Java與C++是貌合神離,與Smalltalk才是心有靈犀)。Java語言相對(duì)簡(jiǎn)單,這部分是一種錯(cuò)覺,部分是因?yàn)檫@種語言還不完整。隨著時(shí)間的推移,Java在體積和復(fù)雜程度上都會(huì)大大增長(zhǎng)。在體積上它會(huì)增長(zhǎng)兩到三倍,而且會(huì)出現(xiàn)一些實(shí)現(xiàn)相關(guān)的擴(kuò)展或者庫(kù)。這是一條每個(gè)成功的商業(yè)語言都必須走過的發(fā)展之路。隨便分析一種你認(rèn)為在很大范圍內(nèi)取得了成功的語言,我知道肯定是無有例外者,而且實(shí)際上這非常有道理。

            上邊這段話是在Java 1.1推出之前寫的。我確信Java需要類似模板的機(jī)制,并且需要增強(qiáng)對(duì)于固有類型的支持。簡(jiǎn)單地說,就是為了基本的完整性也應(yīng)該做這些工作。另外還需要做很多小的改動(dòng),大部分是擴(kuò)展。1998年秋,我從James Gosling(Java語言的創(chuàng)始人棗譯者)那里得到一份建議書,說是要在Java中增加固有類型、操作符重載以及數(shù)學(xué)計(jì)算支持。還有一篇論文,是數(shù)學(xué)分析領(lǐng)域的世界級(jí)大師,伯克利大學(xué)的W. Kahan教授所寫的How Java抯 Floating-Point Hurts Everyone Everywhere(?#19988;看Java的浮點(diǎn)運(yùn)算如何危害了普天下的蕓蕓眾生敆?#35793;者),揭露了Java的一些秘密。我發(fā)現(xiàn)在電視和出版物中關(guān)于Java的鼓吹是不準(zhǔn)確的,而且氣勢(shì)洶洶,讓人討厭。大肆叫囂凡是非Java的代碼都是垃圾,這是對(duì)程序員的侮辱;建議把所有的保留代碼都用Java重寫,這是喪心病狂,既不現(xiàn)實(shí)也不負(fù)責(zé)任。Sun和他的追隨者似乎覺得為了對(duì)付微軟罪惡的?#24093;國(guó)時(shí)代?#65292;就必須如此自吹自擂。但是侮辱和欺詐只會(huì)把那些喜歡使用不同編程語言的程序員逼到微軟陣營(yíng)里去。
            Java并非平臺(tái)無關(guān),它本身就是平臺(tái)。跟Windows一樣,它也是一個(gè)專有的商業(yè)平臺(tái)。也就是說,你可以為Windows/Intel編寫代碼,也可以為Java/JVM編寫代碼,在任何一種情況下,你都是在為一個(gè)屬于某個(gè)公司的平臺(tái)寫代碼,這些代碼都是與該公司的商業(yè)利益扯在一起的。當(dāng)然你可以使用任何一種語言,結(jié)合操作系統(tǒng)的機(jī)制來編寫可供JVM執(zhí)行的程序,但是JVM之類的東西是強(qiáng)烈地偏向于Java語言的。它一點(diǎn)也不像是通用的、公平的、語言中立的VM/OS。
            私下里,我會(huì)堅(jiān)持使用可移植的C++作大部分工作,用不同的語言作余下的工作。(Java is not platform-independent, it is the platform?#65292;B. S的這句評(píng)語對(duì)于C++用戶有著很大的影響,譯者在國(guó)外的幾個(gè)新聞組里看到,有些C++高手甚至把這句話作為自己的簽名檔,以表明對(duì)Java的態(tài)度和誓死捍衛(wèi)C++的決心。實(shí)際上有很多程序員不光是把自己喜愛的語言當(dāng)成一種工具,更當(dāng)成一種信仰。棗譯者)

            posted on 2006-12-03 19:11 大龍 閱讀(186) 評(píng)論(0)  編輯 收藏 引用


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


            久久免费精品一区二区| 久久精品视频91| 久久精品国产亚洲5555| 国内精品久久久久久久涩爱| 日韩AV无码久久一区二区| 精品多毛少妇人妻AV免费久久 | 国产精品久久久久蜜芽| 久久久久97国产精华液好用吗| 97超级碰碰碰碰久久久久| 99久久免费国产精品| 久久成人18免费网站| 色婷婷久久综合中文久久一本| 久久人人超碰精品CAOPOREN | 久久乐国产精品亚洲综合 | 无码人妻久久一区二区三区蜜桃| 久久久久久噜噜精品免费直播| 一级做a爰片久久毛片看看| 中文字幕无码免费久久| 91精品国产9l久久久久| 99久久综合国产精品二区| 无码人妻少妇久久中文字幕 | 久久综合色老色| 久久99精品国产麻豆| 国产精品日韩欧美久久综合| 无夜精品久久久久久| 欧美牲交A欧牲交aⅴ久久| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 久久婷婷五月综合色99啪ak| 亚洲AV无码久久精品狠狠爱浪潮| 国产精品久久久久天天影视| 久久精品国产福利国产琪琪| 亚洲AV无码成人网站久久精品大| 成人亚洲欧美久久久久 | 久久成人精品视频| 日韩欧美亚洲综合久久影院Ds| 久久精品www人人爽人人| 要久久爱在线免费观看| 99久久免费国产精精品| 91麻豆国产精品91久久久| 久久99国产精品成人欧美| 精品久久久久久无码专区不卡|