《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 人工智能 > 業(yè)界動(dòng)態(tài) > 編程語言界再填新銳,Google前工程師開源 Toit語言

編程語言界再填新銳,Google前工程師開源 Toit語言

2021-11-29
來源:CSDN
關(guān)鍵詞: 編程語言 Toit 開源

  前幾年,基于對(duì)智能小工具和支持互聯(lián)網(wǎng)設(shè)備的功能性和穩(wěn)健性的挫敗,Toit 編程語言的創(chuàng)始團(tuán)隊(duì)決定開始考慮為物聯(lián)網(wǎng)(IoT)開發(fā)軟件,尤其是嵌入式網(wǎng)絡(luò)連接設(shè)備。

  其中聯(lián)合創(chuàng)始人 Kasper Lund 在 Google 工作了 12 年,擔(dān)任高級(jí)工程師和站點(diǎn)負(fù)責(zé)人,是一位編程語言和虛擬機(jī)老手。他在 Google 任職期間和團(tuán)隊(duì)共同創(chuàng)建了 V8 和 Dart 項(xiàng)目,并作為 Crankshaft 項(xiàng)目的技術(shù)負(fù)責(zé)人為 JavaScript 帶來了自適應(yīng)優(yōu)化,最終讓網(wǎng)絡(luò)變得更快。正由于 Kasper 團(tuán)隊(duì)在 Google 為 Flutter 構(gòu)建 V8 JavaScript 引擎和 Dart 語言的項(xiàng)目中積累的豐富經(jīng)驗(yàn),他們開始為了連接到互聯(lián)網(wǎng)的嵌入式設(shè)備構(gòu)建、部署和維護(hù)軟件,研發(fā)最佳平臺(tái)。

  當(dāng) Kasper 團(tuán)隊(duì)開始構(gòu)建平臺(tái)時(shí),他們意識(shí)到他們需要一種高效的、專門為滿足物聯(lián)網(wǎng)的需求而設(shè)計(jì)的高級(jí)編程語言。但這種高級(jí)編程語言不存在,于是 Kasper 團(tuán)隊(duì)開始探尋解決方案。在研究了 Python 和 JavaScript 兩種編程語言后,發(fā)現(xiàn)這兩種語言在微控制器上的編寫速度不夠快,存在性能不佳的障礙。隨后團(tuán)隊(duì)開啟緊縮模式,幾個(gè)月后開發(fā)出了一種將內(nèi)存分配抽象出的高級(jí)語言:Toit 編程語言。

  Toit 語言在 ESP 32 上執(zhí)行代碼的速度比 MicroPython 快 30 倍以上,且 Python 開發(fā)人員可以在幾個(gè)小時(shí)內(nèi)學(xué)會(huì)。Toit 平臺(tái)允許在像 ESP 32 這樣的小型微控制器上并排安裝獨(dú)立開發(fā)的應(yīng)用程序。虛擬機(jī)內(nèi)置支持基于比特流和重定位信息在閃存中構(gòu)建應(yīng)用程序映像。重定位信息至關(guān)重要,因?yàn)樗试S設(shè)備在閃存中自由選擇安裝應(yīng)用程序的位置。Kasper 團(tuán)隊(duì)沒有奢侈地使用虛擬內(nèi)存讓系統(tǒng)相信應(yīng)用程序總是從內(nèi)存中的特定位置運(yùn)行,因此他們必須使應(yīng)用程序映像適應(yīng)它最終存儲(chǔ)在閃存中的實(shí)際位置。

  Toit 平臺(tái)通過 CoAP 到 TLS 流式傳輸應(yīng)用程序圖像結(jié)束,設(shè)備一次接收 32 個(gè)字,并在它們寫入閃存之前重新定位它們。Kasper 團(tuán)隊(duì)設(shè)計(jì)了它,所以他們永遠(yuǎn)不必將完整圖像保存在 RAM 中。一旦他們完成了所有應(yīng)用程序圖像位,他們就使用校驗(yàn)和機(jī)制驗(yàn)證它們,最后提交標(biāo)頭,將應(yīng)用程序轉(zhuǎn)換為有效且可運(yùn)行的功能塊。

  典型的 Toit 應(yīng)用程序映像總共約為 30 KB。其中絕大多數(shù)是以易于解釋的形式描述各個(gè)方法的行為的字節(jié)碼。Kasper 團(tuán)隊(duì)從程序的層次結(jié)構(gòu)、類和接口中提取基本信息,并以緊湊的形式存儲(chǔ)它們。類似地,Kasper 團(tuán)隊(duì)通過將方法作為一個(gè)扁平的字節(jié)序列集中存儲(chǔ)在類似于 ELF 文件的 .text 段的東西中來節(jié)省空間。圖像中唯一的結(jié)構(gòu)化對(duì)象是應(yīng)用程序附帶的編譯時(shí)常量。

  Toit 虛擬機(jī)最終就像一個(gè)基于閃存的文件系統(tǒng),帶有動(dòng)態(tài)重定位鏈接器,用于安裝、升級(jí)和卸載可以直接從閃存運(yùn)行的應(yīng)用程序映像。應(yīng)用程序是完全獨(dú)立的,僅共享設(shè)備上虛擬機(jī)提供的內(nèi)容。

  Kasper 團(tuán)隊(duì)表示一開始就意識(shí)到在某些時(shí)候 Toit 編程語言必須開源,“所有主要的編程語言都是開源的,你可以從開源中獲得充滿活力的生態(tài)系統(tǒng),這樣才能大規(guī)模采用一種編程語言。”

  經(jīng)過多次迭代和在實(shí)際環(huán)境中使用 Toit 的大量經(jīng)驗(yàn),Kasper 團(tuán)隊(duì)運(yùn)用 Toit 語言為微控制器編寫了強(qiáng)大軟件非常有用的構(gòu)建塊,他們也希望更多的開發(fā)人員能夠從中受益。他們等待這一天已經(jīng)很久了,因此很高興能開源分享 Toit 語言,并通過 GitHub (https://github.com/toitlang/toit)來提供它。

  Toit 語言的開源,也為編程語言屆再添新銳,其不管是對(duì)編程語言屆、開源屆,還是物聯(lián)網(wǎng)屆都是一大利處,眾多編程語言爭(zhēng)寵,而你最喜歡誰呢?




1.png

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。