首頁>技術>

不可否認,目前在嵌入式程式設計領域,C語言仍然佔有主流地位。雖然還有彙編和C++語言也會被提到,甚至被使用,但一般彙編只是用在系統啟動的引導階段,而C++也是在軟體規模到一定量級,比如要上Linux系統,需要進行類介面開發的時候才得以使用。究其原因,組合語言終究還是太晦澀了,而C++對於嵌入式系統來講,又稍顯複雜。C語言則恰當地在開發的複雜性和執行效率方面進行了折中,其相對組合語言足夠易用,而相對其它各種高階語言,其在編譯階段又能轉換為機器碼,具有極高的效率,這也是其能夠從建立之初到現在,歷經幾十年之久仍保持活力的一個重要原因。

而談到Python,受益於當前各種大資料、物聯網、人工智慧等新概念、新趨勢的流行,又由於其語法簡單、優雅,開發者可以更多地關注於其業務需求,從繁瑣的平臺體系架構,記憶體管理等細節中解放出來,基於其的各種上層軟體框架及架構模式,如雨後春筍,蓬勃發展。從資料分析、AI演算法,到WEB開發、桌面軟體開發等各個領域均能見到Python的身影,而在嵌入式領域,其以MicroPython的形式,也越來越多地受到人們的關注。

那麼,相較於目前的C語言,MicroPython在嵌入式領域有哪些優缺點呢,又是否能有一番作為呢?

首先應該明確,我們這裡談的並不是誰要取代誰的問題。成年人的世界裡,大多事情都不是非此即彼,而是在某個特定場合、特定場景下,哪種工具更適合而已。然後,我們再來看看,MicroPython在嵌入式領域有何優勢與劣勢:

1> Python程式碼執行起來相對較慢,即使不是在嵌入式領域,這一點也是多受人詬病。但是,在所有場合下,執行速度就一定是最重要的麼?現年代,摩爾定律就要失效,CPU算力也普遍過剩,本身作為一介碼農,深知有時候一個良好的程式碼架構所帶來的效能提升要比堆疊CPU引數來得更為直接,更具有價效比。況且,目前各主流CPU或微控制器平臺,效能均已不低,且成本不斷下降。加之近兩年科技行業快速發展,無論是國內還是國外,甚至有造晶片熱的現象正在形成。嵌入式領域MicroPython執行效率問題終究會因為晶片成本降低,效能提升而不那麼明顯。況且,MicroPython已經足夠優秀,透過適當的程式設計技巧,在執行效率上其絕對不比C語言要遜色多少。利用MicroPython程式設計,甚至還能直接嵌入彙編程式碼和C/C++程式碼,那也就保證了關鍵程式碼的執行效率了。

2> 從生態環境來講,MicroPython則要比C語言豐富許多。其實嚴格來講,C語言只是一種程式語言,而MicroPython則已傾向於一種平臺,其至少已經集成了一定數量的系統類庫。當然,C語言也有標準庫,甚至各個硬體平臺在釋出晶片時,還會同時釋出晶片外設庫,使用者可以直接呼叫這些庫函式介面就可以操作晶片外設,而不用再像之前那樣一邊查閱暫存器手冊,一邊進行各種位操作來編寫程式碼了。但這裡有一個很大的問題,不同廠家的晶片,其外設庫是不同的,其也不可能變得相同。這就意味著,我們選擇了一款晶片,可用的生態資源則受限於晶片廠家所提供的範圍。但MicroPython則是獨立於晶片廠家的,雖然需要基於不同晶片平臺進行移植,但移植後其對上層使用者來講,所能操作的類庫介面則相對統一。再考慮到上位機、伺服器、雲端各種現成的框架和類庫,基於一種Python語言規範,你甚至能夠進行從最低端到最上層的全棧式開發,你需要了解的只是業務領域的知識,而不再受限於程式語言語法層面。

3> 從開發效率和快速迭代層面來講,MicroPython要比C語言具有很大優勢。如今已是物聯網的時代,當前已有大量裝置,且以後還會有更多裝置,會進行聯網互動,會嵌入思考能力。在該背景下,普通使用者想到的也許是未來生活的便利與美好,但作為開發者需要面對的則是需求的碎片化與差異化。每個人的個性不一樣,喜好不一樣,每個具體場景需求就不一樣,所以,物聯網時代一定會有很多很多的的定製化產品出現。所以,物聯網開發者就必然需要響應快速,一方面要快速出產品,另一方面還要快速地根據需求進行迭代更新。所以,開發模型也傾向於首先構建一個通用的底層平臺,再基於該平臺直接構建業務層程式碼。MicroPython就是一個平臺,移植完成後就集成了各種底層類庫,且業務層程式碼和底層程式碼實現了隔離,不會因為業務層程式碼的頻繁改動而影響平臺層程式碼的穩定性。

談到這裡,也許有人會說,終究還是要有人首先搭建平臺的,要移植MicroPython,不也是用C/C++麼?對的,所以我們也說,MicroPython不是要取代C語言,良好分工,高效合作方是正道。少量專職專業的人員負責底層工作,搭建平臺,移植MicroPython,整合各種硬體驅動,剩餘人員在平臺之上構建各種各樣業務程式碼,快速響應使用者需求,這樣分工合作,本身就是一種效率的提升。

4> 另外,從個人和團隊發展來說,MicroPython的出現也許提供了另外一個細分機會視窗。作為一個創業者或者如果你處在一個小團隊中,相對於已經具有規模效益或者資源豐富的大廠來講,你的優勢在哪裡?或許找到一個細分領域,快速響應使用者需求,不斷試探市場,可以作為一種生存策略。而包括MicroPython在內的龐大的Python資源庫,使你不必再重複造車輪子,快速聚焦應用。所以,它值得你將其納入工具庫中。你覺得呢?

36
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Javascript | 3種 HTML 轉換為純文字的方法