Python對編程團(tuán)隊(duì)來說非常優(yōu)秀的原因是其對代碼可讀性的強(qiáng)調(diào)。該語言的設(shè)計規(guī)范強(qiáng)調(diào)了可讀性和緊湊的、優(yōu)雅的語法的重要性。任何從事過優(yōu)化別人的C語言代碼工作的人都會對優(yōu)良的可讀性心存感激。
在眾多的語言中,Python成為嵌入式開發(fā)語言的可能取決于嵌入式平臺是否有足夠的功率。對于任何需要收集數(shù)據(jù)的應(yīng)用而言,都需要以某種數(shù)據(jù)庫格式將其所收集到信息轉(zhuǎn)變?yōu)榭刂菩畔?,Python則是一個有力的競爭者。
6、Go
首先要說明的是Go語言和Go!語言并不一樣。這是兩種十分不同的語言,其使用的目的也十分不同。Go語言是由谷歌領(lǐng)銜推出的一款程序開發(fā)語言,可廣泛地應(yīng)用在多種處理器和平臺上。盡管其和許多編程語言一樣,Go也在C中吸取了很多靈感,但Go在很多方面有C無法媲美的優(yōu)點(diǎn)。
Go增加了一個明確的哈希表的類型,這種類型對于從傳感器收集數(shù)據(jù)和發(fā)送數(shù)據(jù)到傳感器和執(zhí)行器都非常有用。對傳感器和設(shè)備網(wǎng)絡(luò)的進(jìn)一步支持是Go語言的關(guān)鍵之一,盡管其引入了一些風(fēng)險。
Go支持多個信道上并發(fā)的輸入、輸出和處理。如果得到正確的使用,將使得整個傳感器和執(zhí)行器系統(tǒng)完全協(xié)調(diào)地運(yùn)作。但其風(fēng)險是不同線程之間不一定知道彼此。如果程序員不小心,因?yàn)槠渲腥狈α藚f(xié)調(diào),系統(tǒng)可能會以某個完全無法預(yù)料的方式運(yùn)行。
7、Rust
Rust是Mozilla開發(fā)的注重安全、性能和并發(fā)性的編程語言。創(chuàng)建這個新語言的目的是為了解決一個很頑疾的問題:軟件的演進(jìn)速度大大低于硬件的演進(jìn),軟件在語言級別上無法真正利用多核計算帶來的性能提升。
正如Mozilla的其它軟件一樣,Rust也是一個開源的項(xiàng)目,而且現(xiàn)在這門語言也正在飛速的進(jìn)化著。Rust具有很多和Go類似的性質(zhì),而且其還解決了Go語言的一個主要的大問題。
因?yàn)镚o語言并不自動在不同的“信道”數(shù)據(jù)結(jié)構(gòu)之間共享信息,程序可能會出現(xiàn)資源競爭(race condition)的狀況,這是多線程編程中比較頭疼的問題。因?yàn)椴煌倪M(jìn)程同時訪問相同的共享數(shù)據(jù)而造成數(shù)據(jù)的不一致性會最終導(dǎo)致系統(tǒng)失控。Rust包括了消除資源競爭的功能,使得其在高度并行的程序方案中比Go語言的風(fēng)險更低。
這門語言還需要一些發(fā)展的動力,但如果你的團(tuán)隊(duì)需要打造一款需要并法計算的應(yīng)用程序,你應(yīng)該在Rust和Go之間做出合適的選擇,到底哪一個更適合你。
8、Parasail
如果你在你的物聯(lián)網(wǎng)應(yīng)用中需要考慮并行處理的要求,Parasail就是你所需要的語言。在Go和Rust語言中,我們已經(jīng)提到了并發(fā)。但如果你還不知道并行和并發(fā)之間區(qū)別(并行是指在同一時刻,有多條指令在多個處理器上同時執(zhí)行。并發(fā)是指在同一時刻,只能有一條指令執(zhí)行,但多個進(jìn)程指令被快速輪換執(zhí)行,使得在宏觀上具有多個進(jìn)程同時執(zhí)行的效果。)所以不要著急你確定你所需要的編程語言,先對它們有足夠的了解才是萬全之策。
Parasail是一種編譯性的、面向?qū)ο蟮恼Z言,其已經(jīng)得到了改進(jìn),所以這款語言可以通過使用Java、Python、C#甚至Ada的語法進(jìn)行編程。另外幫我一個忙。如果你正在進(jìn)行一個物聯(lián)網(wǎng)項(xiàng)目,而且你認(rèn)為Ada是可以用于物聯(lián)網(wǎng)設(shè)備的開發(fā)的,不妨留下評論。Parasail的并行處理能力非常好,如果你真的需要并行計算,這是不可錯過的。
9、B#
前面提到的所有語言都是大型的開發(fā)語言,在應(yīng)用到嵌入式平臺時都需要經(jīng)過適當(dāng)?shù)木?,而B#則一開始就是作為一種小型的高效的嵌入式控制語言而設(shè)計的。嵌入式虛擬機(jī)(EVM)允許B#運(yùn)行在不同的平臺上,所需的內(nèi)存僅為24K,比其它開發(fā)語言所需要的內(nèi)存要小得多。
B#看起來有一點(diǎn)類似于C#,但其并不包含許多C#中對嵌入式項(xiàng)目沒有價值的特性,同時還增加了對實(shí)時控制的支持。
10、匯編語言
如果你真的對老古董感興趣,或是你的項(xiàng)目對緊湊度的要求非常非常高,那么匯編語言將是你的不二選擇(在這里請不要說機(jī)器語言,那不是人能夠讀懂的,好嗎?!)。匯編語言是一種用來封裝和得到純凈的機(jī)器碼的方式,而機(jī)器碼就是處理器最終執(zhí)行的代碼。匯編代碼的編輯不需要太大的開銷,而且相關(guān)專家還可以用匯編代碼來實(shí)現(xiàn)其它更高級的語言所不能實(shí)現(xiàn)的功能。
然而壞消息是匯編編程沒有真正可用的工具來阻止你犯愚蠢的錯誤。而且更糟糕的是匯編代碼的移植性非常差,甚至你為一款處理器而學(xué)習(xí)的匯編技巧也無法應(yīng)用到另一款處理器上。