Programming languages

The choice of the programming language

A programming language is nothing but a tool, and, as a tool, each of them suits best a specific class of problems.

As already stated, we want to develop a framework with the following qualities:

  1. portable;
  2. easy to understand;
  3. easy to develop with;
  4. high performance;
  5. real-time capable.

The second and third ones limit our choice to well-known languages, the first one forces us to use a standardized, widespread and platform-independent one, while the last two suggest that it should be relatively low-level, efficient and not interpreted.

So we can easily identify the family of C languages (ISO/ANSI C89 and C99) and its strict relatives (Objective C and C++) as the most appropriate for our task.

Among these the winner is C89 since it's the most widespread and is well understood by a large amount of professional and hobbyist programmers.

Anyway some of the silly restrictions of the C89 standard, like for example the uniqueness of symbol names in the first six characters, are not respected, since most compilers correctly handle this "issues".

Interfacing with other programming languages

Making use of non-C APIs is sometimes fundamental for good integration or even portability at all.

This is not an extremely difficult thing to do: you "just" need some kind of "glue code" letting you access an API developed in an external programming language from C.

However we could provide some language bindings for other common programming languages around like C++ or Python to widen our audience (maybe using an interface generator like SWIG).

At the moment this is not a priority task, so discussion is postponed to sometime in the future.