Python與嵌入式系統中的C/C++你不知道的祕密

MHyourh發表於2017-06-12

Python與嵌入式系統中的C/C++

更多Python視訊、原始碼、資料加群683380553免費獲取

C / C ++程式語言主要是嵌入式系統程式設計,儘管它們有許多缺點。 另一方面,Python具有許多優點,使其成為嵌入式系統的優秀語言。 我們來看看每個的利弊,為什麼你應該考慮Python的嵌入式程式設計。

C / C ++是編譯語言,而Python是一種解釋語言。 C / C ++已經存在了, C於1969年首次開發,C ++於1983年推出。Python由Guido van Rossum於1989年建立。 此後,它成為最流行的開源程式語言之一。 所有的Python版本都是開源的,可以免費使用和分發,即使是商業專案。 (如果您正在尋找商業級支援和賠償,則可以使用ActivePython等發行版。)

Python的情況

Python與嵌入式系統中的C/C++

更多Python視訊、原始碼、資料加群683380553免費獲取

Python是美國頂尖計算機科(CS)部門最流行的入門程式語言。 根據巴爾集團的一項研究,十大CS部門中有八位目前使用Python來教授編碼。 如果你想要辯論它的優點,但簡單的事實是,最近畢業生招聘池中最廣泛瞭解的語言是Python。 最近畢業的學生很可能會理解Python中的程式碼,而不是C / C ++。

業餘愛好者的開發人員可能會對Python有一些經驗,而且他們更有可能熟練使用Python,而不是C / C ++。 由於只有約40%的計算機軟體工程師和系統分析師擁有電腦科學學位,許多行業僱用來自業餘愛好者的背景。 但是當涉及到嵌入式系統時,數字變得相當嚴重。 Barr Group的研究顯示,嵌入式系統的程式碼中有95%以C / C ++編寫。 嵌入式系統上的這種遺產可能難以解決Python,但是它的屬性和Python編碼的人數眾多可能有助於它在將來超越C / C ++。

Python不僅是介紹性CS程式中最流行的語言,它也是嵌入式計算中增長最快的語言。 也許這聽起來很愚蠢,當你再次掃描數字,並意識到這是其他5%的嵌入式系統程式碼中不是C / C ++的增長速度最快的語言,但是Python將開始進入C / C ++的壟斷地位 未來幾年。 通過程式設計無人機,機器人或其他專案經驗的業餘愛好者經常有Arduino或Raspberry Pi背景。 那時候他們可能會在一定程度上處理Python,而且也有可能會碰到一些嵌入式系統程式設計。

雖然C / C ++寫速度慢,容易出錯,而且經常不可讀,但Python以其可寫性,錯誤減少和可讀性而聞名。 可讀性的重要性不能過分強調:當您在團隊中工作時,可讀性對於維護程式碼至關重要。 除非你願意在除錯和質量保證上花更多的時間和金錢,否則它必須容易解密。 Python的設計重用遠遠超過C / C ++,而在今天的敏捷環境中,設計重用可能是在競爭中保持領先或落後的區別。

嵌入式演算法越來越複雜。 簡單的控制迴圈被神經網路和其他涉及重大程式的過程所替代,幫助Python獲得了立足之地。 有像Theano這樣的Python庫將優化這些程式的Python程式碼。 雖然Theano主要以C / C ++編寫,但Python用於以人性化的方式與高效能庫進行介面。 Python庫是蓬勃發展的,PyPI是Python包索引,擁有超過80,000個模組,而這些大規模的大綱通過給予他們選擇跳過幾個步驟並在自己的程式碼中使用已經建立的函式來顯著提高程式設計師的生產力。

C ++的情況

C / C ++的案例是非常明顯的:它建立了更加緊湊和更快的執行時程式碼,它已經是95%的嵌入式系統程式碼的首選語言,因此它具有Python將必須克服的全部遺產。然而,談到速度,執行速度不是開發考慮的唯一方面 - 您也必須考慮開發速度。雖然Python在執行時可能效率低於C / C ++,但在開發過程中效率更高。直譯器讀取每行程式碼,解析它,執行執行時檢查和呼叫例程,以便執行程式碼中的操作。這比從執行C / C ++程式碼獲得的更多的活動,其中相同的程式碼行可能被編譯成幾個指令。這可能會導致執行速度更慢,並且能耗更高。

提高Python的速度

Python與嵌入式系統中的C/C++

 

因此,針對Python與C / C ++的主要案例是它的執行時速度,但是有幾種方法可以優化程式碼,使其執行更有效率。除了像Theano這樣的圖書館,還有Python的優化擴充套件,如Cython,它本質上是Python,具有靜態型別和關鍵字,可以更快地執行數學。因為Cython是靜態型別的,您可以輕鬆地編譯成C / C ++並以C / C ++速度執行。

即時(JIT)編譯器是改進Python執行速度的另一個好方法。這些編譯器與Python的直譯器並行工作,為迴圈內的程式碼生成編譯的機器指令。這允許直譯器的後續傳遞更快地執行。 PyPy JIT編譯器能夠將Python的執行速度提高近二分之一。只有有足夠的空間才能使用JIT編譯器,而嵌入式系統通常不會有很多空間。最好的優化是使用更好的資料結構和演算法,但這是軟體設計和實現中最困難的任務,因此最好根據您的技能水平使用上述工具之一。

使用Python與嵌入式系統通訊

當使用者和他們正在使用的嵌入式系統之間的通訊中間人時,Python可能是最強的。通過Python傳送訊息到嵌入式系統或從嵌入式系統傳送訊息允許使用者自動進行測試。 Python指令碼可以將系統置於不同的狀態,設定配置和測試各種真實用例。 Python也可以用於接收可以儲存用於分析的嵌入式系統資料。然後,程式設計師可以使用Python來開發引數和其他分析資料的方法。

目前,關於Python和C / C ++的優點的主要辯論歸結於對您的團隊來說更重要的是:開發速度或執行速度。然而,未來,Python程式設計師可能無法將其用於嵌入式系統,而是嵌入式系統設計人員,以瞭解如何適應不斷增長的Python普及度。

相關文章