The goals for qBeta are as follows:

  • qBeta is a combined modeling and programming language
    • qBeta supports modeling at the level of UML with respect to objects, class structures and composition.
    • qBeta currently has a textual syntax, but a diagrammatic syntax will be developed. As is the case for Beta.
  • qBeta is based on the object-oriented-style of programming
    • qBeta integrates the functional-style in a consistent matter.
    • The overall structure of a program is OO – in addition, algorithms/methods may be programmed in a functional style.
    • qBeta originates from the Beta language – and contains few simple and general language mechanisms.
  • qBeta is in the outset intended for programming concurrent systems
    • qBeta includes a number of concurrency primitives that support a wide class of concurrent programming styles.
    • At the basic levels qBeta is by nature unsafe in the sense that there is no protection for race conditions, etc.
    • This gives maximum flexibility with respect to programming concurrency including communication and synchronization.
  • qBeta contains powerful abstraction mechanisms that may be used to define safe high-level concurrency abstractions
    • For a wide range of applications, there is a need for programming safe concurrent systems where race conditions cannot happen.
    • The abstraction mechanisms of qBeta make this possible.
    • At the basic level, qBeta may be considered an implementation language for high-level languages.
    • qBeta may be used to define a framework consisting of objects and classes targeted towards specific domain. Such a framework may be considered a language.
    • For certain domains, it may be worth considering using a special syntax for a given framework
  • A unique property of qBeta is that the programmer may define his own scheduling mechanisms – be it preemptive or cooperative or a combination.
    • qBeta has no built-in scheduling for concurrent processes.
    • This means that qBeta may run on an bare-metal board without an operating system.
    • The programmer is in complete control of the scheduling and does not have to get around setting priorities and other idiosyncrasies (perhaps not the right word) of a given operating system.
    • When defining a high-level concurrency framework, part of the framework is thus the associated scheduling mechanism. The user of a given framework will then not have to deal with scheduling