天天看點

slice語言

接口、操作、異常,以及繼承等核心的 Slice概念。這些概念對分布式系統的行為有着深遠的影響,你應該詳細閱讀。

Slice 的讀音和a slice of bread 中的slice的讀音是一樣的。(Specification Language for Ice)是一種用于使對象接口與其實作相分離的基礎性抽象機制。 Slice在客戶與伺服器之間建立合約,描述應用所使用的各種類型及對象接口。這種描述與實作語言無關,是以編寫客戶所用的語言是否與編寫伺服器所用的語言相同,這沒有什麼關系。

Slice定義由編譯器編譯到特定的實作語言 。編譯器把與語言無關的定義翻譯成針對特定語言的類型定義和 API。開發者使用這些類型和API 來提供應用功能,并與 Ice 互動。用于各種實作語言的翻譯算法稱為語言映射(language mappings)。 Ice 目前定義了C++ 和 Java 的語言映射。

因為 Slice描述的是接口和類型(不是實作),它是一種純粹的描述性語言;你無法用 Slice編寫可執行語句。

Slice定義關注的焦點是對象接口、這些接口所支援的操作,以及操作可能引發的異常。此外, Slice還提供了一些用于對象持久的特性(參見第21 章)。這需要相當多的支援機制;特别地, Slice的相當一部分關注的是資料類型的定義。這是因為,隻有在其類型用 Slice進行了定義之後,資料才能在客戶與伺服器之間交換。你不能在客戶與伺服器之間交換任意的C++ 資料,因為 這可能會摧毀 Ice 的語言無關性。但是,你總能建立一種Slice類型定義,與你想要發送的 C++ 資料相對應,然後你就可以傳送這種Slice類型了。

在此我們将介紹 Slice的完整文法和語義。因為Slice 的許多文法和語義都是以 C++ 和 Java為基礎的,我們将特别關注 Slice與 C++ 或 Java不同的部分,或是 Slice以某種方式限制了等價的 C++ 或 Java特性的部分。與C++ 和 Java 特性相同的 Slice特性通常會用例子來說明。

編譯

Slice編譯器生成的源檔案必須與應用代碼相結合,才能産生客戶和伺服器的可執行程式。

slice語言
slice語言

含有 Slice定義的檔案必須以 .ice擴充名結尾

于大小寫不敏感的檔案系統(比如 DOS),檔案擴充名可以寫成大寫,也可以寫成小寫,是以 Clock.ICE 是合法的。對于大小寫敏感的檔案系統(比如 UNIX),Clock.ICE 是非法的(擴充名必須小寫)。

這裡我們的建議是利率采用小寫。

Slice是一種形式自由的語言,是以你可以使用空格、橫向和縱向制表符、換頁,以及換行字元,按照你希望的任何方式安排代碼的布局(空白字元是 token 分隔符) 。Slice不會把語義與定義的布局關聯起來。  你可以遵循我們在本書中的 Slice例子中使用的風格。

slice語言
slice語言

這部分我們很快速的浏覽,這也是學習所要必備的技能。

繼續閱讀