概述
Occam語言是根據C.A.R.Hoare提出的CSP(Communicating Sequential Process)語言模型而設計的一種並發程式設計語言,0ccam語言是用14世紀英國牛津哲學家William of occam的名字命名的。William of occam有這樣一種哲學觀點:任何問題,用最簡單的方法能解決的途徑是最好的途徑。簡明性是Oceam語言的特點。
Oeeam語言與Transputer晶片是同時相互對應進行設計開發的,因此它們之間的結合所獲得的效率,是一般語言望塵莫及的。可以這樣說,Occam語言對於Transputer系統設計的作用,就如同布爾爾代數對於邏輯門電路設計的作用。Occam程式中的進程,可以映射到一個Transputer系統的有關Transputer單元中去,用Occam語言為一個並發系統所編的程式,實際上起著該Transputer系統的作業系統的作用。
Occam語言是建立在並發和通信基礎上的新的並發程式語言,它把一個並發系統描述成一組並發進程,進程間通過命名通道來實現通信。
大量的調試工作在Transputer開發系統(如TDS2)中用軟體手段來完成,避免了通常多處理器在硬體上進行調試的麻煩。隨著Occam語言在不同機型中的實現,Occam還可用在其他晶片組成的系統中。
定義和類型和範圍
Occam同
Pascal等其他高級語言一樣,要求程式中用到的每一個項都要有一個類型和每一項類型在某進程使用它之前進行定義。Occam不允許程式設計師定義新的類型。
(1)名字:Occam中名字的長度不限,但它必須以字母表中的字母開頭。名字的其餘部分可由字母、數字和字元構成。大小寫在Occam中區分識別,所以fred和Fred是兩個不同的名字。
(2)數據類型:變數可有多種
數據類型。下面是Oceam中經常使用的數據類型:
BYTE——0和255之間的整數,經常用以表示
字元。
(3)通道類型:通道的類型為“CHAN OF類型”。對通道傳送的值,要對其數據類型和數據結構進行定義。目前,我們把通道看作只傳送單數據類型的單個值,就像變數一樣。
傳送單個整型值的通道可定義為:
CHAN OF INT chan3:
其中INT定義通過通道chan3的數據類型。chan3的類型是CHAN OF INT。
(4)字元和
字元串:Occam沒有任何CHAR或STRING類型來表達字母、字元或字詞。Occam中字母、字元用BYTE類型的數來表達,字元串用BYTE類型的數組來表達。
(5)布爾類型:通過測試比較運算符的運算,產生布爾值。
(6)常量:給某常數定一個名字,可通過“VAL類型名字IS值”來定義。
(7)作用域:在Occam中,變數、通道和其他命名項都是屬於某個進程的,進程緊跟在對應的命名項的定義後面。
進程
一個進程可以認為是執行一段程式,它啟動、執行一定的動作,然後中止或結束。
Occam語言有三個基本進程;
將表達式的值賦給變數。
(2)輸出進程:通道!表達式
將表達式的值輸出到通道。
(3)輸入進程:通道?變數
將從通道輸入的值賦給變數。
Occam語言還有兩個特殊進程:SKIP和STOP。SKIP進程開始執行後不做任何動作就結束。STOP進程開始執行後不再向下執行也不終止,稱之為中止。