好些年之前,我為自己寫了幾萬行匯編代碼而驕傲。然而在工作后從事軟件開發(fā),公司要求采用C和C++,當時很是郁悶,覺得自己軟件什么都不會,怎么做軟件啦,還用C和C++。當然在學校雖然學過,但是我當時就打算做硬件,應此覺得匯編就夠用了,也就沒有仔細學過C。
然而,做過多年軟件開發(fā)的我,看到以前寫的匯編代碼也是很多不懂的,這可是自己親手寫的呀。匯編代碼由于其可讀性比較差,給后期的維護造成很大的困難。因此建議單片機的學習者們一定要學習C51。
這句話要是我在讀書的時候聽到,只是會嗤之以鼻?!坝脜R編就足夠了,為什么用C呢?如果您用匯編做不了,說明水平還不夠”,這是我的典型想法,當時我的匯編水平甚至成為我的驕傲。然而幾年之后的今天,我要勸說后來學習者一定要舍棄匯編而學習C語言,是否很好笑。
首先說說C的優(yōu)點。
1、直觀,可讀性強:這點很重要。對于一個產(chǎn)品,周期是很長的,即使出第一臺產(chǎn)品之后,還有很長的維護時間。這中間維護人員可能經(jīng)常變動,如果可讀性強,將給維護工作省下很大的成本。即使是在開發(fā),可讀性強的程序也便于查錯。
2、模塊化可以做的很好:這點也是很重要的。模塊化做得好,當然程序得重用性就高。對于公司來說,這一點是關系到公司長遠發(fā)展的。程序可以重用,說明下一次開發(fā)的投入就可以減少,時間也可以加快,多好的事呀。
還有很多有點,當然也就是高級語言相對于匯編語言的優(yōu)點,這里就不一一列舉了。
再來看看匯編的優(yōu)點:應該來說,匯編語言操作硬件直觀,對于硬件非常熟悉的人來說,直接操作很方便。另外可能就是很多人說的效率要高了。
針對以上兩點我來說說,首先“匯編語言操作硬件直觀”,這是在代碼編寫階段,對于整個產(chǎn)品周期來說,應該是要避免使用匯編語言的,這個在C語言的優(yōu)點中已經(jīng)說明。對于第二點,效率問題,目前C語言的編譯器優(yōu)化也做的很好,對于一個匯編不是很熟練的來說,C編出來的程序應該不會效率比匯編低。當然這樣就對開發(fā)人員的要求降低了很多,人員的限制也就沒有那么嚴格。另外是否真的是效率問題呢。我覺得應該是一個整體效率和局部效率的均衡問題。需要提高的是整體的效率。一個好的軟件架構,遠遠比一個好的函數(shù)效率要高的多。因此主要的精力應該放在軟件的架構上。另外現(xiàn)在CPU的速度不停的往上提,CPU越來越快,這點應該也可以彌補程序的效率吧。
當然,我的意思不是不學習匯編。匯編對于熟悉硬件有很大的好處,應此匯編語言在學習初期一定是要學習的。在基本的硬件熟悉之后,就可以轉向C了。