• <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ì)研究部門(mén)負(fù)責(zé)人,AT&T、貝爾實(shí)驗(yàn)室和ACM成員。1979年,B. S開(kāi)始開(kāi)發(fā)一種語(yǔ)言,當(dāng)時(shí)稱(chēng)為揅 with Class?#65292;后來(lái)演化為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(niǎo). S博士?jī)A20年心血的偉大構(gòu)想終于實(shí)現(xiàn)。但是,計(jì)算技術(shù)的發(fā)展一日千里,就在幾年前人們還猜想C++最終將一統(tǒng)天下,然而隨著Internet的爆炸性增長(zhǎng),類(lèi)似Java、C#等新的、現(xiàn)代感十足的語(yǔ)言咄咄逼人,各種Script語(yǔ)言更是如雨后春筍紛紛涌現(xiàn)。在這種情況下,人們不禁有些惶恐不安。C++是不是已經(jīng)過(guò)時(shí)了呢?其前景如何?標(biāo)準(zhǔn)C++有怎樣的意義?應(yīng)該如何學(xué)習(xí)?我們不妨看看B. S對(duì)這些問(wèn)題的思考。以下文字是譯者從Stroustrup1998年之后發(fā)表的若干文章、談話筆記中精選出來(lái)的,由于出處不一,內(nèi)容多有重復(fù)。為保持完整,亦一并譯出。以下內(nèi)容選自B. S在自己主頁(yè)上發(fā)表的FAQ。

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

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

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

            這要看你說(shuō)的?#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è)一兩年是不足為奇的。那么是不是說(shuō)這就是學(xué)習(xí)C++所需要的時(shí)間呢?也許再翻一番,我想打算成為更出色的設(shè)計(jì)師和程序員最起碼也要這么長(zhǎng)的時(shí)間。如果學(xué)習(xí)一種新的語(yǔ)言不能使我們的工作和思想方式發(fā)生深刻的變革,那又何苦呢?和成為一個(gè)鋼琴家或者熟練掌握一門(mén)外語(yǔ)相比,學(xué)習(xí)一種新的、不同的語(yǔ)言和編程風(fēng)格還算是簡(jiǎn)單的。

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

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

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

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

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

            這取決于你的基礎(chǔ)和學(xué)習(xí)動(dòng)機(jī)。如果你是個(gè)初學(xué)者,我想你最好找個(gè)有經(jīng)驗(yàn)的程序員來(lái)幫助你,要不然你在學(xué)習(xí)和實(shí)踐中不可避免的犯下的種種錯(cuò)誤會(huì)大大地打擊你的積極性。另外,即使你的編譯器配備了充足的文檔資料,一本C++書(shū)籍也永遠(yuǎn)是必不可少的,畢竟文檔資料不是學(xué)習(xí)編程思想的好教材。選擇書(shū)籍時(shí),務(wù)必注意該書(shū)是不是從一開(kāi)始就講授標(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++程序員們推薦的書(shū)吧。記住,沒(méi)有哪本書(shū)對(duì)所有人來(lái)說(shuō)都是最好的。另外,要寫(xiě)地道的C++程序,而避免用C++的語(yǔ)法寫(xiě)傳統(tǒng)風(fēng)格的程序,新瓶裝舊酒沒(méi)多大意義。(遺憾的是,目前在市面上的中文C++教材中,符合B. S的這個(gè)標(biāo)準(zhǔn)的可以說(shuō)一本都沒(méi)有,大家只好到網(wǎng)上找一些英文的資料來(lái)學(xué)習(xí)了。棗譯者)

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

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

            7. 語(yǔ)言的選擇是不是很重要?

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

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

            當(dāng)然不是!他們(我們)的工作很出色。你可以在一些細(xì)節(jié)上找些歪理來(lái)挑刺,但我個(gè)人對(duì)于這種語(yǔ)言以及新的標(biāo)準(zhǔn)庫(kù)可是欣欣然。ISO C++較之C++的以前版本更出色更有條理。相對(duì)于標(biāo)準(zhǔn)化過(guò)程剛剛開(kāi)始之初,你今天可以寫(xiě)出更優(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)在有沒(méi)有想刪除一些C++特性?

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

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

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

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

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


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


            久久久久亚洲Av无码专| 久久精品国产清自在天天线| 国产欧美一区二区久久| 国产精品久久久久国产A级| 青青青伊人色综合久久| 中文字幕无码久久久| 国产麻豆精品久久一二三| 久久福利片| 久久超碰97人人做人人爱| 合区精品久久久中文字幕一区| 国内精品久久久久久久久电影网| 久久精品国产99国产精偷| 女同久久| 亚洲国产成人久久综合碰碰动漫3d| 色综合久久88色综合天天 | 国产精品一区二区久久| 久久亚洲AV无码精品色午夜麻豆 | 久久久一本精品99久久精品88| 国产精品久久亚洲不卡动漫| 精品国产日韩久久亚洲| 国产精品99久久不卡| 国产91久久精品一区二区| 少妇熟女久久综合网色欲| 久久综合色区| 久久AⅤ人妻少妇嫩草影院| 久久久久久狠狠丁香| 国内精品久久久久影院日本| 中文字幕亚洲综合久久菠萝蜜| 成人久久精品一区二区三区 | 国内精品久久久久久99| 久久青青色综合| 久久丫忘忧草产品| 久久精品国产色蜜蜜麻豆| 国内精品久久久久影院薰衣草| 99久久精品免费看国产一区二区三区| 老司机午夜网站国内精品久久久久久久久 | 久久精品国产免费一区| 久久国产精品久久精品国产| 国产成人精品白浆久久69| 久久精品九九亚洲精品| 91精品国产综合久久久久久|