工控網首頁
>

應用設計

>

11款適合物聯(lián)網開發(fā)的語言,你了解幾款?

11款適合物聯(lián)網開發(fā)的語言,你了解幾款?

2016/5/23 9:41:56

  隨著智能生活、智能家居的普及,物聯(lián)網越來越受大家的矚目,也越來越多人投入了物聯(lián)網學習的懷抱。但很多物聯(lián)網初學者,特別是自學物聯(lián)網的人員,一般都有一個疑問,物聯(lián)網到底學什么?它是用什么語言開發(fā)的。

  其實物聯(lián)網項目開發(fā)語言,并不只包含物聯(lián)網培訓機構所貼出的課程大綱里面的那幾種語言,還有很多其他語言也能很好的運用于物聯(lián)網的開發(fā)。正確選擇物聯(lián)網開發(fā)語言非常重要,今天小編就和大家一起分享11可適應與物聯(lián)網開發(fā)的語言,大家可以自己審視一下,了解哪些語言可以適合哪些物聯(lián)網項目。

1、C語言

  眾所周知,C語言是一門基礎的通用編程語言,是嵌入式開發(fā)的首選語言,幾乎每一款現(xiàn)有高級嵌入式系統(tǒng)平臺。某些平臺雖然無法直接支持C語言,但不可否認的是其仍然以基礎形式存在,支撐著SDK中的那些專用語言。

  雖然C語言是首選的基礎語言,但是也不可否認C語言身上確實存在著諸多過于陳舊的因素:它屬于過程語言而非面向對象語言;它并不具備內置的圖形用戶界面;而且采用編譯而非解釋機制。不過這一切負面因素反而在物聯(lián)網開發(fā)項目當中讓其成為最強而有力的語言候選人之一。

2、C++

  C++是通過C語言發(fā)展而來的面向對象編程語言,因此C++保留了C語言的特性,同時也加入了數(shù)據(jù)抽象、類以及對象等機制。這一切讓C++成為我們在Linux系統(tǒng)環(huán)境中編寫嵌入式及物聯(lián)網代碼時的熱門選項。這款編程語言自誕生至今已經跨越了三十多年的時光,但其在如今的嵌入式及物聯(lián)網開發(fā)領域仍然極具生命力。

3、Java

  Java是一款面向對象語言,具有很強的可移植性:編譯器當中幾乎不存在任何硬件依賴性。而要對特定硬件進行特殊而準確的控制,Java需要借助硬件所支持的庫并從中調用通用代碼。

  這讓Java語言擁有極具吸引力的經濟性定位:對Java代碼開發(fā)進行一次性投入,企業(yè)將能夠獲得足以運行在多種不同平臺之上的開發(fā)成果。但從另一方面講,選擇Java的問題在于我們必須確保自己所選定的平臺能夠支持Java(目前只有極少數(shù)強大的平臺會提供Java支持能力),同時又要保證這些硬件能夠支持我們?yōu)榱藢崿F(xiàn)特定控制功能所需要使用的庫。

4、JavaScript

  JavaScript是一種腳本語言,是web前端開發(fā)的必用語言之一。如果大家打算在Raspberry Pi硬件平臺上使用Apache服務器,旨在從由Arduino傳感器構建的網絡當中提取數(shù)據(jù),那么JavaScript絕對是個很好的起步選項。

  自從被網景公司開發(fā)出來之時,JavaScript就一直在快速發(fā)展演進并已經成為一款功能齊備的語言。不過大家千萬別把它當成是什么輕量化嵌入式控制器——它所采用的解釋結構意味著我們需要承擔其運行成本。換言之,至少也得是Raspberry Pi這樣的系統(tǒng)才能承擔JavaScript所帶來的性能損失。

5、Python

  Python是當下Web開發(fā)領域最具活力的編程語言之一,而且其應用范圍已經擴散到了嵌入式控制以及物聯(lián)網領域,在很多方面擁有極為出色的靈活性表現(xiàn)。舉例來說,它作為一種解釋語言能夠被提交至單一運行時編譯器當中,或者通過其中內置的預編譯器實現(xiàn)代碼運行,從而對其緊湊的可執(zhí)行代碼進行分發(fā)。

  而最讓編程團隊心動的是,Python語言擁有自己的一大專注重點,即高度強調代碼內容的可讀性。這款語言的設計規(guī)范提到了代碼可讀性以及緊湊優(yōu)雅語法的重要意義。任何一位曾經試圖解讀他人C語言代碼并希望對其進行優(yōu)化的朋友,應該都能深刻感受到代碼可讀性在實際工作中的關鍵作用。

  與其它語言一樣,Python充當嵌入式語言的前提在于其運行所處的嵌入式平臺需要具備一定的計算能力。如果大家希望開發(fā)的是一款能夠獲取數(shù)據(jù)、將其以某種數(shù)據(jù)庫格式加以整理,而后匯總成表以實現(xiàn)信息控制的應用方案,那么Python絕對是位頗具競爭力的候選編程語言選手。

6、Go

  Go由谷歌公司開發(fā)并廣泛適用于各類處理器及平臺。雖然它只是眾多源自C設計理念的編程語言當中的一種,但卻在面向特定嵌入式編程類型時擁有大量遠勝C語言的功能特性。

  Go語言增加了一種顯式散列表類型,這些類型在從各種傳感器及執(zhí)行器處收集數(shù)據(jù)并向其發(fā)送數(shù)據(jù)方面具備相當突出的實用性。Go語言還深入支持使用傳感器以及設備網絡的能力——當然,這同時也增加了潛在風險。

  Go語言能夠大多種不同通道上支持并行輸入、輸出與處理。如果能夠正確使用,這一能力將使得整套傳感器及執(zhí)行器組合得到良好協(xié)調。然而這種特性的風險在于,各通道之間也許并不能意識到對方的存在。如果編程人員有所疏忽,那么缺乏協(xié)調的系統(tǒng)就可能帶來不可預測的行為。從技術角度講,這顯然不是什么好事。

7、Rust

  Rust語言由Mozilla公司開發(fā)而來。與Mozilla旗下的其它軟件類似,Rust屬于開源項目且擁有非常迅猛的演進速度。Rust語言擁有諸多源自Go的特性,不過它也解決了Go當中存在的一大主要問題。

  由于Go語言無法自動在不同數(shù)據(jù)結構“通道”之間進行信息共享,因此最終開發(fā)出的程序有可能存在所謂“競態(tài)條件”。直白地講,這是一種無法控制的狀態(tài),處于這一狀態(tài)下的系統(tǒng)會由于不同進程在運行時處于激烈沖突而導致工作無法完成。Rust語言當中包含的函數(shù)能夠消除競態(tài)條件,從而使其更為可靠地構建起高度并發(fā)程序。

  同樣的,Rust語言對于運行平臺的性能也存在一定要求,不過如果大家的開發(fā)團隊希望開發(fā)一款涉及大量并發(fā)機制的應用,那么Rust與Go都是值得認真考量的編程語言選項。

8、Parasail

  如果大家對于自己物聯(lián)網應用程序的并行處理能力擁有一定要求,那么Parasail語言也是個值得一試的選項。

Parasail是一款編譯型面向對象語言,其始終處于演進當中因此能夠通過與Java、Python、C#甚至是Ada類似的語法進行編程。如果大家需要使用具備高度并行性的嵌入式代碼,那么Parasail則是最理想的語言選項。

9、B#

  我們今天提到的很多語言都屬于大型系統(tǒng)語言,因此要讓其在嵌入式平臺上順利運行,我們需要對其進行具體調整。然而B#則不同,它的設計初衷就是一類著眼于小處的高效嵌入式控制語言。嵌入式虛擬機(簡稱EVM)允許B#語言運行在多種不同平臺之上,且內存占用量僅為24 k——遠低于我們之前提到的其它軟件包運行要求。

  B#語言與C#在某種程度上比較類似。不過相較于C#,B#剔除了相當一部分在嵌入式項目中用不到的特性,并加入了對實時控制功能的支持——這一點在實際使用環(huán)境下顯然非常重要。如果開發(fā)項目未來會運行在輕量級嵌入式平臺之上,其規(guī)模與復雜度皆低于Raspberry Pi,那么B#絕對是個值得認真考慮的編程語言選項。

10、匯編語言

  如果大家希望嚴格遵循比較傳統(tǒng)的設計思路,或者需要盡可能讓自己的項目顯得比較緊湊,那么匯編程序就是達成目標的不二之選。匯編語言能夠構建并打包純粹的機器碼,從而保證大家在處理器之上擁有最為理想的執(zhí)行效率。而且其對性能的要求被控制在最低水平,而且技術高超的行家能夠利用匯編語言實現(xiàn)很多在其它編程機制中根本不存在的優(yōu)化技巧。

  不過,匯編語言的編程工作無法借力于網絡,在網絡上幾乎找不到任何實用工具來幫助自己揪出開發(fā)成果中的各類錯誤。除此之外,匯編語言代碼以及相關程序編寫技能往往沒有任何承接性。我們能夠針對一種處理器編寫出相關代碼,但這并不代表我們能夠面向其它處理器編寫出擁有同樣功能的代碼。

對于希望擁有終極優(yōu)化效果的產品的程序員而言,匯編語言能夠將其體積控制在最低水平且保證其中不包含任何其它環(huán)境因素。不過可以肯定的是,匯編語言絕對不是構建原型方案的最佳方式——如果大家擁有較為充裕的空間及處理性能,那么建議優(yōu)先使用高級語言,現(xiàn)代語言中的諸多優(yōu)勢還是能夠幫上忙的。

11、Forth

  Forth語言屬于面向堆棧語言。如果大家經常使用那種老式惠普計算器,那么肯定會對Forth具備一定程度的理解。作為一種誕生于上世紀七十年代的語言,F(xiàn)orth能夠在具備相關能力的程序員手中實現(xiàn)可觀的生產力與執(zhí)行效率提升效果——而且其他人根本無法使用甚至閱讀由其編寫出的成果。

  以上就是眾多編程語言中,相對來說能夠很好完成嵌入式系統(tǒng)的編程任務的比較出色的11款語言,大家可以參考每一款語言的優(yōu)勢和局限,選擇對應的開發(fā)語言。如果還是不清楚具體用什么語言,可以盡量選擇現(xiàn)在編程中常用的比較大眾一些的語言。

來源:文/小麥麥子(簡書作者)

投訴建議

提交

查看更多評論
其他資訊

查看更多

超越傳統(tǒng)直覺,MATLAB/Simulink助力重型機械的智能化轉型

新大陸自動識別精彩亮相2024華南國際工業(yè)博覽會

派拓網絡被Forrester評為XDR領域領導者

智能工控,存儲強基 | 海康威視帶來精彩主題演講

展會|Lubeworks路博流體供料系統(tǒng)精彩亮相AMTS展會