Basic concepts: Programming language Chora

In its core Embedded Wizard Studio is based on a specially for this purpose developed programming language called Cho­ra. Chora is a universal, target system independent programming language permitting you to implement the complete functionality of a GUI application without being reliant on any further development tools.

Although not directly apparent, Chora is omnipresent in Embedded Wizard Studio. Every software entity that you can arrange in a visual manner, conceals a piece of real Chora source code. The Chora syntax serves also as the medium format in which all Embedded Wizard project are saved. Despite its importance, the direct contact with Chora syntax is limited to the code you implement in the Code Editor window and to expressions you enter in the Inspector window:

When designing the Chora we were geared to the both very popular programming languages ​​C++ and Java. With it we hoped to keep the entry threshold and the training effort for all new users as low as possible. Below are the most important characteristics of Chora:

The syntax of Chora is largely based on the programming languages C, C++ and Java.

Like its counterparts Chora is an object-oriented language. It supports classes, simple inheritance and polymorphism. Thus, large and complex GUI applications can be structured very well.

Chora supports all typical language elements, such as arithmetic and logical expressions, if..else conditions, switch..case selections, for and while loops, local variables, properties, ... Thus the complete behavior of the GUI application can be formulated directly in Chora.

Chora is very strict. The support of potentially ambiguous or even dangerous language elements is limited. Open arrays, pointer arithmetic and implicit data type conversion popular in e.g. C++ are completely absent in Chora.

The memory management of Chora is based on a garbage collection. It detects unused memory and releases it automatically. The classic errors such as the access to already released memory or memory leaks are excluded.

For use in the GUI development Chora provides a variety of additional language elements, data types, literals and operators. For example, bitmap and font resources are native Chora language elements.

A unique concept of variants allows the user to define multiple versions of every constant, resource and class. The selection of the appropriate version takes place automatically. This concept forms the basis for the internationalization and the customization – the adaptation of the appearance and behavior of a GUI application.

Besides the possibility to use method calls for the communication between components, Chora also supports the concepts of signals, observers and notifications. Hence one component can react to an alternation in another component without being in a direct relationship with it. This language concept forms the basis for the Model-View-Controller (MVC) design pattern – an approach to improve the structuring of GUI applications.

Due to the object-oriented approach, GUI applications developed in Chora consist of components (classes). At the runtime instances (objects) of these classes can be created and e.g. displayed on the screen.

Chora is highly platform independent. In practice, based on one and the same project you can generate code for any target system.