"Modula
正文
Modula 2 是a computer programming 的語言 被發明 Niklaus Wirth 在 ETH 在附近 1978, 作為一個后繼者 Modula, 其它語言由他。 Modula 被實施了1980 年在 Lilith 計算機, 由新運作公司DISER (數據圖象聲音處理器和放射器接收器系統) 商業化1982 年作為MC1 和MC2 。 DISER 全世界賣了120 個單位, Modula 2 語言寬松地根據 mesa 編程語言, 從Xerox, 那Wirth 看見了在他的1976 sabbatical 年期間在Xerox PARC 。
描述
Modula 2 是一般用途 程序語言, 充足地靈活做系統編程, 但以更加寬廣的應用。特別是, 它被設計支持分開的編輯和數據抽象化用一個直接的方式。許多句法根據Wirth 的更加早期和更加著名的語言, Pascal. Modula 2 被設計寬廣地是相似與Pascal, 與一些元素被去除和重要加法 模塊 概念, 和直接語言支持 多道程序設計
Modula 2 模塊 可以被使用濃縮一套相關部分程序和數據結構, 和制約他們的可見性從其它節目的部份。模塊設計實施了Modula 2 數據抽象化特點用一個非常干凈的方式。 Modula 2 節目由模塊組成, 每個被彌補二份: a 定義模塊, 接口部份, 包含唯一那些子系統的部份是 出口 (可看見對其它模塊), 和 實施模塊, 包含運作的代碼是內部的對模塊。
語言有嚴密的范圍控制。特別是模塊的范圍可能被考慮作為inpenetrable 墻壁: 除了標準idenfiers 對象從外面世界不是可看見的在模塊里面除非明確地進口; 內部模塊對象不是可看見的從外面除非明確地出口。
假設模塊M1 出口對象a 、b 、c, 和P 由列舉它的標識符在一份明確出口商品目錄
定義模塊M1; 出口合格了a, b, c, P; ...
然后對象a 、b 、c, 和P 從模塊m1 成為現在知道的外部模塊M1 作為M1 。a, M1 。b, M1 。c, 和M1 。P 。他們被出口在a 合格 方式對宇宙(被承擔的模塊M1 是全球性的) 。出口的模塊名稱, i 。e 。 M1, 被使用作為合格者被對象名跟隨。
假設模塊M2 包含以下進口聲明
模塊M2; 進口M1; ...
然后這意味, 對象由模塊M1 出口對宇宙可能現在被使用在模塊M2 里面。他們參考在a 合格 方式喜歡這: M1 。a, m1 。b, M1 。c, 和M1 。P 。例子:
... M1 。a:= 0; M1 。c:= M1 。P(M1 。a + M1 。b); ...
合格的出口避免命名碰撞: 例如, 如果其它模塊M3 并且會出口對象稱P, 我們能仍然然后區別二個對象, 從M1 。P 與M3 不同。P 。由于合格的出口它不事關, 兩個對象叫做P 里面他們出口的模塊M1 和M3 。
有一個供選擇的技術可利用, 是在寬用途由Modula 2 程序員。假設模塊M4 被公式化作為這
模塊M4; 從M1 進口a, b, c, P;
然后這意味, 對象由模塊M1 出口對宇宙可能再被使用在模塊M4 里面, 但現在由在被出口的標識符的僅僅參考以"不夠資格的" 方式象這樣: a 、b 、c, 和P 。例子:
... a:= 0; c:= P(a + b); ...
unqualifying 進口這個技術準許確切地使用對象外部他們出口的模塊在同樣簡單, i 。e 。不夠資格, 方式作為里面出口的模塊。墻壁圍攏所有模塊現在變得毫不相關為這明確地考慮到的所有那些對象。當然unqualifying 的進口是只可適用的如果沒有名字碰撞。
這些出口并且進口規則也許似乎多余地限制性和絮絮叨叨。但他們不僅保障對象免受不需要的通入, 而且有宜人的副作用提供自動相互參照每個標識符的定義在節目: 如果標識符由模塊名稱合格, 定義然后來自那個模塊。否則如果它發生不夠資格, 簡單地查尋落后, 和您將或者遭遇那個標識符的聲明, 或它的發生在命名模塊它來自的進口聲明。這物產變得非常有用當嘗試了解大節目包含許多模塊。
語言提供(有限的) 唯一處理器并發(顯示器, coroutines 并且明確控制轉移) 和為硬件通入(絕對地址, 二進制處理, 和 interrupts). 它用途 命名相等
相關語言
雖然Modula 2 是顯然最響譽和廣泛被應用的變形, 有被關系得無論怎樣的幾種語言: 原物, 和相當不同, Modula (打算供系統實現使用), Modula 2+ 、Modula 2 * (平行的引伸), ISO Modula 2 OO 和普通引伸, Modula 3 (由DEC 和Olivetti; 增加無用單元收集、對象, 和generics), Oberon (另, 以后, Wirth 設計), Oberon-2 (Oberon 以OO 引伸), 客觀Modula 2 (Modula 2 雜種和 smalltalk) 和一定數量其他。這些不應該被認為"更好的版本" 或"替換" 為Modula 2; 多數是不同的語言用不同的目的, 和以他們自己的力量和弱點。
與一起 C 和 Ada, Modula 2 經常被認為三個最重大的"現代" 編程語言(ie 的當中一個, structured 編程 時代) 。三, Modula 2 是最小, 最容易讀, 最容易學會, 和最干凈語法上和概念性地設計, 。 Modula 2 被開發了作為系統語言為 Lilith 工作站, 和形成依據的 Oberon 項目在ETHZ 。多數當前的編程語言采取了許多Modula 2 特點。
參考資料 >