BETAは、オブジェクト指向における「スカンジナビア学派」に起源を持つ純粋なオブジェクト指向言語であり、最初のオブジェクト指向言語であるSimulaが開発された。[ 1 ]注目すべき特徴としては、ネストされたクラスを導入し、クラスとプロシージャをいわゆるパターンに統合したことが挙げられる。
オスロ大学のKristen Nygaardと Bent Bruun Kristensen、Ole Lehrmann Madsen、Birger Møller-Pedersenによって1976 年から開発が開始され、実装は 1986 年から知られています。
このプロジェクトは2020年10月現在、活動停止状態です。[ 2 ]
技術的な観点から見ると、BETAにはいくつかの独自の機能があります。クラスとプロシージャは、パターンという一つの概念に統合されています。また、クラスはオブジェクトのプロパティ/属性として定義されます。つまり、明示的なオブジェクトコンテキストがなければ、クラスをインスタンス化することはできません。この結果、BETAはネストされたクラスをサポートします。クラスは、ほとんどのオブジェクト指向プログラミング言語における仮想メソッドと同様に、仮想的に定義できます。仮想エンティティ(メソッドやクラスなど)は上書きされることはなく、代わりに再定義または特殊化されます。
BETA はオブジェクト指向プログラミングの観点をサポートし、手続き型プログラミングと関数型プログラミングのための包括的な機能を備えています。オブジェクトの識別、分類、構成をサポートする強力な抽象化メカニズムを備えています。BETA は Simula、Eiffel 、 C++と同様に静的型付け言語であり、ほとんどの型チェックはコンパイル時に行われます。[ 1 ] BETA はコンパイル時の型チェックと実行時の型チェックの最適なバランスを実現することを目指しています。
この言語の大きな特徴の一つは、パターンという概念です。C ++のような他のプログラミング言語では、クラスとプロシージャがそれぞれ複数存在しますが、BETAではこれら両方の概念をパターンを用いて表現します。
例えば、C++ の単純なクラスは次の形式になります。
class point { int x , y ; };BETAでは、同じクラスを次のパターンで表現できます。
ポイント: ( # x 、y : @整数# )つまり、pointというクラスには、整数型のフィールドxとyが 2 つあります。記号(#と#)はパターンを導入します。コロンはパターンと変数を宣言するために使用されます。フィールド定義の整数型の前の@記号は、これらが整数フィールドであり、参照、配列、その他のパターンではないことを指定します。
別の比較として、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キーワードは関数の結果を指定します。この 2 つの間に、doキーワードが実行される一連の操作のプレフィックスとして付きます。条件ブロックは(ifとif)で区切られ、つまりifキーワードが開き括弧と閉じ括弧の一部になります。if ブロック内では// Trueによって真偽がチェックされます。最後に、代入演算子- > は、左辺の値を右辺の変数に代入します。
このコードスニペットは、標準的な行「Hello world!」を出力します。
(# 'こんにちはベータ版!'->PutLine を実行します #)