返學(xué)費(fèi)網(wǎng) > 培訓(xùn)機(jī)構(gòu) > 南寧達(dá)內(nèi)教育
南寧達(dá)內(nèi):C++至今不可替代
談到C++語(yǔ)言的難點(diǎn)和優(yōu)勢(shì),以及對(duì)C++性能的看法。在云計(jì)算時(shí)代,C++在很多關(guān)鍵業(yè)務(wù)上起到不可替代的作用。
陳抒認(rèn)為能熟練掌握技術(shù)的方法是勤動(dòng)手腦、摳細(xì)節(jié)
陳抒,擁有十年以上編程經(jīng)驗(yàn)的老程序員。目前就職于Esri研發(fā)中心。文科畢業(yè),自考計(jì)算機(jī)本科。曾做過保險(xiǎn)業(yè)務(wù)員,程序員。精通Windows/Linux平臺(tái)下的C++編程,熟悉Java,擅長(zhǎng)互聯(lián)網(wǎng)開發(fā)和基于Linux的服務(wù)器。
:你何時(shí)開始接觸計(jì)算機(jī)?身為業(yè)務(wù)員,是什么原因促使你走上編程的道路?
陳抒:自畢業(yè),再接觸電腦是從1999年開始。我天生就對(duì)科學(xué)有很強(qiáng)的好奇心,當(dāng)時(shí)我認(rèn)為人的大部分時(shí)間是工作,選擇自己喜歡的工作就是選擇自己的生活方式。結(jié)果我很適合這個(gè)行業(yè),也獲得了自己喜歡的生活。
C++不可替代
:在眾多語(yǔ)言中,你為何會(huì)首選C++,而不是其他語(yǔ)言,其中最主要的原因是什么?
陳抒:在我即將完成所有自學(xué)考試開始準(zhǔn)備畢業(yè)論文的時(shí)候。我認(rèn)識(shí)到文憑不能代表能力,必須掌握一門語(yǔ)言,才能找到工作。當(dāng)時(shí)的選擇似乎并不多,VB大行其道,VC也很普及。我的想法很簡(jiǎn)單,VC較難,會(huì)的人自然會(huì)少,競(jìng)爭(zhēng)也少。而且我對(duì)自己有信心,能學(xué)會(huì)該語(yǔ)言。
:你認(rèn)為C++最大的難點(diǎn)和優(yōu)勢(shì)是什么?
陳抒:以我經(jīng)驗(yàn)來(lái)看構(gòu)成C++學(xué)習(xí)困難有四點(diǎn):
•知識(shí)點(diǎn)廣泛而且難度高。按照幾年前Scot Mayer在Effective C++中對(duì)C++的定義來(lái)看,C++是一門多范型語(yǔ)言,包括了C、面向?qū)ο缶幊毯头盒途幊?。程序員需要正確理解很多基礎(chǔ)概念,比如,堆和棧的區(qū)別、指針、指針的指針、虛函數(shù)的內(nèi)部原理、繼承引發(fā)的對(duì)象內(nèi)存布局、多繼承引發(fā)的模棱兩可、模板以及編譯器推導(dǎo)、STL算法等。C++的內(nèi)容如此廣泛,因此每個(gè)知識(shí)點(diǎn)的學(xué)習(xí)和積累都不是件容易的事情, 自然誤用的情況常會(huì)發(fā)生。
•C++打開了直接面向操作系統(tǒng)API編程的大門,因此使用C++完成工作,很多時(shí)候需要學(xué)習(xí)大量的平臺(tái)相關(guān)的API,這些API有的非常復(fù)雜。比如被稱為噩夢(mèng)般的技術(shù),Windows提供的COM/COM+庫(kù),其實(shí)就是需要了解一大堆基礎(chǔ)知識(shí)才能操縱好。再比如:面向接口編程、虛函數(shù)表、設(shè)計(jì)模式中的工廠模式、Windows DLL地獄的由來(lái)、Windows注冊(cè)表、序列化、Windows安全、RPC、IDL語(yǔ)言、支持腳本語(yǔ)言的自動(dòng)化技術(shù)(IDispatch)、對(duì)象引用計(jì)數(shù)器,線程安全和套間和ATL模板技術(shù)等。
•而在C++的演化過程中,因?yàn)槿狈ι虡I(yè)公司的大力贊助,缺乏良好設(shè)計(jì)的跨平C++類庫(kù),多數(shù)人只能使用標(biāo)準(zhǔn)C++庫(kù),但跨平臺(tái)效果也不佳。直到近幾年Boost為代表的現(xiàn)代C++庫(kù)起到了很大的作用。同時(shí),Java程序員早就享受著非常好的支持,SUN的豐富的JDK,大量活躍的開源社區(qū)(比如Apache) 對(duì)Java的推動(dòng)也是非常明顯的。
•C++程序員成長(zhǎng)周期長(zhǎng),特別是中國(guó)很多靠做項(xiàng)目掙錢的成長(zhǎng)型企業(yè)面對(duì)選用C++作為編程語(yǔ)言會(huì)有所顧慮。
優(yōu)勢(shì)同樣很明顯:
假定程序員能很好的運(yùn)用C++,那么程序可以獲得很高的性能,消耗較少的資源。在云計(jì)算時(shí)代,C++在很多關(guān)鍵業(yè)務(wù)上起到不可替代的作用,也為這個(gè)地球節(jié)能。舉個(gè)例子,我有一次要在美國(guó)服務(wù)器上部署一個(gè)JSF編寫的網(wǎng)站,安裝GlassFish失敗是因?yàn)樘摂M機(jī)核心線程和進(jìn)程的總數(shù)被限制,只能換成C++編寫的網(wǎng)站。這臺(tái)服務(wù)器還同時(shí)運(yùn)行著C++編寫的TCP服務(wù)程序和NoSQL數(shù)據(jù)庫(kù)。
:Linux之父Linus Torvald和Google首席工程師、Go語(yǔ)言之父Rob Pike曾表示,C++比較復(fù)雜,需要扎實(shí)的編程基礎(chǔ)和期編程經(jīng)驗(yàn),沒有豐富經(jīng)驗(yàn)的程序員很難運(yùn)用自如。你對(duì)此有什么想法或觀點(diǎn)?理由是什么?
陳抒:Torvalds對(duì)這個(gè)世界貢獻(xiàn)很大,我每天都在使用Ubuntu和Git,非常感謝他。但不知道他為什么恨C++。他曾說表示如果要用面向?qū)ο笾恍栌肅#和Java,為什么需要C++。剛巧這三個(gè)語(yǔ)言我都很熟悉。我認(rèn)為僅僅是面向?qū)ο蟮脑挘珻++、Java和C#都能勝任,但是只有C++能夠同時(shí)達(dá)到C的性能。而且GCC團(tuán)隊(duì)早就用C++來(lái)實(shí)現(xiàn)C的編譯器,而Linux內(nèi)核據(jù)說使用的正是GCC編譯代碼,不知道Torvalds做何感想。
如果Go語(yǔ)言之父說將Google的關(guān)鍵服務(wù),比如搜索引擎用非C++語(yǔ)言來(lái)替代,不知道他會(huì)做何回答。每個(gè)語(yǔ)言都有其擅長(zhǎng)之處,其實(shí)我本人目前很喜歡Lisp語(yǔ)言。如果將來(lái)不再需要C++,只能說明我們的科技又有了巨大的進(jìn)步。
扎實(shí)的基礎(chǔ)=成功的階梯
:你學(xué)習(xí)過很多語(yǔ)言,并且能運(yùn)用自如,對(duì)編程新手有什么好建議嗎?
陳抒:十多年的時(shí)間讓我熟練掌握C++、Java、C#、JavaScript和Bash,但這并不是一件了不起的事情。幸運(yùn)的是我對(duì)C++的深入研究與應(yīng)用奠定了我扎實(shí)的基礎(chǔ),因此有利于學(xué)習(xí)其他高級(jí)語(yǔ)言。我對(duì)新手的建議是:
•多上 寫博客。好記性不如爛筆頭。尤其是技術(shù),非常細(xì)節(jié)。如果能夠在博客中清晰的表達(dá)出來(lái),那就說明對(duì)技術(shù)問題掌握的比較好了。
•尊重語(yǔ)言的設(shè)計(jì)原則。每個(gè)語(yǔ)言發(fā)明出來(lái)都有其設(shè)計(jì)目的,為了解決某個(gè)領(lǐng)域的問題,有其明確的設(shè)計(jì)原則。計(jì)算機(jī)科學(xué)包括算法,數(shù)學(xué),也包括語(yǔ)言。我的一些朋友,總認(rèn)為編程就是算法,結(jié)果對(duì)語(yǔ)言不認(rèn)真研究。這樣一是容易掉進(jìn)語(yǔ)言的陷阱,影響代碼質(zhì)量,二是會(huì)讓自己無(wú)法融入真正專業(yè)的技術(shù)團(tuán)隊(duì)。
:為什么你開發(fā)Java用Emacs而不是IDE?
陳抒:2006年,同事教我使用Emacs。因?yàn)橐郧懊绹?guó)公司的要求,必須手動(dòng)寫Ant腳本編譯整個(gè)Java Web項(xiàng)目,因此從IDE換成了Emacs + JDEE的開發(fā)模式。當(dāng)初自己摸索很辛苦,直到若干個(gè)月后才享受JDEE的開發(fā)模式。好處也非常明顯:
•沒有IDE可以自由的掌控自己的代碼。
•便于在服務(wù)器上遠(yuǎn)程調(diào)試代碼,因?yàn)橐磺卸际腔诿钚小?br />
•開發(fā)機(jī)器要求配置低。
•由于要手工完成構(gòu)建腳本,無(wú)論是Ant還是Maven,對(duì)Java工程的控制能力明顯增強(qiáng),為構(gòu)建大的持續(xù)集成系統(tǒng)奠定了很好的基礎(chǔ)。
:以你經(jīng)驗(yàn)來(lái)看,美國(guó)程序員和中國(guó)程序員之間最大的區(qū)別是什么?
陳抒:我和美國(guó)程序員有過一些開發(fā)項(xiàng)目的合作,就我接觸到的程序員來(lái)說,他們都很專業(yè),用VIM開發(fā)C、Java、Ruby。我也是在他們的要求下,放棄了IDE開發(fā)的習(xí)慣。后來(lái),我接觸到很多開源社區(qū)的國(guó)外程序員,用VIM和Emacs編程的非常多,這跟Unix傳統(tǒng)有很大的關(guān)系。
一般來(lái)講,美國(guó)程序員(來(lái)自世界各地在美國(guó)工作的程序員)其實(shí)并不比中國(guó)程序員聰明,但是美國(guó)文化很尊重工程師。現(xiàn)代計(jì)算機(jī)領(lǐng)域還是美國(guó)在領(lǐng)跑,學(xué)校和企業(yè)都有比較規(guī)范的編程習(xí)慣和研發(fā)傳統(tǒng),因此一個(gè)年輕的工程師在美國(guó)公司的成長(zhǎng)通常比我們快。同時(shí),在英語(yǔ)上具備較大優(yōu)勢(shì)。
:你最尊敬或崇拜的技術(shù)人是誰(shuí)?為什么?
陳抒:對(duì)我影響較大的專家或作者有C++作者Scott Mayer、Herb Sutter和Andrei Alexandrescu。COM領(lǐng)域是Don Box。C++庫(kù)是CppCMS作者Artyom。
:Esri研發(fā)中心是如何進(jìn)行Java項(xiàng)目開發(fā)管理的?
陳抒:Esri北京研發(fā)中心的總經(jīng)理Moxie先生來(lái)自美國(guó),因此按照那邊的標(biāo)準(zhǔn)要求軟件研發(fā)過程。項(xiàng)目管理采用Scrum敏捷方法,強(qiáng)調(diào)工程師的自我管理。我主要介紹一下我們的代碼評(píng)審系統(tǒng)和持續(xù)集成系統(tǒng)。
首先我們使用Git進(jìn)行代碼管理,不同于VSS、CVS、Subversion,這是個(gè)分布式版本系統(tǒng),功能極其強(qiáng)大,但是學(xué)習(xí)成本高,原理和使用技巧復(fù)雜。在此基礎(chǔ)上,采用了Gerrit進(jìn)行用戶權(quán)限管理和代碼評(píng)審管理,程序員的代碼只有經(jīng)過評(píng)審才能進(jìn)入Git倉(cāng)庫(kù)。Gerrit是Android社區(qū)的評(píng)審系統(tǒng),有很嚴(yán)謹(jǐn)?shù)墓ぷ髁?,適合于那些關(guān)注代碼質(zhì)量的團(tuán)隊(duì)。持續(xù)集成,也就是代碼入庫(kù)后,會(huì)有服務(wù)器自動(dòng)編譯代碼,運(yùn)行單元測(cè)試,產(chǎn)生報(bào)表,打包并安裝。這里面包含大量的技術(shù)細(xì)節(jié)。下面有個(gè)使用場(chǎng)景:
程序員A編寫一個(gè)Java的庫(kù),經(jīng)過代碼評(píng)審后入庫(kù),一臺(tái)Jenkins服務(wù)器發(fā)現(xiàn)代碼已經(jīng)更新,自動(dòng)從Git中獲取最新代碼,進(jìn)行編譯。這個(gè)Java庫(kù)采用Maven構(gòu)建,因此編譯后可以運(yùn)行測(cè)試用例,進(jìn)行代碼靜態(tài)掃描(使用Checkstyle、PMD、FindBugs),并將測(cè)試結(jié)果,代碼掃描結(jié)果, 測(cè)試覆蓋率等生成HTML報(bào)表發(fā)往報(bào)表服務(wù)器。如果測(cè)試通過的情況下,編譯后的jar包會(huì)被部署在Nexus服務(wù)器上,供其他程序使用。
程序員B正在開發(fā)一個(gè)Web程序,也是通過Maven構(gòu)建自己的工程,通過Maven的依賴管理很容易的就將Nexus服務(wù)器上的A寫的jar包引入到自己的工程使用。當(dāng)B的程序通過評(píng)審進(jìn)入代碼倉(cāng)庫(kù),Jenkins服務(wù)器獲取最
崇左市人氣靠前的抖音短視頻剪輯培訓(xùn)機(jī)構(gòu)名單榜首盤點(diǎn)〔排名一覽〕(視頻剪輯的素材包括哪些)
南寧精選推薦抖音短視頻剪輯培訓(xùn)人氣名單榜一覽〔排名一覽〕(手機(jī)短視頻剪輯難學(xué)嗎)
南寧有名氣的抖音短視頻剪輯培訓(xùn)機(jī)構(gòu)精選名單榜首〔排名一覽〕(短視頻剪輯有哪些注意事項(xiàng))
玉林2023年評(píng)價(jià)高的抖音短視頻剪輯培訓(xùn)機(jī)構(gòu)名單榜首一覽〔排名一覽〕(短視頻剪輯能給個(gè)人帶來(lái)收益嗎)
廣西欽州市值得推薦的抖音短視頻剪輯培訓(xùn)機(jī)構(gòu)名單榜首一覽〔排名一覽〕(跟著抖音教學(xué)做視頻剪輯能學(xué)會(huì)嗎)
只要一個(gè)電話
我們免費(fèi)為您回電