{eval=Array;=+count(Array);}
單片機(jī)為什么還在用C語言編程?答案是:C語言是最適合單片機(jī)編程的高級(jí)語言。
這個(gè)問題的意思應(yīng)該是:現(xiàn)在有很多很好用的高級(jí)語言,如java,python,VC等等,為什么這些語言不能用來編寫單片機(jī)程序呢?那么這個(gè)問題的答案就是:不能不能,而是不合適。
對(duì)單片機(jī)編程來說,首先要考慮的是單片機(jī)的程序空間和數(shù)據(jù)空間都是有限的,所以要讓程序盡量短小精悍,以節(jié)省程序占用的存儲(chǔ)空間。
第二、單片機(jī)編程的一個(gè)主要對(duì)象是對(duì)單片機(jī)的端口和內(nèi)部寄存器的操作和配置,這個(gè)需要比較精確的時(shí)序控制。
第三、單片機(jī)算法運(yùn)算中,盡量使用加法、減法、移位運(yùn)算,因?yàn)槌朔ê统ㄟ\(yùn)算會(huì)非常費(fèi)時(shí)間,尤其是除法,會(huì)耗費(fèi)很多時(shí)間,這對(duì)于速度本身就有限制的單片機(jī)來說,是一個(gè)很大的負(fù)擔(dān)。
高級(jí)語言可以實(shí)現(xiàn)更為優(yōu)化的算法,更為方便的執(zhí)行方案,但是,高級(jí)語言對(duì)程序存儲(chǔ)空間的占用要比匯編和C語言多很多。這是最致命的一點(diǎn),單片機(jī)有限的存儲(chǔ)空間需要靠精打細(xì)算來設(shè)計(jì)程序,根本經(jīng)不起高級(jí)語言臃腫的代碼體積。
高級(jí)語言無法實(shí)現(xiàn)精確的時(shí)序控制。
其實(shí)用C語言開發(fā)單片機(jī)也是一個(gè)折中方案,因?yàn)樽钸m合單片機(jī)開發(fā)的編程語言實(shí)在太過晦澀難懂,并且每一種單片機(jī)的匯編指令有很大區(qū)別,所以想把一個(gè)程序從這種單片機(jī)移植到另一種單片機(jī)簡直是癡心妄想,還不如重新寫一遍程序。
而C語言代碼執(zhí)行效率高,也比較精簡,更便于移植......所以在現(xiàn)今的單片機(jī)編程語言中,C語言才會(huì)占據(jù)絕對(duì)主導(dǎo)地位
1.匯編太麻煩,移植性差;
2.C/C++為操縱硬件而生,它的編譯器編譯成的目標(biāo)平臺(tái)機(jī)器碼可直接運(yùn)行,并非生成字節(jié)碼或者腳本;
3.JAVA,.NET語言編譯出來的程序是字節(jié)碼,需要龐大的運(yùn)行環(huán)境將字節(jié)碼實(shí)時(shí)翻譯成機(jī)器碼才能運(yùn)行;
4.Python,Ruby等屬于腳本語言,需要解釋器逐條解釋(pyo可以無視),比字節(jié)碼性能更差;
5.單片機(jī)性能差,實(shí)時(shí)性要求高,而且沒有強(qiáng)大的運(yùn)行環(huán)境和解釋器,故一般不能運(yùn)行JAVA,.NET,Python,Ruby等程序,倒是可以執(zhí)行Lua這樣輕量級(jí)腳本。
C語言是最適合的,沒有之一!
用c怎么了,怎么了,別用你的爪牙,拍黃瓜,c草草來show優(yōu)越感,世界的一切來源于啥?是誰點(diǎn)亮了宇宙的第一道曙光,所有的井井有條來自于你的why,你要是追求到why的根底,都它,對(duì),不要懷疑,都是它,是它,還是它,一個(gè),所有大廈的根基,都屬于它,回答完畢。
機(jī)器語言->c->c++->java,然后后面的都是。。。
性能也是這樣排的
最厲害的還是寫的人,人是一切
c是唯一實(shí)現(xiàn)自舉的語言,懂的自然懂,問問微軟,linux,大蘋果,java都會(huì)告訴你答案,c是他們的爸爸
3
回答7
回答10
回答10
回答10
回答10
回答2
回答10
回答5
回答9
回答