BETA語言
BETA是一種純物件導向的程式語言,由克利斯登·奈加特為首的斯堪的納維亞學者開發,他們開發了第一個物件導向語言Simula[1]。它的顯著特徵,是介入了內部類,並將類和過程統一成所謂的模式。這個專案從2020年10月開始不再活躍[2]。
編程範型 | 物件導向 |
---|---|
設計者 | Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen, Kristen Nygaard |
釋出時間 | 1986年 |
作業系統 | 跨平台 |
網站 | beta |
主要實作產品 | |
Mjølner System | |
啟發語言 | |
Simula |
特徵
技術概覽
從技術的角度看,BETA提供了一些獨特的特徵。類和過程被統一成一個概念:模式。還有,類被定義為對象的屬性/特性。這意味着沒有顯式的對象上下文,類就不能實例化。故而有一個結果,就是BETA支援巢狀類。類可以被虛擬定義,就像多數物件導向程式設計語言中能見到的虛方法。虛擬實體(比如方法和類)永不能覆寫,它們轉而可以重新定義或特殊化。
BETA支援編程的物件導向視角,並有着針對程序式和函數式程式設計的綜合性設施。它有着強力的抽象機制來支援對象辨識、分類和複合。BETA是靜態型別的語言,就像Simula、Eiffel和C++,帶有編譯時間的多數類型的檢查[1]。BETA的目標是在編譯時間型別檢查和執行時間型別檢查之間實現最佳化的平衡。
模式
這個語言的主要和獨特的特徵是模式的概念。在其他程式語言比如C++中,可能有很多類和過程。BETA使用模式來表達二者概念。
例如,一個簡單的C++類別有如下形式
class point {
int x, y;
};
在BETA中,同樣的類可以表示為模式
point: (#
x, y: @integer
#)
這個叫做point
的類有二個整數類型的欄位x
和y
。符號(#
和#)
介入模式。使用冒號來聲明模式和變數。在欄位定義中整數類型之前的@
符號指定它們是整數欄位,而非與之相對的參照、陣列或其他模式。
另一個比較,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
#)
x
、y
和z
是局部變數。enter
關鍵字指定給這個模式的輸入參數,而exit
關鍵字指定這個函數的結果。在二者之間,do
關鍵字字首於要做的一序列運算操作。條件塊用(if
和if)
來界定,就是說if
關鍵字成為了開和閉圓括號的一部份。真值通過在if
塊內的// True
來檢查,最後,賦值算符->
將它左手側的值賦給它右手側的變數。
Hello world!
下面的代碼片段列印「Hello world!」:
(#
do ’Hello world!’->PutLine
#)
延伸閱讀
- Ole Lehrmann Madsen, Birger Møller-Pedersen, Kristen Nygaard. Object-Oriented Programming in the BETA Programming Language. [2020-05-16]. (原始內容存檔於2019-01-15).
- Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen. The When, Why and Why Not of the BETA Programming Language (PDF). ACM History of Programming Languages III, Conference, San Diego. 2007 [2020-05-16]. (原始內容 (PDF)存檔於2017-02-11).