BETA


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