色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 入門(mén)指導(dǎo) > 【討論】C++程序員是否該掌握某種匯編語(yǔ)言?

【討論】C++程序員是否該掌握某種匯編語(yǔ)言? 時(shí)間:2010-09-13      來(lái)源:未知

導(dǎo)語(yǔ):日前網(wǎng)絡(luò)上關(guān)于C++程序員是否應(yīng)該對(duì)匯編語(yǔ)言有一定的掌握程度的問(wèn)題討論比較激烈。反對(duì)的觀點(diǎn)大致有幾點(diǎn): 1.對(duì)于普通軟件開(kāi)發(fā)人員來(lái)講,關(guān)注于上層實(shí)現(xiàn),關(guān)注于功能和產(chǎn)品才是主要,匯編也用不到;2.很多的C++程序員不懂匯編,也成為了某公司某項(xiàng)目組主程序、核心研發(fā),因此匯編可以不學(xué)不用;3.絕大多數(shù)C++程序員還是在做上層開(kāi)發(fā),絕大多數(shù)項(xiàng)目也是上層開(kāi)發(fā),不了解底層也能賺到大錢,而且是更多的錢;4.做底層,比如:逆向、破解、寫(xiě)病毒等,很多致力于這層的程序員,感覺(jué)整天昏天暗地,無(wú)數(shù)的重復(fù)勞動(dòng)也沒(méi)賺到大錢,覺(jué)得沒(méi)意義;5.對(duì)于做C#、Java、WEB等領(lǐng)域的程序員們,大多數(shù)不會(huì)去關(guān)注底層實(shí)現(xiàn),他們照樣過(guò)得很好,以此類推,匯編也是可以不掌握的;6.匯編語(yǔ)言幾乎是不跨平臺(tái)的,于是就算掌握了某個(gè)平臺(tái)的匯編,但在匯編語(yǔ)言上,例如語(yǔ)法、機(jī)制等還是有局限性。

本文作者作為一名C++程序員也參與了討論。作為站在支持一方,他就上面幾種反對(duì)的觀點(diǎn)的看法(可以總體分為幾個(gè)關(guān)鍵點(diǎn):利益、收入和興趣)以及個(gè)人的體會(huì)分享了看法,有一定參考價(jià)值。

以下是根據(jù)他的文章整理而成的內(nèi)容:

從上面幾種反對(duì)的觀點(diǎn)來(lái)看,可以總體分為幾個(gè)關(guān)鍵點(diǎn):利益、收入和興趣。我不打算將這三個(gè)關(guān)鍵點(diǎn)分別進(jìn)行針對(duì)性闡述,因?yàn)樗鼈冎g都是息息相關(guān)分不開(kāi)的。對(duì)于利益和收入上來(lái)講,的確是有很多公司的高職位且收入不錯(cuò)的程序員并不了解匯編和底層,這樣也不代表他們沒(méi)有能力,而往往他們是非常有能力的人。這樣一來(lái)似乎和我個(gè)人的支持類的觀點(diǎn)有所沖突,但我認(rèn)為這個(gè)沖突可以用追求二字來(lái)化解。為什么可以用追求來(lái)化解呢?因?yàn)樽非罂梢允侨魏晤I(lǐng)域、任何方向、任何目的和任何標(biāo)準(zhǔn)的,因此也就是我前面所說(shuō)的,歸結(jié)到根本,掌握不掌握都沒(méi)有對(duì)錯(cuò)。

我們進(jìn)入這個(gè)行業(yè),從事了編程工作(大多數(shù)程序員都是編程開(kāi)發(fā)做起的)。我相信很多程序員的初衷,都是對(duì)編程開(kāi)發(fā)有很大的興趣,興趣驅(qū)使著我們熬夜,驅(qū)使著我們研究, 驅(qū)使著我們進(jìn)步。對(duì)于C++程序員,我相信興趣占有很大的比重。那么,我們來(lái)舉幾個(gè)例子:

你應(yīng)該看過(guò)《深入C++對(duì)象模型》這本書(shū)吧,這是一本非常細(xì)致和美妙的書(shū),我想你應(yīng)該有這樣的感受。那么在此基礎(chǔ)之上,你有過(guò)更多的思考嗎?這本書(shū)里都是以實(shí)例和理論來(lái)進(jìn)行講解的,實(shí)例是以C++語(yǔ)言進(jìn)行描述的。于是你是否有想知道在具體的編譯器和平臺(tái)下的這樣一些疑問(wèn):

1.this指針是怎么傳遞進(jìn)成員函數(shù)的?成員函數(shù)和普通函數(shù)以及靜態(tài)成員函數(shù)有何區(qū)別和聯(lián)系?

2.透過(guò)語(yǔ)法,成員函數(shù)和類在內(nèi)存中有什么聯(lián)系?對(duì)象和成員函數(shù)有何種聯(lián)系?

3.函數(shù)間的調(diào)用原理,是怎么實(shí)現(xiàn)的?

4.__cdecl、__stdcall、__thiscall和__fastcall這幾種函數(shù)調(diào)用方式,在本質(zhì)上有什么區(qū)別?具體是怎么實(shí)現(xiàn)的?

5.虛函數(shù)、多態(tài)和繼承在本質(zhì)上的體現(xiàn),以及這些機(jī)制在底層是怎么實(shí)現(xiàn)的?

除此之外,你在學(xué)習(xí)和使用C++的時(shí)候,我想你還會(huì)在乎一些細(xì)節(jié),例如:

1).遞歸函數(shù)一定會(huì)導(dǎo)致低效?編譯器針對(duì)遞歸函數(shù)會(huì)不會(huì)有什么樣的優(yōu)化?你怎么知道這些優(yōu)化細(xì)節(jié)?

2).對(duì)于這句代碼:int b = a > 0 ? 100 : 200; // int a; 編譯器會(huì)有什么細(xì)節(jié)上的優(yōu)化?這句代碼會(huì)有比較并跳轉(zhuǎn)的過(guò)程嗎?

3).對(duì)于這樣的代碼:

view plaincopy to clipboardprint?

1.#include <stdio.h> 
        2.int a = 10; 
        3.int main( void ) 
        4.{ 
        5. printf( "%d", a ); 
        6. return 0; 
        7.}

在VC下,開(kāi)啟全局優(yōu)化,全局變量a還存在嗎?你怎么通過(guò)本質(zhì)的論證來(lái)證明?

4).對(duì)于:float a = 100; int b = a / 30; 在VC下,你會(huì)不會(huì)懷疑這兩句代碼背后會(huì)存在函數(shù)調(diào)用?如果有,調(diào)用了什么函數(shù)?為什么?

5).對(duì)于__declspec( thread ) int g_nNum = 0; 你知道g_nNum++;這句代碼背后的具體實(shí)現(xiàn)機(jī)制嗎?

6).對(duì)于調(diào)試,你會(huì)怎么根據(jù)自己記錄的程序崩潰時(shí)的堆棧現(xiàn)場(chǎng)及其它信息來(lái)錯(cuò)誤跟蹤查找呢?

7).對(duì)于開(kāi)發(fā)游戲來(lái)說(shuō),你怎么知道外掛是怎么修改游戲程序的,修改了哪個(gè)地方呢?

8).你要怎么熟悉編譯器的優(yōu)化細(xì)節(jié),怎么寫(xiě)出適應(yīng)它的代碼,怎么寫(xiě)出比它優(yōu)化得更好的代碼?

還有很多這樣上層開(kāi)發(fā)的例子,這里就不一一列舉了。從上面列舉的這些疑問(wèn),我想作為一名C++程序員,熱愛(ài)編程開(kāi)發(fā)的程序員來(lái)講,你都想知道其中的原委。作為上層開(kāi)發(fā)者,是應(yīng)該關(guān)注上層的功能開(kāi)發(fā)和產(chǎn)品方面的東西。但是我個(gè)人覺(jué)得,本著技術(shù),本著這份熱愛(ài),本著自身的技術(shù)發(fā)展,了解更底層一些,有助于上層開(kāi)發(fā)的通透性,以及全局的掌控力度。從我個(gè)人的感受來(lái)講,當(dāng)把握了關(guān)鍵細(xì)節(jié)以及全局設(shè)計(jì)之后,任何地方出了問(wèn)題,都能很及時(shí)的反應(yīng)并予以追查和處理。在當(dāng)前的編譯器技術(shù)上,已經(jīng)非常強(qiáng)大了,很多細(xì)節(jié)可以放心的交給編譯器來(lái)優(yōu)化和處理。但是我想,編譯器不是萬(wàn)能的,人才是智能的。掌握不是必然,但掌握了會(huì)更好。

對(duì)于初學(xué)者乃至工作了一定時(shí)間的程序員,對(duì)于C++,很多處于C++語(yǔ)法的層面,在語(yǔ)法上的條條款款使用得得心應(yīng)手,問(wèn)其本質(zhì),可能就缺乏一二了。我個(gè)人的經(jīng)歷來(lái)看,在掌握語(yǔ)法之后,在向下關(guān)注一下語(yǔ)法背后的具體實(shí)現(xiàn),會(huì)通透很多。你會(huì)在內(nèi)存上、數(shù)據(jù)上和程序的各種底層運(yùn)行機(jī)制上會(huì)有深刻的認(rèn)識(shí)。這也就是為什么去海邊玩兒,還要潛水去看看海底世界。錯(cuò)過(guò)了海底,你會(huì)失去很多精彩,而這些精彩我想也是作為程序員應(yīng)有的追求之一。

對(duì)于Java、C#以及WEB類領(lǐng)域的程序員,我想?yún)R編可能相對(duì)遙遠(yuǎn)一些。在這方面的關(guān)注也會(huì)相對(duì)少一些,但結(jié)合前面的觀點(diǎn),作為程序員這個(gè)角色,都是讓自己的程序在機(jī)器上面跑起來(lái),那么我想這之間的諸多底層的疑問(wèn)可以作為程序員的一種興趣來(lái)研究。目的也是為了讓自己更通透,更熟悉自己的平臺(tái)。我不知道怎么表達(dá)通透二字,就我個(gè)人的感受就是,能夠從現(xiàn)象聯(lián)系到本質(zhì)實(shí)現(xiàn),并且能夠從本質(zhì)實(shí)現(xiàn)勾勒出一幅很清晰生動(dòng)的圖像在腦子里,一切都一目了然盡收眼底。有點(diǎn)居高臨下,望長(zhǎng)城內(nèi)外,惟余莽莽的那種寬廣的感觸。

對(duì)于本身就處于底層開(kāi)發(fā)的程序員來(lái)說(shuō),無(wú)可厚非,掌握匯編就是必須的了。但是澄清一點(diǎn),本文的觀點(diǎn)更多的是從興趣和通透性上出發(fā),對(duì)于底層開(kāi)發(fā)者可能會(huì)覺(jué)得底層有一定的枯燥,特別是整天破解、逆向等工作,非常多的體力活,從我?guī)啄甑臉I(yè)余破解和逆向經(jīng)驗(yàn)來(lái)看的確是這樣的。但是我覺(jué)得,破解和逆向只是領(lǐng)域之一,我之所以破解和逆向,很多時(shí)候是處于興趣和為了對(duì)上層進(jìn)行更本質(zhì)和合理的解釋。所以,上層和底層結(jié)合,才是我的根本目的,也是本文想推崇的一種思路。

綜上所述,我的觀點(diǎn)是C++程序員乃至程序員,不管是作為興趣還是工作,掌握或者了解一下匯編都是有一定必要的,但不是強(qiáng)制性的,也正所謂需求和追求不盡相同罷了。因此,不要問(wèn)別人到底是否應(yīng)該關(guān)注一下底層,掌握一下某種匯編語(yǔ)言,答案很明顯。

上一篇:2016年50家嵌入式開(kāi)發(fā)薪資較高的公司

下一篇:學(xué)習(xí)linux幾點(diǎn)忠告

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見(jiàn)科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5京公海網(wǎng)安備11010802025203號(hào)

回到頂部

主站蜘蛛池模板: 韩国久久久久无码国产精品 | 无遮挡吃胸膜奶免费网站 | 国产寡妇色xxⅹ交肉视频 | 老头玩小嫩奶陈晴晴老刘 | 青青草成人色情视频网 | 黑人巨摘花第一次出血 | 奇米色播 | 国产精品亚洲色婷婷99久久精品 | 久久精品一二三四 | 男人天堂视频在线 | 爱爱视频久久 | 亚洲日韩国产av中文字幕 | 人人妻人人做人人爽 | 精品无码综合一区二区三区 | 久久久久无码精品国产情侣 | 亚洲午夜爱爱香蕉片 | JAPANESE日本人妻共享 | 三年成全免费高清大全 | 精品熟人妻一区二区三区四区不卡 | 午夜欧美日韩精品久久久久久 | 五月香丁激情欧美啪啪 | 亚洲成αv人片在线观看 | 国产熟妇与子伦hd | 亚洲av无码不卡久久 | 在线观看国产成人av天堂 | 亚洲涩涩视频 | 国产a在亚洲线播放 | 麻豆亚洲高清无矿砖码区 | 久热中文字幕在线精品观 | 最新国产一级片 | 亚洲成AV人片天堂网久久 | 无码人妻丰满熟妇区五十路百度 | 欧美乱码卡1卡2卡三卡四卡 | 日本熟妇色一本在线观看 | 日韩日日 | 日本不卡无码二区三区 | 狂野欧美激情性XXXX在线观看 | 日韩在线中文高清在线资源 | 狠狠欧美 | 亚洲AV无码一区二区三区系列 | 无码专区WWW无码专区网网站 |