匯編語言很重要。
高級語言作為入門,可以降低學習的門檻,并讓學習者很快的做出東西出來,提高編程的信心。如果作為一個資深的程式員,學習匯編是不可缺少的,我這里說的匯編可不僅僅是8086匯編那么簡單,還應該包括各個平臺上的匯編語言。
學習匯編語言的好處是讓你了解你的高級語言是怎么運行的。
對于普通的開發者而言,可能會覺得我不必關心我的代碼在機器層面上是怎么運行的,只要代碼正確就可以了,但實際上這樣的做法并不可靠。
原因有:
1、編譯器不可靠。
2、高級語言有很多邊界(也就是所謂的坑)。
3、硬體未必可靠。
因為編譯器是人做的,高級語言是人設計的,硬體也是人做的,這些都完全正確是不可能的。
編譯器不管是MSVC還是GCC,都是有bug的。如果遇到編譯器bug該怎么辦?當然是要用匯編去確認到底是不是編譯器的問題了。我自己就曾經遇到過編譯器對某些特別復雜的宏展開出錯,運行結果很古怪,這種情況下,只有匯編能定位問題。
初學者很難碰到這些問題,但如果代碼寫多了,遇到點編譯器問題或者硬體問題是很常見的。
至于各種語言的“坑”,也只有匯編才能解釋。
比如著名的:
int i = 3;
int a;
a = i++ + i++ + i++;
不同編譯平臺下結果是不同的,但為什么不同?必須通過反匯編才能看到,如果不懂匯編,那么對于這種問題只能知道“我不能這樣寫”,而無法理解“為什么不能這樣寫”。
再比如,__cdecl和__stdcall究竟是什么區別,書上一般說是傳參規則不同,好一點的會講一下具體是怎么不同,但如果不懂匯編,不去反編譯看一下,很難理解具體是怎么樣的不同。
高級語言告訴你計算機的世界是什么樣的,匯編語言告訴你計算機世界為什么是這樣的。
uj5u.com熱心網友回復:
做IT分為高手和普通,不能都是高手,也不是每個人都愿意做普通,誰想干什么就干什么就行,這叫蘿卜青菜,哈哈哈就像我,知道應該怎么寫就行,至于為什么這么寫,一概不關心,哈哈哈
上學時學過匯編,但是都當零食吃了,嘿嘿嘿
uj5u.com熱心網友回復:
光說不練假把式~~~光練不說傻把式~~~
uj5u.com熱心網友回復:
看下這個:
https://bbs.csdn.net/topics/392663641
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29456.html
標籤:語言基礎/算法/系統設計
