The BETA language development process started out in 1975 with the
aim to develop languages. In the seventies, it was often assumed that a
general programming language was not usable as a systems programming langauge.
It was therefore decided to define a systems programming language, which
should also be used to implement Gamma. This language was called BETA.
BETA is a modern object-oriented language from the Scandinavian school of object-orientation where the first object-oriented language Simula [DMN70] was developed. BETA supports the object-oriented perspective on programming and contains comprehensive facilities for procedural and functional programming. BETA has powerful abstraction mechanisms for supporting identification of objects, classification and composition. BETA has the best balance between compile time, type checking, and runtime type checking.
Beta uses a freeware compiler. The compiler generate object files
or assembly code depending on the platform. partly based on the Simula
Programs may be divided into smaller fragments (modules) for separate compilation.
The compiler makes an automatic dependency analysis on the fragments structure.
When a fragments has been The compiler reads BETA and translates it to
C, therefore the name b2c. The C-Code is then fed into a normal C compiler.
B2c does not yet understand the full language scope of BETA, and there
aren't many standard libraries.
The Linux operating has combine BETA with its system. BetaFTPD is a single-threaded FTP daemon. The single-threaded ness makes it faster than most other FTP daemons and makes it extremely light on memory. Although it lacks a few functions the current version is very small and has a decent amount of functionality. BetaFTPD is built on the concept of heavy code reuse.
All information was obtain form the BETA website.
Sample of source code:
Account:
(# (* ... *)
transactions: [50] @integer; Top: @integer;
Deposit:
(# amount: @integer
enter amount
do balance+amount->balance;
amount->&SaveTransaction
exit balance
#);
Withdraw:
(# amount: @integer
enter amount
do balance-amount->balance;
-amount->&SaveTransaction
exit balance
#);
SaveTransaction:
(# amount: @integer
enter amount
do (if (top+1->top) > transactions.range
then
(* Send statement of transactions to the customer *)
1->top
if);
amount->transactions[top]
#)
#)
--- fig4x2: attributes ---