這樣比喻吧:
一個(gè)程序員,不懂匯編的閱讀和用于匯編級(jí)指令級(jí)的調(diào)試——這正如一個(gè)頂級(jí)的世界F1方程式賽車手,不懂得賽車的構(gòu)造和運(yùn)行,是不行的。
學(xué)Java的可能會(huì)說(shuō),Java高端的很,不懂匯編沒(méi)關(guān)系——是的,你開(kāi)轎車,在平整的公路上跑60碼,用自動(dòng)檔,當(dāng)然不需要知道轎車的內(nèi)部結(jié)構(gòu)是怎么樣的,離合器的工作本質(zhì)是怎么樣的,在這樣的基礎(chǔ)下,你一樣可以把車開(kāi)得很熟練。
但有一天,你沒(méi)有一切都幫你搞定的轎車了,給你一輛有問(wèn)題的車,你得自己修好它,才能逃離你當(dāng)下的環(huán)境——比如你在沙漠里。
你說(shuō)匯編重不重要,看懂它——重不重要?
學(xué)會(huì)匯編,學(xué)會(huì)的不僅是一種語(yǔ)言——還是學(xué)會(huì)了現(xiàn)代高級(jí)編程語(yǔ)言依賴運(yùn)行的底層微機(jī)結(jié)構(gòu)的原理本質(zhì)。
你說(shuō)要不要懂?來(lái)跟我重復(fù)一遍:
學(xué)會(huì)匯編,學(xué)會(huì)的不僅是一種語(yǔ)言——還是學(xué)會(huì)了現(xiàn)代高級(jí)編程語(yǔ)言依賴運(yùn)行的底層微機(jī)結(jié)構(gòu)的原理本質(zhì)。
而且,Java的虛擬機(jī),用的字節(jié)碼,也是廣義上的“匯編”,你去問(wèn)問(wèn)學(xué)Java的人,哪個(gè)會(huì)告訴你,學(xué)Java要學(xué)好,不需要懂點(diǎn)字節(jié)碼的知識(shí)的?
而且關(guān)于比匯編語(yǔ)言高級(jí)的語(yǔ)言與匯編主言兩者之間的關(guān)系,還有一個(gè)最簡(jiǎn)直和直接的比喻:
就像漢語(yǔ)(對(duì)應(yīng)高級(jí)語(yǔ)言)和英語(yǔ)(對(duì)應(yīng)于匯編語(yǔ)言)兩種不同的語(yǔ)言所寫的技術(shù)資料對(duì)于計(jì)算機(jī)編程開(kāi)發(fā)而言的重要性。
能用漢語(yǔ)寫的資料,直接能看得懂,就能解決開(kāi)發(fā)者需要的問(wèn)題,誰(shuí)還會(huì)去看英語(yǔ)寫的資料,在中國(guó)自家人面前炫耀自己的英語(yǔ)能力好??
但要是你自己看“翻譯”(對(duì)應(yīng)編譯器)的資料看得糊里糊涂的時(shí)候,為了最清楚的了解資料的原意,最好的方法難道不是直接去看英語(yǔ)寫的原文?
聲明一下,我并不認(rèn)為高級(jí)語(yǔ)言就比匯編語(yǔ)言更高級(jí),是使用的層次和范圍在體系上“直觀”的理解為更“上邊”,更易于使用,但他就是一個(gè)在現(xiàn)在的軟件世界里,要成為一個(gè)真正的高手的必備的技能,如果定義的高手,只是用高級(jí)語(yǔ)言就能簡(jiǎn)單解決的需求場(chǎng)合,那我沒(méi)話可說(shuō)了,畢竟在國(guó)內(nèi),你不會(huì)英語(yǔ),完全可以生活,做買賣,講普通話寫漢字是完全夠用的,但你要把生意做到全世界,做外貿(mào),不懂英語(yǔ)?洗洗睡咯。
所以同樣的道理,把題目的關(guān)鍵詞換一下,變成“想成為做遍全世界生意的專家和高手,一定要懂英語(yǔ)嗎?”來(lái)理解,不就行了?