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