嵌入式系統中,Python與C/C++哪方更為適用?

unisuny 8年前發布 | 17K 次閱讀 Python 嵌入式系統 C/C++

長久以來,C/C++一直編譯著嵌入式系統編程領域,但二者亦擁有自己的缺陷。相比之下,Python則成為嵌入式系統中的另一大絕佳語言選項。在今天的文章中,我們將共同探討雙方的優劣與Python在嵌入式編程領域的定位。

C/C++屬于編譯語言,而Python則屬于解釋語言。C語言最初誕生于1969年,C++則出現在1983年,相比之下1989年才開發完成的Python顯然更為年輕。經過數十年的磨礪,如今Python已經成為最具人氣的開源編程語言之一。

Python闡述

Python在美國各頂級計算機科學部門中擁有最高人氣。根據Barr集團發布的調查結果,十大計算機科學部門中有八個在利用Python教授編碼技能。這里拋開優劣不談,事實證明應屆畢業生對于Python的理解要遠遠超過C/C++。

多數開發愛好者都具備一定程度的Python經驗,且其Python水平往往要高于C/C++。然而在嵌入式領域,情況則正好相反——Barr集團在調查中發現95%的嵌入式系統使用C/C++語言。雖然這樣的狀況對Python非常不利,但其易于上手的特性加上更為廣泛的從業者規模,相信其會在未來一步步超越C/C++。

Python在嵌入式計算領域的發展速度很快。雖然目前非C/C++語言在嵌入式系統中的代碼占比僅為5%,但Python無疑將在未來幾年內快速蠶食C/C++的份額。無人機、機器人或者其它包含Arduino與Raspberry Pi的項目正吸引到眾多擁有Python技能背景的愛好者,而這一趨勢也必然會給嵌入式編程帶來深刻影響。

相較于C/C++編寫緩慢、易出錯且難以直接閱讀的問題,Python則一直以易于編寫、低錯誤率及可讀性著稱。事實上,Python的復用能力要遠高于C/C++,而這一優勢將在目前的敏捷開發環境中起到決定性作用。

嵌入式算法本身正變得愈發復雜。利用神經網絡及其它高度介入流程,Python取代了簡單的控制循環并以此作為立足根基。另外,Python庫性能表現更出色且更具人類友好性,因而能夠顯著提升程序員的生產效率。

C/C++闡述

C/C++的特性非常明確:旨在構建緊湊且運行速度更快的代碼。然而,運行速度只是開發工作中需要考慮的因素之一。雖然Python的執行效率不及C/C++,但其開發效率卻更高,因此二者只能說是各擅勝場。

改進Python速度表現

我們目前可以選擇多種方法提升Python代碼運行速度。除了Theano庫,另有Cython等Python優化擴展可供使用,其基本上相當于利用Python的靜態類型與關鍵字以提高數學運算速度。由于Cython本身為靜態類型,因此大家可以將其編譯為C/C++并享受與后者一致的速度優勢。

準時制(簡稱JIT)編譯器則是另一種提升Python運行時速度的好方案。這些編譯器能夠與Python解釋器并行運作以生成匯編指令代碼,進而達到更快的執行速度。雖然對于軟件而言,針對數據結構與算法的優化才是提升性能的核心法寶,但其設計與實現難度太高,因此上述工具相信能夠幫助大家更為輕松地完成提速。

利用Python與嵌入式系統通信

Python可能是目前最為出色的用戶與嵌入式系統間通信中間件選項。通過Python進行消息收發能夠幫助用戶輕松完成自動化測試。Python腳本亦可讓系統處于不同狀態、設置配置并測試全部實際用例。Python還可用于接收嵌入式系統數據以備日后分析。再有,程序員亦可利用Python開發參數及其它方法,用于執行此類數據的分析任務。

當下在考量Python與C/C++間的優劣時,大家實際上面對的是這樣一個選擇: 開發速度還是運行時速度 。不過未來,這一難題恐怕并不需要由Python開發者來擔心,而是將由嵌入式系統設計師負責——畢竟Python的普及趨勢早已不可阻擋。

 

 

來自:http://developer.51cto.com/art/201609/516714.htm

 

 本文由用戶 unisuny 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!