© Liashko/Shutterstock.com
Mit C objektorientiert programmieren? Vala macht’s möglich!

Skandinavische Prophezeiung


Bjarne Stroustrups C++ gilt heute als Goldstandard in Sachen OOP: Die Sprach­erweiterungen für C fanden ob ihrer hervorragenden Abwärtskompatibilität bald jede Menge Anhänger. Dank Apples tatkräftiger Unterstützung lebt sein Vorgänger Objective-C ebenfalls munter weiter – unter anderem in der seit 2006 entwickelten Sprache Vala.

Vergleichsweise wenige Entwickler wissen, dass man auch mit C objektorientiert programmieren kann. Die dazu notwendige Trickserei mit Structs und Funktions-Pointern ist das täglich Brot all jener Entwickler, die Applikationen auf Basis von GObject entwickeln. GObject ist eine Bibliothek, die anfangs Teil des in C gehaltenen GTK-Frameworks war. Nach dem Erscheinen der zweiten Version beschlossen die Entwickler, dass ihr Typ- und Klassensystem auch ohne die diversen UI-Widgets lebensfähig ist: Die Standalone-Version von GObject war geboren.

Unaufmerksame Beobachter neigen dazu, die Bibliothek als Spielerei für eine Randgruppe von konservativ-reaktionären Freaks abzutun. Das ist grundfalsch: Im Laufe der Jahre entstanden einige beeindruckende Programme. Neben dem auch in Ubuntu verwendeten Gnome-Desktop sei an dieser Stelle auch die Bildbearbeitung GIMP erwähnt.

Aufgrund der für Quereinsteiger verwirrenden Bedienung entschieden sich Jürg Billeter und Raffaele Sandrini im Jahr 2006 dazu, mit einer neuen Sprache Abhilfe zu schaffen. Die nach einer skandinavischen Prophetin Völva benannte Programmiersprache Vala sollte die Nutzung der GObject-Bibliothek ermöglichen und eine an C# angelehnte Syntax aufweisen.

Wer mit Qt gearbeitet hat, kennt das in Abbildung 1 gezeigte Diagramm mit Sicherheit. Ein als moc bezeichnetes Werkzeug wandelt den Qt-Code vor der eigentlichen Kompilation in normales C++ um, das daraufhin zum nativen Compiler der Plattform wandert. Das Resultat ist eine Anwendung, die – von außen betrachtet – nicht von einem normalen C++-Programm zu unterscheiden ist.

Vala nutzt einen ähnlichen Ansatz. Der als valac bezeichnete Compiler nimmt .vala-Dateien entgegen, die daraufhin in normale .c-Dateien umgewandelt werden. Daraus folgt, dass die Performance von in Vala gehaltenem Code mit dem einer nativen C-Applikation vergleichbar ausfällt.

hanna_vala_1.tif_fmt1.jpgAbb. 1: Schematische Darstellung der Umwandlung von Qt-Code in normales C++ vor der eigentlichen Kompilation

Vala herbei

Aufgrund der vergleichsweise geringen Verbreitung der Programmiersprache lässt sich das ohnehin nicht für schnelle Updates bekannte Ubuntu-Te...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang