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

外部链接