BETA語言
編程範型 | 面向對象 |
---|---|
設計者 | Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen, Kristen Nygaard |
面市時間 | 1986年 |
操作系統 | 跨平台 |
網站 | beta |
主要實作產品 | |
Mjølner System | |
啟發語言 | |
Simula |
BETA是一種純面向對象的編程語言,由克利斯登·奈加特為首的斯堪的納維亞學者開發,他們開發了第一個面向對象語言Simula[1]。它的顯著特徵,是介入了內部類,並將類和過程統一成所謂的模式。這個項目從2020年10月開始不再活躍[2]。
特徵
[編輯]技術概覽
[編輯]從技術的角度看,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).