跳至內容

E語言

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

E 語言是一九九七年由 Mark S . Miller、Dan Bornstein 和 Electric Communities 的其他人建立的用佇安全分散式計算的物件導向程式設計語言。E 語言主要是安全分散式編程當中 Java 並列語言 Joule 和 Original-E,後者是 Java 的一組擴充。E 會佮訊息的計算佮類 Java 語法相結合。是因為事件回圈佮 Promise 的閣行模型確保永遠袂發生死結。

開發理念佮過程

E 語言咧設計的時考慮著安全計算;這主要是通過嚴格遵守物件導向計算模型來實現的,物件導向計算模型的純形式有支援安全計算的屬性。E 語言佮其標準庫始總採用是能力的設計理念,以幫助程式設計師構建安全的軟體,並使軟體組件就算彼此無完全信任也會當合作。佇咧 E 語言內底,用一寡物件參照的作功能,因此功能無增加計算抑是概念性開銷。這个語言的這个語法予人設計共便於人審查安全性缺陷。比如講,詞法作用域限制了必須檢查對予定變數的影響的代碼數量。另外一个例,語言使用==運算子進行較,使用:=運算子進行這个價值;為著避免去透濫的可能性,無咧=運算子。

計算模型

佇咧 E 語言內底,所有值攏是物件,計算是通過向物件傳送訊息來執行的。每一个物體攏屬於一个 _ vat _(類似行程)。 彼每一个 vat 攏有一个執行執行、一个疊框佮一个事件佇咧列。散分散式編程只是向遠端的物件(其他 vat 中的東西)傳送訊息的問題。佮遠端方的所有通信攏由 E 執行加密。達到的訊息被囥起來 vat 的事件佇列中;vat 的事件迴圈揤到位的次序逐个處理傳入的訊息。

E 語言有兩種傳送訊息的方式:即時呼叫eventual 傳送。隨呼叫類似就是非並行語言內底的典型函式抑是方法呼叫:傳送方等待接收方完成並倒轉值。eventual 傳送傳送的訊息,同時為結果生成一个預留位置,這號做 promise。傳送者隨𤆬 promise 繼續執行。了後,當接收者完成並產生結果的時陣,promise 會解析做結果。因為佇遠端的物件通批的時陣干焦允准 eventual 傳送,因此袂發生死結。佇分散式系統內底,promise 機制閣會當上細化由網路延遲引起的延延。

語法佮範例

E 的語法佮 Java 上蓋為相𫝛,做你共伊做 Python 和 Pascal 有的相𫝛嘛。變數攏動態型別的,並且有詞法度作用域。毋過,佮 Java 抑是 Python 無仝的是,E 完全由表達式組成。下跤是一个非常簡單的 E 語言程式:

遮有一个遞迴函式,用佇計算一个數的階乘,伊是用 E 語言寫的。函式使用def關鍵字定義。

佇第一行中,: int是約束函式的參數佮結果的「守衛」。 守衛和類型聲明並無完全相仝;守衛是可選的,會當指定約束。第一啦: int確保函式體只需要處理整數參數。若無面頂的第二个: int參數,函式將袂當倒轉值。會當事先看著函式的資訊泄漏,對安全審計有利。

因為 E 的目的是支援安全合作,所以 E 程式的典型例是挖礦,伊是一个簡單的電子貨幣系統,只要幾行 E 代碼。下跤的代碼定義一个挖礦的函式,其中每一个礦廠攏有家己的貨幣。每一个礦廠會當製造做有家己錢袋仔的錢袋仔,任何兩个仝一種貨幣的錢袋仔的持有的人攏會當安全地佇兩个錢袋仔中央轉數。通過快速檢查原始碼,E 程式設計師會使真容易地驗證只有礦廠會使改變流通中的貨幣數量,貨幣干焦會當予創造爾袂當予人銷毀,礦廠干焦會當創造家己的貨幣,干焦錢包仔有者才有法度改變伊的餘額。

佇咧 E 語言內底使用def關鍵字定義物件,佇咧物件定義中,to關鍵字開始逐个方法。本身如中的守衛表達式說明矣如何指定值約束(如: ( int >=零 )抑是: ( 零 . . balance ))。

挖礦的例使用一个內起的機制,這號做 sealer。函式makeBrandPair建立了兩个關聯的物件,一个 sealer 佮一个 unsealer,按呢乎 sealer 就會當佇一个盒仔內底封一个物件,而且 unsealer 就是唯一會當檢索盒仔內底內容的物件。有關這貨幣範例的閣較詳細說明,請參閱 E 語言的網站。

參考文獻

外部連結

  • 官方網站