若是C不行了,嵌入式編程是否應該用C++替代C語言!

前言

幾十年來,嵌入式軟件工程師們一直在爭論是否應該使用C++替代C語言進行開發工做。git

根據IEEE和github的市場調查顯示,微控制器製造商提供的軟件大部分都是由C語言編寫。程序員


 事實上,56%的嵌入式軟件是用C語言編寫的。

然而,C++已經逐漸普及,大約23%的新嵌入式軟件項目都是用C++編寫的。github

C語言發展到如今,差很少50年的時間了,如今正是C語言過渡到C++語言成爲嵌入式開發主流語言的最佳契機。數據庫

對於習慣了用C語言開發的嵌入式程序員來講,對C++語言是有一些誤解和偏見的。編程

    (1) C++執行效率低windows

    (2) C++生成的目標代碼大設計模式

    (3) C++編程很是麻煩網絡

    (4) 沒有指針概念,操做底層寄存器很複雜數據結構

我認爲,嵌入式工程師是應該好好去學習一下C++語言開發嵌入式程序的,ARM的Mbed OS中也大量採用了C++編程語言。拒絕接受新的事物,懼怕推翻舊有思惟,固步自封,這樣纔可怕。架構

嵌入式工程師從C到C++的轉換,須要學習的不只僅是一門新的語言,而實際上學習的是一種編程思惟模式。

就像剛開始學習嵌入式從裸機代碼開始,而後慢慢學習RTOS或者Linux,這不只僅是接觸新的東西,更是一種思惟方式的轉變。

學習C++須要理解的是面向對象的思惟方式,還有各類設計模式。從而在使用嵌入式開發的過程當中,這些東西都是一種會用到的。

 

下面從三個方面來講說嵌入式開發中採用C++編程的好處。

¤ 引進新的設計模式

C語言在必定程度上爲開發人員提供了一系列的封裝函數可使用,也提供了很是基本的多態的功能。

然而C語言其實是一種面向過程的語言,這種就使得組合和繼承變得十分的困難。

這些都會影響到整體設計架構的穩定性。除非是一個C語言基礎以及作過許多項目的人,才能很好的掌握C語言架構的設計。通常的設計都會讓軟件函數的複用和擴展變得極其複雜。

而C++則爲開發人員提供了真正面向對象的設計模式,這種抽象的模塊,使得程序的耦合性更低。

因爲引腳了設計模式,因此在項目工程的移植上也十分的方便,這使得軟件的複用性更好,這樣能夠加快產品的開發速度,縮短研發週期,下降工做量。

¤ C++是一種不斷更新的語言

在現在複雜的開發環境中,隨着時代的發展,愈來愈多先進的硬件解決方案被提出,因此須要更好用的軟件和語言解決方案,這就意味着編程語言必須是不斷的更新的,不斷爲開發人員提供最好的最早進的工具。

咱們來看一下C/C++版本的更迭狀況:

C語言版本更迭:


 

C++語言版本更迭:


 

C++語言的更新與C語言不一樣的是,C++不只僅是修復了一些錯誤,更重要的是添加了一些新的特性和工具。

並且從更新頻率上來講,C++的更新最近都是大概每三年更新一次。這能夠很方便的適應新的系統和硬件平臺。

 

¤ C++有着更加豐富的特性

嵌入式編程過程當中,相比於用C語言,C++有着更多的特性。如今的編譯器已經對編程語言的優化很是的友好了。

C++中也是支持C語言操做的,因此這種方式也很十分容易的從C到C++的過渡。

    ✿ 支持異常處理和錯誤捕捉,這是在嵌入式開發過程當中很是高效的;

    ✿ 支持虛函數;

    ✿ 支持動態類型轉換,多重繼承,多態等。

雖然會相對於C語言來講,會增長一些資源,但對於如今的嵌入式開發來講,多幾KB已經不是什麼問題了,嵌入式上使用C++編程卻能夠很容易的實現功能。大大提升開發效率。

 

總結

雖然目前來看,作嵌入式編程的主流語言仍是C語言,可是卻不能迴避一個事實,在github上搜索嵌入式的工程的時候,愈來愈多的工程採用了C++進行編程。

畢竟在嵌入式語言佔比中也接近1/4的比例了。因此嵌入式開發學習C++編程是一個必不可少的環節,並理解C++編程的思想。

本文並非想表達嵌入式編程要摒棄C語言,而是延伸嵌入式編程的選擇!

隨着時代的進步,處理器的發展,愈來愈多新的的特性被提出,相信只有與時俱進才能作時代的先鋒。


 

最後,無論你是轉行也好,初學也罷,進階也可,若是你想學編程~

——【值得關注】個人 C/C++編程學習交流俱樂部!——

涉及:C語言、C++、windows編程、網絡編程、QT圖形界面開發、Linux編程、遊戲編程、數據結構與算以及數據庫......

相關文章
相關標籤/搜索