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