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). 

外部連結