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
The qBeta language is based on the authors experience and background in the design, implementation and use of the Beta language.