Go語言能夠大多種不同通道上支持并行輸入、輸出與處理。如果能夠正確使用,這一能力將使得整套傳感器及執(zhí)行器組合得到良好協(xié)調(diào)。然而這種特性的風(fēng)險在于,各通道之間也許并不能意識到對方的存在。如果編程人員有所疏忽,那么缺乏協(xié)調(diào)的系統(tǒng)就可能帶來不可預(yù)測的行為。從技術(shù)角度講,這顯然不是什么好事。
Rust
Rust語言由Mozilla公司開發(fā)而來。與Mozilla旗下的其它軟件類似,Rust屬于開源項目且擁有非常迅猛的演進(jìn)速度。Rust語言擁有諸多源自Go的特性,不過它也解決了Go當(dāng)中存在的一大主要問題。
由于Go語言無法自動在不同數(shù)據(jù)結(jié)構(gòu)“通道”之間進(jìn)行信息共享,因此最終開發(fā)出的程序有可能存在所謂“競態(tài)條件”。直白地講,這是一種無法控制的狀態(tài),處于這一狀態(tài)下的系統(tǒng)會由于不同進(jìn)程在運(yùn)行時處于激烈沖突而導(dǎo)致工作無法完成。Rust語言當(dāng)中包含的函數(shù)能夠消除競態(tài)條件,從而使其更為可靠地構(gòu)建起高度并發(fā)程序。
同樣的,Rust語言對于運(yùn)行平臺的性能也存在一定要求,不過如果大家的開發(fā)團(tuán)隊希望開發(fā)一款涉及大量并發(fā)機(jī)制的應(yīng)用,那么Rust與Go都是值得認(rèn)真考量的編程語言選項。
Parasail
如果大家對于自己物聯(lián)網(wǎng)應(yīng)用程序的并行處理能力擁有一定要求,那么Parasail語言也是個值得一試的選項。在之前介紹Go與Rust語言時,我們已經(jīng)提到了編程概念當(dāng)中的并發(fā)機(jī)制。如果大家不清楚并發(fā)與并行的區(qū)別(或者您的開發(fā)團(tuán)隊無法明確解釋二者的差異),那么請在著手編碼之前認(rèn)真查尋相關(guān)資料,保證自己的徹底明確之后再做決定。
Parasail是一款編譯型面向?qū)ο笳Z言,其始終處于演進(jìn)當(dāng)中因此能夠通過與Java、Python、C#甚至是Ada(真的很難相信會在一種現(xiàn)代語言當(dāng)中看到Ada的名頭)類似的語法進(jìn)行編程。千萬別會錯意,如果大家打算構(gòu)建一個物聯(lián)網(wǎng)項目,那么利用Ada進(jìn)行編程絕對是個不錯的選擇。不過如果大家需要使用具備高度并行性的嵌入式代碼,那么Parasail則是最理想的語言選項。
B#
我們今天提到的很多語言都屬于大型系統(tǒng)語言,因此要讓其在嵌入式平臺上順利運(yùn)行,我們需要對其進(jìn)行具體調(diào)整。然而B#則不同,它的設(shè)計初衷就是一類著眼于小處的高效嵌入式控制語言。嵌入式虛擬機(jī)(簡稱EVM)允許B#語言運(yùn)行在多種不同平臺之上,且內(nèi)存占用量僅為24 k——遠(yuǎn)低于我們之前提到的其它軟件包運(yùn)行要求。
B#語言與C#在某種程度上比較類似(如果大家或者下轄技術(shù)團(tuán)隊曾經(jīng)開發(fā)過微軟.NET項目,那么對C#肯定不會陌生)。不過相較于C#,B#剔除了相當(dāng)一部分在嵌入式項目中用不到的特性,并加入了對實時控制功能的支持——這一點(diǎn)在實際使用環(huán)境下顯然非常重要。
如果大家的項目如果大家的開發(fā)項目未來會運(yùn)行在輕量級嵌入式平臺之上,其規(guī)模與復(fù)雜度皆低于Raspberry Pi,那么B#絕對是個值得認(rèn)真考慮的編程語言選項。
匯編語言
如果大家希望嚴(yán)格遵循比較傳統(tǒng)的設(shè)計思路,或者需要盡可能讓自己的項目顯得比較緊湊,那么匯編程序就是達(dá)成目標(biāo)的不二之選。匯編語言能夠構(gòu)建并打包純粹的機(jī)器碼,從而保證大家在處理器之上擁有最為理想的執(zhí)行效率。好消息是其對性能的要求被控制在最低水平,而且技術(shù)高超的行家能夠利用匯編語言實現(xiàn)很多在其它編程機(jī)制中根本不存在的優(yōu)化技巧。
不過壞消息是,匯編語言的編程工作無法借力于網(wǎng)絡(luò):大家?guī)缀跽也坏饺魏螌嵱霉ぞ邅韼椭约壕境鲩_發(fā)成果中的各類錯誤。除此之外,匯編語言代碼以及相關(guān)程序編寫技能往往沒有任何承接性。具體來講,我們能夠針對一種處理器編寫出相關(guān)代碼,但這并不代表我們能夠面向其它處理器編寫出擁有同樣功能的代碼。
對于鐵桿程序員以及希望擁有終極優(yōu)化效果的產(chǎn)品來講,匯編語言能夠?qū)⑵潴w積控制在最低水平且保證其中不包含任何其它環(huán)境因素。不過可以肯定的是,匯編語言絕對不是構(gòu)建原型方案的最佳方式——如果大家擁有較為充裕的空間及處理性能,那么請優(yōu)先使用高級語言,現(xiàn)代語言中的諸多優(yōu)勢還是能夠幫上忙的。
Forth
Forth是另一種專門針對嵌入式系統(tǒng)編程工作做出設(shè)計與優(yōu)化的語言。雖然它的主要定位在于實現(xiàn)系統(tǒng)層級上的編程,但Forth還擁有另一大不可替代的優(yōu)勢:它有點(diǎn)像是編程世界中的黑話。舉例來講,假如說某個群體以世界語作為母語,并傾向于使用它來跟我們交流,那么不懂世界語就會讓我們處于非常尷尬的境地。而在編程世界當(dāng)中,F(xiàn)orth就是這樣一種等同于世界語的存在。