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

編程語(yǔ)言界再填新銳,,Google前工程師開(kāi)源 Toit語(yǔ)言

2021-11-29
來(lái)源:CSDN
關(guān)鍵詞: 編程語(yǔ)言 Toit 開(kāi)源

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

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

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

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

  Toit 平臺(tái)通過(guò) CoAP 到 TLS 流式傳輸應(yīng)用程序圖像結(jié)束,,設(shè)備一次接收 32 個(gè)字,,并在它們寫(xiě)入閃存之前重新定位它們。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)、類(lèi)和接口中提取基本信息,,并以緊湊的形式存儲(chǔ)它們,。類(lèi)似地,Kasper 團(tuán)隊(duì)通過(guò)將方法作為一個(gè)扁平的字節(jié)序列集中存儲(chǔ)在類(lèi)似于 ELF 文件的 .text 段的東西中來(lái)節(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ì)表示一開(kāi)始就意識(shí)到在某些時(shí)候 Toit 編程語(yǔ)言必須開(kāi)源,“所有主要的編程語(yǔ)言都是開(kāi)源的,,你可以從開(kāi)源中獲得充滿活力的生態(tài)系統(tǒng),,這樣才能大規(guī)模采用一種編程語(yǔ)言?!?/p>

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

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




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)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。