好久沒在51hei寫文章了,今天心血來潮,寫一篇玩玩。
最近突然覺得,C++將是以后嵌入式開發的主流,就此進行一些分析。
暑假的時候在車隊幫忙做儀表,順便玩玩液晶屏。在做界面的時候,突然發現C++的類在開發界面的時候,帶來的的優勢是C沒法比的,把顯示的內容作為類的成員變量,界面的生成與修改的函數也放在類里,這樣就可以很好的對顯示屏上的各個模塊進行很好的管理,極大的提高程序的可維護性。
從這個切入點開始考慮,IAR開發環境是帶C++編譯器的。也就是可以嘗試用C++給單片機開發程序。就在考慮,C++會不會是以后單片機開發的主流呢?首先當然大家就會說,性能,C++的效率沒有C高。但是由此會思考,現在單片機的性能有了極大的提高,就簡單的說,ST公司的STM32單片機,便宜的到10多塊一片,32位的,72M主頻的contex-M3內核,相對于原來的51單片機ram,rom也大了好多,這樣看,單片機性能有了富余,而市場需要的是程序員能夠開發更大型,功能更強大的程序。用戶喜歡更花哨,更漂亮的界面,更多的功能,為了這些功能,犧牲少量的效率,對于現在的單片機來說是完全能夠接受的。而對于大型一點的程序,C++就是一個重要的工具,面向對象的思想,就是讓程序員更加方便的開發管理大型程序。
當然也有人說:當一個單片機夠強悍了,功能要求復雜了,就會上操作系統。有了操作系統,就方便的多了。但是我想說,有了操作系統,它為我們管理整個系統的資源,分配內存CPU,但是程序要實現的具體功能還是要我們來開發,開發復雜的具體功能,我們還是要更簡單,更有效的開發語言。就像即使我們使用了windows操作系統,但是我依然需要用Visual C++來開發。
為了用C++做嵌入式開發,可恨而又厲害的小日本早早的就提出了embedded C++,去掉了標準C++中的一些低效率,不常用的功能,而保留下C++面向對象的一些優秀特性,既保證了性能低的不多,又能用C++優勢的面向對象開發。
再一個看可行性:首先,C++和C是兼容的,這樣,原來的C的庫,可以直接平滑過渡到C++上,讓C和C++同時存在。同時,更底層的匯編也可以相應的增加進來,在匯編層面上的優化,C++的效率將會有極大的提升。同時給予C++的嵌入式操作系統也就可以輕松實現了。例如uCos II的任務切換之類的功能也可以輕松實現。當然,網上確實出現C++封裝好的uCos II操作系統。而且一個大家很熟悉的嵌入式操作系統:symbian就是用C++開發的。
而為什么現在C語言開發還是主流呢?當你學了C以后再學C++,你就會發現,C++和C其實相差很遠的,偉大的譚浩強曾經說過:即便你學過C,對C很熟悉,請記住學習C++你得把它當做一門全新的語言來學。這樣的結果是,現在還在行業上工作的老一輩工程師不會去新學C++來開發,而他們也教學生用C開發,學生理所應當的認為開發就得用C。就算已經考慮到用C++了,但是為了和老工程師共同開發,只能放棄使用C++。
而我們看未來,當大量的圖形界面,大量的功能,以及更多的代碼復用要求,C++越來越重要,這也將是為了的趨勢。雖然有人提出嵌入式java等想法....將來的將來,大概,也許會有人用,但是,既然C++已經是高效的面向對象語言,可以輕松的做變相對象的開發,和C,匯編有很好的兼容性,為什么我們還要換平臺,用別的優勢不大的編程語言。
再看看最近看見周立功的一則微博留言:
這就更堅定了我的想法。
就此,提醒一些同在努力想要做嵌入式開發的同學,可以嘗試用C++開發了,即使現在暫時用不上,你也要把C++學扎實了,否則可能不久的將來,你會跟不上這個行業。
純屬個人想法,如有疑問或者我有什么說錯的地方,請聯系我。