C++嵌入式開發(fā)
暑假的時候在車隊幫忙做儀表,順便玩玩液晶屏。在做界面的時候,突然發(fā)現(xiàn)C++的類在開發(fā)界面的時候,帶來的的優(yōu)勢是C沒法比的,把顯示的內(nèi)容作為類的成員變量,界面的生成與修改的函數(shù)也放在類里,這樣就可以很好的對顯示屏上的各個模塊進(jìn)行很好的管理,極大的提高程序的可維護(hù)性。
本文引用地址:http://m.butianyuan.cn/article/201611/323465.htm從這個切入點開始考慮,IAR開發(fā)環(huán)境是帶C++編譯器的。也就是可以嘗試用C++給單片機(jī)開發(fā)程序。就在考慮,C++會不會是以后單片機(jī)開發(fā)的主流呢?首先當(dāng)然大家就會說,性能,C++的效率沒有C高。但是由此會思考,現(xiàn)在單片機(jī)的性能有了極大的提高,就簡單的說,ST公司的STM32單片機(jī),便宜的到10多塊一片,32位的,72M主頻的contex-M3內(nèi)核,相對于原來的51單片機(jī)ram,rom也大了好多,這樣看,單片機(jī)性能有了富余,而市場需要的是程序員能夠開發(fā)更大型,功能更強大的程序。用戶喜歡更花哨,更漂亮的界面,更多的功能,為了這些功能,犧牲少量的效率,對于現(xiàn)在的單片機(jī)來說是完全能夠接受的。而對于大型一點的程序,C++就是一個重要的工具,面向?qū)ο蟮乃枷?,就是讓程序員更加方便的開發(fā)管理大型程序。
當(dāng)然也有人說:當(dāng)一個單片機(jī)夠強悍了,功能要求復(fù)雜了,就會上操作系統(tǒng)。有了操作系統(tǒng),就方便的多了。但是我想說,有了操作系統(tǒng),它為我們管理整個系統(tǒng)的資源,分配內(nèi)存CPU,但是程序要實現(xiàn)的具體功能還是要我們來開發(fā),開發(fā)復(fù)雜的具體功能,我們還是要更簡單,更有效的開發(fā)語言。就像即使我們使用了windows操作系統(tǒng),但是我依然需要用Visual C++來開發(fā)。
為了用C++做嵌入式開發(fā),可恨而又厲害的小日本早早的就提出了embedded C++,去掉了標(biāo)準(zhǔn)C++中的一些低效率,不常用的功能,而保留下C++面向?qū)ο蟮囊恍﹥?yōu)秀特性,既保證了性能低的不多,又能用C++優(yōu)勢的面向?qū)ο箝_發(fā)。
再一個看可行性:首先,C++和C是兼容的,這樣,原來的C的庫,可以直接平滑過渡到C++上,讓C和C++同時存在。同時,更底層的匯編也可以相應(yīng)的增加進(jìn)來,在匯編層面上的優(yōu)化,C++的效率將會有極大的提升。同時給予C++的嵌入式操作系統(tǒng)也就可以輕松實現(xiàn)了。例如uCos II的任務(wù)切換之類的功能也可以輕松實現(xiàn)。當(dāng)然,網(wǎng)上確實出現(xiàn)C++封裝好的uCos II操作系統(tǒng)。而且一個大家很熟悉的嵌入式操作系統(tǒng):symbian就是用C++開發(fā)的。
而為什么現(xiàn)在C語言開發(fā)還是主流呢?當(dāng)你學(xué)了C以后再學(xué)C++,你就會發(fā)現(xiàn),C++和C其實相差很遠(yuǎn)的,偉大的譚浩強曾經(jīng)說過:即便你學(xué)過C,對C很熟悉,請記住學(xué)習(xí)C++你得把它當(dāng)做一門全新的語言來學(xué)。這樣的結(jié)果是,現(xiàn)在還在行業(yè)上工作的老一輩工程師不會去新學(xué)C++來開發(fā),而他們也教學(xué)生用C開發(fā),學(xué)生理所應(yīng)當(dāng)?shù)恼J(rèn)為開發(fā)就得用C。就算已經(jīng)考慮到用C++了,但是為了和老工程師共同開發(fā),只能放棄使用C++。
而我們看未來,當(dāng)大量的圖形界面,大量的功能,以及更多的代碼復(fù)用要求,C++越來越重要,這也將是為了的趨勢。雖然有人提出嵌入式j(luò)ava等想法....將來的將來,大概,也許會有人用,但是,既然C++已經(jīng)是高效的面向?qū)ο笳Z言,可以輕松的做變相對象的開發(fā),和C,匯編有很好的兼容性,為什么我們還要換平臺,用別的優(yōu)勢不大的編程語言。
再看看最近看見周立功的一則微博留言:
這就更堅定了我的想法。
就此,提醒一些同在努力想要做嵌入式開發(fā)的同學(xué),可以嘗試用C++開發(fā)了,即使現(xiàn)在暫時用不上,你也要把C++學(xué)扎實了,否則可能不久的將來,你會跟不上這個行業(yè)。
評論