
物聯(lián)網(wǎng)開發(fā)項目正在全球范圍內(nèi)如火如荼的地進(jìn)行。新型的硬件平臺的出現(xiàn)能夠讓工程師們能夠以前所未有的便捷在物聯(lián)網(wǎng)應(yīng)用中構(gòu)建嵌入式系統(tǒng)。然而硬件平臺選定,接下來的開發(fā)選擇也讓我們應(yīng)接不暇,也更具挑戰(zhàn)。
首先和iot101君來一同來看一下常見的物聯(lián)網(wǎng)編程語言有哪些?
1、C
C語言最早是用來為電話交換機編程的,所以其作為嵌入式開發(fā)的合理選項也是一件很自然的事情。C語言可以被看作是軟件開發(fā)世界的一門通用語言:基本上其可用于幾乎所有的嵌入式系統(tǒng)平臺;雖然仍有少部分平臺不支持C語言,但C語言仍然是其專用語言軟件工具包的開發(fā)的基礎(chǔ)。
通常情況下,一個專業(yè)的程序員對C語言都有很好的了解,就算目前他們并沒有這樣做,但如果其在職業(yè)生涯中學(xué)習(xí)一些C語言,對其職業(yè)的未來也是大有回報的。今天看來,C語言確實是有一點落后了:它是一門面向過程而非面向?qū)ο蟮拈_發(fā)語言,不附帶內(nèi)置圖形用戶界面,而且語言需要經(jīng)過編譯、而不是解釋。盡管如此,C語言仍然是物聯(lián)網(wǎng)開發(fā)的重要候選項之一。
2、C++
在1980年代,當(dāng)程序開發(fā)開始向“面向?qū)ο?rdquo;轉(zhuǎn)變時,面向過程的開發(fā)語言Fortran、Cobol和C看起來似乎就要銷聲匿跡了。后來,F(xiàn)ortran和Cobol語言真的進(jìn)入了博物館,而C語言則在Bjarne Stroustrup的幫助下獲得了一個面向?qū)ο蟮念A(yù)處理器——這個預(yù)處理器后來被稱為C++。
C++保留了C的基本性質(zhì),還額外增加了數(shù)據(jù)抽象、類和對象。所有的這些特性使得C++成為編寫基于Linux的嵌入式和物聯(lián)網(wǎng)代碼的熱門選擇。這門編程語言的使用壽命已經(jīng)超過了30年,而且至今還依然很強大。
3、Java
C和C++都更接近底層設(shè)計,所以其允許對其運行的硬件進(jìn)行非常直接的控制。當(dāng)你在需要對硬件進(jìn)行非常精細(xì)的監(jiān)測和控制時,他們都是很好的選擇,但這也意味著所寫出的代碼專用化程度很高,也就是說代碼的移植性比較差。
Java是一種面向?qū)ο蟮拈_發(fā)語言,其擁有非常良好的移植性:編譯器中的硬件依賴型性非常少!為了實現(xiàn)對特定硬件部分的精細(xì)控制,Java依賴于各種硬件支持庫。
從經(jīng)濟(jì)角度上看,Java是一門非常強大的語言:對Java代碼的一次投入可以在多個不同的平臺收貨果實。而且在全球許多不同的大學(xué)中,Java也是作為計算機科學(xué)和電子工程的主要編程教學(xué)語言之一,所以懂得Java的人才也比較多。但是首先你要確定你選擇的平臺支持Java,因為通常性能越低的平臺對Java的支持也越低;而且還要確保你有合適的硬件支持庫。
4、JavaScript
人們很容易就將JavaScript是為了Java的變種,但這是錯誤的。這兩種編程語言確實在一些地方有共同之處(比如兩者之間有一些庫是可以共用的),但這兩種語言是分別開發(fā)出來的,并沒有語法和語義的共享。
JavaScript,顧名思義,是一種腳本語言。這種腳本語言被廣泛地應(yīng)用在網(wǎng)頁前端應(yīng)用的構(gòu)建上。比如,如果你想在樹莓派上面使用Apache服務(wù)器來收集基于Arduino的傳感器網(wǎng)絡(luò)數(shù)據(jù),JavaScript就能為你提供很大的幫助。
JavaScript最先出現(xiàn)在Netscape上,而現(xiàn)在它已經(jīng)成長為一門功能齊全的語言。盡管如此,你卻不能使用其來為你的輕量級嵌入式控制器進(jìn)行開發(fā),因為其解釋性的結(jié)構(gòu)意味著需要為之付出額外的代價;換句話說,你至少需要在樹莓派等級的設(shè)備上使用這門語言。
5、Python
一門在節(jié)假日開發(fā)的、以一個戲劇劇團(tuán)命名的語言似乎看起來不應(yīng)該成為嚴(yán)肅的開發(fā)應(yīng)用的候選者。然而,Python已經(jīng)成為了網(wǎng)頁開發(fā)中的“go-to”開發(fā)語言之一,而其應(yīng)用領(lǐng)域也已經(jīng)擴展到了嵌入式控制和物聯(lián)網(wǎng)領(lǐng)域。Python在很多方面都非常靈活。比如,其實一種解釋性的語言,可以被提交給運行時編譯器或者通過多個預(yù)編譯器中一個運行,這樣可以使得緊湊的可執(zhí)行代碼進(jìn)行分布式的處理。