BETA是一種純面向對象編程語言,由克利斯登·奈加特為首的斯堪的納維亞學者開發,他們開發了第一個面向對象語言Simula[1]。它的顯著特徵,是介入了內部類,並將類和過程統一成所謂的模式。這個項目從2020年10月開始不再活躍[2]

BETA
編程範型面向對象
設計者Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen英語Birger Møller-Pedersen, Kristen Nygaard
面市時間1986年
操作系統跨平台
網站beta.cs.au.dk
主要實作產品
Mjølner System
啟發語言
Simula

特徵

編輯

技術概覽

編輯

從技術的角度看,BETA提供了一些獨特的特徵。類和過程被統一成一個概念:模式。還有,類被定義為對象的屬性/特性。這意味着沒有顯式的對象上下文,類就不能實例化。故而有一個結果,就是BETA支持嵌套類。類可以被虛擬定義,就像多數面向對象編程語言中能見到的虛方法。虛擬實體(比如方法和類)永不能覆寫,它們轉而可以重新定義或特殊化。

BETA支持編程的面向對象視角,並有着針對過程式和函數式編程的綜合性設施。它有着強力的抽象機制來支持對象識別、分類和複合。BETA是靜態類型的語言,就像Simula、EiffelC++,帶有編譯時間的多數類型的檢查[1]。BETA的目標是在編譯時間類型檢查和運行時間類型檢查之間實現優化的平衡。

模式

編輯

這個語言的主要和獨特的特徵是模式的概念。在其他編程語言比如C++中,可能有很多類和過程。BETA使用模式來表達二者概念。

例如,一個簡單的C++類有如下形式

class point {
    int x, y;
};

在BETA中,同樣的類可以表示為模式

point: (#
    x, y: @integer
#)

這個叫做point的類有二個整數類型的字段xy。符號(##)介入模式。使用冒號來聲明模式和變量。在字段定義中整數類型之前的@符號指定它們是整數字段,而非與之相對的引用、數組或其他模式。

另一個比較,C++中的過程有如下形式

int max(int x, int y)
{
    if(x >= y) {
        return x;
    }
    else {
        return y;
    }
}

在BETA中,這個函數可以使用模式寫為

max: (#
    x, y, z: @integer
enter (x, y)
do
    (if x >= y // True then
        x -> z
    else
        y -> z
    if)
exit z
#)

xyz是局部變量。enter關鍵字指定給這個模式的輸入參數,而exit關鍵字指定這個函數的結果。在二者之間,do關鍵字前綴於要做的一序列運算操作。條件塊用(ifif)來界定,就是說if關鍵字成為了開和閉圓括號的一部份。真值通過在if塊內的// True來檢查,最後,賦值算符->將它左手側的值賦給它右手側的變量。

Hello world!

編輯

下面的代碼片段打印「Hello world!」:

(#
do Hello world!’->PutLine
#)

延伸閱讀

編輯

引用

編輯
  1. ^ 1.0 1.1 Source: An overview of BETA頁面存檔備份,存於網際網路檔案館) Ole Lehrmann Madsen: An overview of BETA
  2. ^ 存档副本. [2020-05-16]. (原始內容存檔於2021-03-04). 

外部連結

編輯