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

            歲月流轉(zhuǎn),往昔空明

            C++博客 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
              118 Posts :: 3 Stories :: 413 Comments :: 0 Trackbacks

            ?扯了這么多,再次回到開(kāi)始,C++有那么重要么?
            ?是或者不是,這個(gè)答案并不重要,而我也不能正確地給出答案。如果真要說(shuō)我只能刷刷奸猾,告訴大家“因人而異”。
            ?重要的是,我們用什么樣的思路,用什么樣的態(tài)度來(lái)衡量、評(píng)價(jià)、解決這個(gè)問(wèn)題。
            ?下面一段又是個(gè)老生常談,隨便到哪個(gè)搜索引擎上都能搜到一堆的話題:C++是怎么來(lái)的,它為什么而設(shè)計(jì)的,實(shí)際上人們又拿它來(lái)做什么,它有什么優(yōu)缺點(diǎn)。我接觸編程6年,其中C++占到4年,而且是我用的最好,也是最喜歡的語(yǔ)言。每次說(shuō)到歷史這個(gè)話題我總是有一大堆羅嗦的話要說(shuō)。但是實(shí)際上我對(duì)C++的感覺(jué)到的最大的特點(diǎn),卻是書(shū)多,相關(guān)的書(shū)非常多,經(jīng)典的著作相比較其它語(yǔ)言而言也算得上是最豐產(chǎn)的了。書(shū)多不外乎三種原因,一是流行面廣,而是流行時(shí)間長(zhǎng),三是難度大。C++就那一點(diǎn)點(diǎn)編譯器規(guī)則,一本ISO C++的手冊(cè)搭配其發(fā)明者Bjarne Stroustrup的《The C++ Programming Language》就把語(yǔ)言機(jī)制講的很清楚了,為什么它又有那么多的書(shū)來(lái)闡述一些所謂的Advanced Topics呢?因?yàn)殪`活。C++極度靈活,這種靈活并不是動(dòng)態(tài)語(yǔ)言的那種靈活,而是在于它承載了太多的需要,導(dǎo)致它變得極度靈活化,靈活的負(fù)面意思就是太多,太復(fù)雜,使得人們太容易混淆與各種語(yǔ)言機(jī)制的Chaos中。似乎南師大的榮耀教授在采訪BS的時(shí)候還是BS在什么地方說(shuō)過(guò),如果C++要像現(xiàn)在的老師們這樣教他自己都不會(huì)去學(xué)。
            ?然后BS就舉了一個(gè)Hello World的例子來(lái)說(shuō)明他所認(rèn)為的啟蒙C++與一般授課使用的C++差別在什么地方,并以此說(shuō)明C++其實(shí)并不復(fù)雜。好吧,我們就承認(rèn)純正的C++并不難學(xué)。但是不能忘了,我們的C++的對(duì)與錯(cuò)不是由我們決定的,而是編譯器。工程上用的C++編譯器絕對(duì)不會(huì)說(shuō)不支持單純的,蹩腳的C-Style(不是說(shuō)CStyle蹩腳,而是說(shuō)C中蹩腳的部分),不會(huì)不讓你使用指針訪問(wèn)內(nèi)存(指非必要的訪問(wèn),例如動(dòng)態(tài)數(shù)組),甚至不會(huì)拒絕你使用一些類(lèi)似于Hacker的代碼來(lái)完成一些極具技巧性和挑戰(zhàn)性的工作。好吧,既然C++都支持,那么便不能拒絕你寫(xiě)出有此類(lèi)特性的代碼。更加致命的事情是,它的很多高階機(jī)制,都是建立在底層機(jī)制基礎(chǔ)上。最明顯的例子就是Boost和STL。一旦編譯出錯(cuò),那么它的提示可能出在任何層面上,為了解決這些問(wèn)題便又需要去學(xué)習(xí)那些較為底層的知識(shí)。C++的大坑就是這樣一點(diǎn)一點(diǎn)挖出來(lái)的。
            ?C++可供選擇的東西太多。所以BS就出了一本書(shū),叫《The Design and Evolution of C++》,專門(mén)討論了每種機(jī)制在C++當(dāng)中被采納的背景、他們當(dāng)時(shí)的考慮、這些機(jī)制的適用范圍。雖然說(shuō)這本書(shū)屬于“入門(mén)教材”的行列,但是實(shí)際上我更加傾向于將這本書(shū)看成是在你品嘗了C++大餐后的甜點(diǎn)。也就是說(shuō),盡管看起來(lái)有道理,但是作為預(yù)備知識(shí)同樣不適合,于是你只能一邊牢記大量的語(yǔ)言機(jī)制,一邊應(yīng)用,一邊體驗(yàn),一邊讀那些專著來(lái)糾正你的錯(cuò)誤并填補(bǔ)你的不足,不可能有機(jī)會(huì)讓你只走你需要走的路,大量的知識(shí)構(gòu)成了一個(gè)扁平的知識(shí)框架,為了達(dá)到相對(duì)自由運(yùn)用的水平,你需要學(xué)習(xí)的知識(shí)、需要獲得的體驗(yàn)、需要彌補(bǔ)的弱點(diǎn)太多了。
            ?
            ?如果說(shuō),只有C++可選的話,那么也就沒(méi)什么辦法了,大家只能去學(xué)那個(gè)能讓人死去活來(lái)的東西。但是實(shí)際上我們并不如我們自己認(rèn)為的那樣無(wú)奈。大量的語(yǔ)言,總有比C++更加適合一般學(xué)生的。靈活的腳本語(yǔ)言Python/VBSP/JSP/Perl/Ruby/Lisp,半動(dòng)態(tài)的(我是這么叫的。。。)Java/C#/VB/VB.NET/CLI,高效的 Ada/Fortran,桌面開(kāi)發(fā)用功能強(qiáng)大的Delphi(人家的語(yǔ)言叫Object Pascal,但是也就那么一個(gè)編譯器,所以無(wú)所謂了),這其中的絕大部分語(yǔ)言學(xué)習(xí)難度都要低于C++。
            ?一般來(lái)說(shuō),有不少學(xué)校對(duì)于除了與電子和信息相關(guān)的專業(yè)都選擇的是VB(以下說(shuō)的VB均不指.NET)/VFP作為計(jì)算機(jī)二級(jí)的突破口。而這點(diǎn)教學(xué),往往就成為了一個(gè)工科研究生僅有的編程基礎(chǔ)。VFP這種被淘汰的使用范圍狹隘的環(huán)境不討論,VB作為RAD來(lái)說(shuō)著實(shí)是個(gè)不錯(cuò)的選擇。但是為應(yīng)付計(jì)算機(jī)二級(jí)所教授的課程來(lái)看,并不能教會(huì)除了語(yǔ)法外的什么,況且所使用的VB6嚴(yán)格來(lái)說(shuō)是Message Driven兼Object Based的一個(gè)開(kāi)發(fā)環(huán)境,這都不利于學(xué)生從程序結(jié)構(gòu)的高度(不是數(shù)據(jù)結(jié)構(gòu))去思考所撰寫(xiě)的代碼。在短暫的學(xué)習(xí)以后我們會(huì)誤認(rèn)為界面框架就是軟件的構(gòu)架,于是我們便可以看見(jiàn)在畢業(yè)設(shè)計(jì)時(shí)候,那數(shù)百行可憐的代碼都擁擠于Command1Click這樣的字里行間。Object Based的語(yǔ)言既不能教會(huì)我們用過(guò)程的方式開(kāi)發(fā),也不能支持面向?qū)ο蟮某绦蛟O(shè)計(jì)方法。這些都是VB對(duì)進(jìn)階學(xué)習(xí)的最大障礙。
            ?但是畢竟我們熟悉了VB的語(yǔ)法,知道了程序設(shè)計(jì)語(yǔ)言是怎么一回事。這已經(jīng)花費(fèi)了沒(méi)有接觸過(guò)編程的同學(xué)的相當(dāng)長(zhǎng)的時(shí)間,如果說(shuō)我們還要去牽扯入C++那可怕的內(nèi)存海洋中,還要被C++那恐怖的前后++所威脅,但是實(shí)際上我們不需要它也能過(guò)得很好,我們是不是有些冤大頭了?
            ?實(shí)際上,對(duì)于研究生階段,最重要的就是要讓我們學(xué)到的那一點(diǎn)點(diǎn)東西在盡可能少學(xué)別的東西的情況下發(fā)揮最大的價(jià)值。
            ?前面我把VB一通好臭,我想VB都會(huì)不理我了。那么我們就另結(jié)新歡吧。找誰(shuí)呢?

            ?VB的弱點(diǎn)已經(jīng)有點(diǎn)數(shù)了(很有數(shù)的話你我就不會(huì)在這兒瞎混了,早被M$請(qǐng)去了),那么便要去找一門(mén)結(jié)構(gòu)性比VB好,概念又不比VB艱深太多的語(yǔ)言(不是說(shuō)它不能艱深,而是說(shuō),不理解那些艱深的東西我們一樣能用的挺歡,最主要的是用起來(lái)要舒服,什么亂七八糟的內(nèi)存管理問(wèn)題,讓編譯器和RTL/VM去替你擦屁股吧)。JAVA/C#/Delphi/VB.net都算是不錯(cuò)的選擇。雖然從我的角度來(lái)說(shuō),很不喜歡,非常不喜歡,特別不喜歡微軟,但是我仍然將C#作為我的第一建議。
            ?因?yàn)镃#的開(kāi)發(fā)環(huán)境好,速度也還算不錯(cuò),桌面開(kāi)發(fā)、企業(yè)級(jí)開(kāi)發(fā)都很方便,微軟的支持也很到家,但是對(duì)面向?qū)ο蟮闹С钟行?qiáng)迫性了,可能初期會(huì)有些難度。
            ?JAVA跨平臺(tái),工業(yè)基礎(chǔ)好,從嵌入式到大型的分布式系統(tǒng)都能拿來(lái)做,但除了和C#一樣的不利因素外,開(kāi)發(fā)環(huán)境和程序庫(kù)要比C#難用一些。
            ?Delphi對(duì)對(duì)象和過(guò)程的程序設(shè)計(jì)方法都能支持良好,語(yǔ)言干凈利索,檢測(cè)嚴(yán)格,能培養(yǎng)出一個(gè)人好的編程習(xí)慣,但是它以后用途偏窄。
            ?VB.NET就不用說(shuō)(人家都叫VB了),跟VB比較接近,語(yǔ)法跨越小,但是太小了會(huì)有學(xué)習(xí)惰性,會(huì)低估語(yǔ)義和程序設(shè)計(jì)方法上的差異,弄點(diǎn)不倫不類(lèi)的東西出來(lái)。

            ?C++在程序控制上的能力,基本上都有了,而在在企業(yè)級(jí)開(kāi)發(fā)方面,C++的弱勢(shì)也得到了新語(yǔ)言不錯(cuò)的彌補(bǔ)。C++的另一個(gè)優(yōu)勢(shì),效率方面呢?
            ?MATLAB。這個(gè)工具生來(lái)就是為了計(jì)算。作為研究生的工程運(yùn)算來(lái)說(shuō),無(wú)論效率上還是功能上來(lái)說(shuō),通常都是夠用的,而且也非常方便,避免了自行編程所面對(duì)的極為復(fù)雜的算法選擇、編寫(xiě)、調(diào)試的問(wèn)題(工程計(jì)算程序的調(diào)試難度是很大的)。
            ?再加上VBA/VBSP。為什么要帶上VBA/VBSP?其實(shí)很多你需要完成的功能,往往都在軟件中可以通過(guò)調(diào)用某些組件來(lái)完成。除了脫機(jī)編寫(xiě)完整的應(yīng)用程序以外,對(duì)于大部分的問(wèn)題的解來(lái)說(shuō),都可以直接使用系統(tǒng)所提供的環(huán)境方便的完成。使用這個(gè)環(huán)境所采用的語(yǔ)言,就是軟件的腳本宏,而現(xiàn)有很多的軟件所采用的宏語(yǔ)言都是VBA/VBSP。它的語(yǔ)法、架構(gòu)、程序的設(shè)計(jì)都與VB非常接近,用來(lái)快速的構(gòu)造原形或?yàn)榫帉?xiě)實(shí)驗(yàn)提供幫助的程序來(lái)說(shuō),都能比較好的完成任務(wù)。

            ?好了,在一門(mén)通用語(yǔ)言+VBSP+MATLAB的幫助下(VBSP基本上是白送的,MATLAB經(jīng)常是必須掌握的,如果你不需要掌握MATLAB,那么你的工作很可能也用不到C++的高效率),你還需要C++么?
            ?如果你的答案是肯定的,那么我只能相信這個(gè)世界真的有愛(ài)情存在。我欽佩你的執(zhí)著。那么請(qǐng)?jiān)试S我告訴你我走過(guò)的路。
            ?《The C++ Primer》/《The C++ Primer Plus》??不是一本書(shū),但是都是入門(mén)的。別為它的厚度嚇倒,能看多少算多少,不難的。
            ?《The C++ Programming Language》???手冊(cè)。隨身必備,供查閱。
            ?Platform SDK???????MSDN是個(gè)不錯(cuò)的選擇,講解相近,查閱方便。
            ?
            ?《Thinking in C++》??????從C++開(kāi)始,接觸OOP的深入解析
            ?《Effective C++》《More Effective C++》
            ?《Exceptional C++》《More Exceptional C++》??技巧、技術(shù)和技藝,編寫(xiě)C++程序必須注意的若干事項(xiàng)。
            ?
            ?基本上到這里就差不多了,后面的就是諸如泛型、并發(fā)、元編程、模版、設(shè)計(jì)模式一類(lèi)的話題了,不同的話題都有不同的問(wèn)題背景和應(yīng)用范圍,這些往往對(duì)于大部分語(yǔ)言來(lái)說(shuō)都是相同或者類(lèi)似的。恭喜你,你們的愛(ài)情長(zhǎng)跑到站了。
            ?從此以后,研究生和C++過(guò)著磕磕碰碰卻幸福的生活。

            posted on 2006-10-13 21:32 空明流轉(zhuǎn) 閱讀(1929) 評(píng)論(6)  編輯 收藏 引用

            評(píng)論

            # re: 研究生,請(qǐng)你拒絕C++的愛(ài)(下) 2006-10-18 17:39 duanxingchuan
            我也差點(diǎn)被C++被害苦了!!!!!!幸好我覺(jué)悟的早!  回復(fù)  更多評(píng)論
              

            # re: 研究生,請(qǐng)你拒絕C++的愛(ài)(下) 2006-10-20 16:50 wbt
            智商低的還是別玩,免得自己被玩,哈哈  回復(fù)  更多評(píng)論
              

            # re: 研究生,請(qǐng)你拒絕C++的愛(ài)(下) 2007-05-12 16:09 lovedday
            我覺(jué)得你神話了C++的難度,C++固然很復(fù)雜,但如果你狠下心來(lái)研究,也一定可以掌握的,一門(mén)語(yǔ)言再?gòu)?fù)雜都不會(huì)復(fù)雜到什么程度,夸大語(yǔ)言的作用和復(fù)雜度都是不好的,你說(shuō)C++會(huì)比編譯原理更復(fù)雜嗎?對(duì)于一個(gè)學(xué)習(xí)的人來(lái)說(shuō),最重要的是克服恐懼的心理,如果你覺(jué)得C++很難很復(fù)雜,那你就肯定學(xué)不會(huì)了。而且很多人使用C++都不用C++的那些復(fù)雜的高級(jí)特性,語(yǔ)言嘛,夠用就可以了,沒(méi)必要非得掌握它的所有語(yǔ)言特性,BS不是說(shuō)過(guò)嗎?沒(méi)人能夠徹底掌握C++。從某種意義上說(shuō),復(fù)雜并不是一件好事,我喜歡簡(jiǎn)單的東西,簡(jiǎn)單就是美,在實(shí)際的開(kāi)發(fā)過(guò)程中,效率是非常重要的,如果你對(duì)C++的復(fù)雜語(yǔ)言特性掌握的不牢固卻非要使用那些語(yǔ)言特性,那么出了錯(cuò)就會(huì)浪費(fèi)很多的時(shí)間。  回復(fù)  更多評(píng)論
              

            # re: 研究生,請(qǐng)你拒絕C++的愛(ài)(下) 2007-05-12 16:10 lovedday
            而且我覺(jué)得在計(jì)算機(jī)領(lǐng)域,掌握基礎(chǔ)知識(shí)和技術(shù)原理比研究語(yǔ)言的高級(jí)語(yǔ)法特性更重要。  回復(fù)  更多評(píng)論
              

            # re: 研究生,請(qǐng)你拒絕C++的愛(ài)(下) 2007-05-20 14:33 Jedimaster
            C++就是為妄圖重新發(fā)明世界的天才們?cè)O(shè)計(jì)的魔方。我覺(jué)得,設(shè)計(jì)第一,思路第二,算法第三,編碼第四。  回復(fù)  更多評(píng)論
              

            # re: 研究生,請(qǐng)你拒絕C++的愛(ài)(下) 2014-10-21 13:55 yuen
            看了幾次學(xué)長(zhǎng)寫(xiě)的東西,尤其是這個(gè)。
            深深覺(jué)得學(xué)長(zhǎng)說(shuō)的是正確的。如果一年前我能多看看學(xué)長(zhǎng)的東西,恐怕不會(huì)在C++上浪費(fèi)了如此多的精力和金錢(qián)。。。。。
            感謝學(xué)長(zhǎng)美文,以享莘莘工科狗!thx!  回復(fù)  更多評(píng)論
              


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


            亚洲精品无码专区久久久| 精品综合久久久久久88小说 | 99热都是精品久久久久久| 国产精品久久久久影视不卡 | 久久精品国产福利国产秒| 精品久久久久久无码免费| 婷婷久久精品国产| 99精品国产综合久久久久五月天 | 国产精品久久永久免费| 国内精品久久久久久久coent| 精品久久久久久无码不卡| 日本欧美久久久久免费播放网 | 91精品国产色综久久| 99久久综合国产精品免费| 精品亚洲综合久久中文字幕| 久久久久噜噜噜亚洲熟女综合| 亚洲精品无码久久久久| 久久国产视屏| 99久久婷婷国产一区二区| 精品无码久久久久国产| 久久久久久亚洲精品影院| 久久综合九色综合久99 | 国产精品久久永久免费| 亚洲精品蜜桃久久久久久| 欧美国产成人久久精品| 青青草原1769久久免费播放| 亚洲国产一成人久久精品| 久久亚洲天堂| 久久久久免费视频| 一本久久a久久精品综合夜夜| 亚洲国产另类久久久精品黑人| 一级做a爰片久久毛片免费陪| 国产成人无码精品久久久免费| 国产成人久久精品激情| 亚洲成色www久久网站夜月| 伊人久久大香线蕉无码麻豆 | 三级三级久久三级久久| 久久久久久久久66精品片| 99久久免费国产精品特黄| 国产精品久久久久免费a∨| 亚洲AⅤ优女AV综合久久久|