C與C++從起步階段的設計初衷就一直在于對其運行所在的硬件平臺進行直接控制。這種特性在需要對硬件進行細化程度極高的監(jiān)測及控制時確實優(yōu)勢明顯,但這同時也意味著我們所編寫的代碼需要從非常具體的角度考量硬件狀況。而用編程圈里的行話來說,就是代碼不太適合進行移植。
Java的設計思路則被打造成一款面向對象語言,因此具備非常出色的可移植性:編譯器當中幾乎不存在任何硬件依賴性。而要對特定硬件進行特殊而準確的控制,Java需要借助硬件所支持的庫并從中調(diào)用通用代碼。
這一切都讓Java擁有極具吸引力的經(jīng)濟性定位:對Java代碼開發(fā)進行一次性投入,企業(yè)將能夠獲得足以運行在多種不同平臺之上的開發(fā)成果。Java同時也是當前人氣最高的主流編程語言之一,其被應用于成千上萬計算機科學與電子工程技術項目當中。因此我們能夠從人才市場上輕松找到能夠勝任相關工作的應聘者。但從另一方面講,選擇Java的問題在于我們必須確保自己所選定的平臺能夠支持Java(目前只有極少數(shù)強大的平臺會提供Java支持能力),同時又要保證這些硬件能夠支持我們?yōu)榱藢崿F(xiàn)特定控制功能所需要使用的庫。
JavaScript

從表面上看,大家很容易誤以為JavaScript屬于Java語言的某種衍生版本。完全可以理解,不過完全錯誤。這兩種語言確實在某種程度上存在類似或者說交集(例如某些庫可以同時與二者相兼容),但二者的開發(fā)過程完全獨立而且并不共享任何語法或者語義。
顧名思義,JavaScript是一種腳本語言,被廣泛應用于構建Web前端應用。如果大家打算在Raspberry Pi硬件平臺上使用Apache服務器,旨在從由Arduino傳感器構建的網(wǎng)絡當中提取數(shù)據(jù),那么JavaScript絕對是個很好的起步選項。
自從被網(wǎng)景公司開發(fā)出來之時,JavaScript就一直在快速發(fā)展演進并已經(jīng)成為一款功能齊備的語言。不過大家千萬別把它當成是什么輕量化嵌入式控制器——它所采用的解釋結構意味著我們需要承擔其運行成本。換言之,至少也得是Raspberry Pi這樣的系統(tǒng)才能承擔JavaScript所帶來的性能損失。
Python

這款在假期閑暇時間開發(fā)而成并借用著名喜劇團體命名的編程語言從表面上看似乎不太可能成為嚴肅開發(fā)項目的備選方案。然而事實證明,Python如今已經(jīng)成為Web開發(fā)領域最具活力的語言選項之一,而且其應用范圍已經(jīng)擴散到了嵌入式控制以及物聯(lián)網(wǎng)領域。Python在很多方面擁有極為出色的靈活性表現(xiàn)。舉例來說,它作為一種解釋語言能夠被提交至單一運行時編譯器當中,或者通過其中內(nèi)置的預編譯器實現(xiàn)代碼運行,從而對其緊湊的可執(zhí)行代碼進行分發(fā)。
而最讓編程團隊心動的是,Python語言擁有自己的一大專注重點,即高度強調(diào)代碼內(nèi)容的可讀性。這款語言的設計規(guī)范提到了代碼可讀性以及緊湊優(yōu)雅語法的重要意義。任何一位曾經(jīng)試圖解讀他人C語言代碼并希望對其進行優(yōu)化的朋友,應該都能深刻感受到代碼可讀性在實際工作中的關鍵作用。
與本篇文章提到的其它語言一樣,Python充當嵌入式語言的前提在于其運行所處的嵌入式平臺需要具備一定的計算能力。如果大家希望開發(fā)的是一款能夠獲取數(shù)據(jù)、將其以某種數(shù)據(jù)庫格式加以整理,而后匯總成表以實現(xiàn)信息控制的應用方案,那么Python絕對是位頗具競爭力的候選編程語言選手。
Go

首先必須強調(diào)一點:這里說的是“Go”,而不是“Go!”二者屬于完全不同的兩種語言,而且擁有完全不同的功能定位。Go由谷歌公司負責開發(fā)并廣泛適用于各類處理器及平臺。雖然它只是眾多源自C設計理念的編程語言當中的一種,但卻在面向特定嵌入式編程類型時擁有大量遠勝C語言的功能特性。
Go語言增加了一種顯式散列表類型,這些類型在從各種傳感器及執(zhí)行器處收集數(shù)據(jù)并向其發(fā)送數(shù)據(jù)方面具備相當突出的實用性。Go語言還深入支持使用傳感器以及設備網(wǎng)絡的能力——當然,這同時也增加了潛在風險。