Open Source im professionellen Einsatz
Linux-Magazin Online Artikel/

Vala - Sprache und Compiler für das GObject-Typensystem

GObject ohne Kopfschmerzen

07.11.2007

Abschied von C: Vala ist eine neue Programmiersprache samt Compiler, die Gnome-Entwicklern die Vorteile moderner Sprachen wie C# oder Java an die Hand gibt.

523

Wer Programme in C schreiben möchte und dennoch etwas Komfort erwartet, kommt nicht um eine vernünftige C-Bibliothek herum. GObject, das in der GLib enthalten ist, zeichnet sich seit Jahren als der Standard in diesem Bereich aus. GObject bietet moderne objektorientierte Konzepte wie Klassen, Interfaces, virtuelle Methoden, Unterstützung für Callback-Funktionen und vieles mehr. Praktisch alle Gtk+-Programme, enthalten GObject-Code. Aufgrund seiner C-Natur muss der Programmierer jedoch unweigerlich mehr Code schreiben, als das beispielsweise in Java der Fall ist. Der so genannte Boilerplate-Code ist für manch einen Entwickler zu komplex und schwer zu verstehen, besonders wenn er die Grundlagen zu GObject nicht kennt. Der Schritt in die Richtung, auf C++, C# oder Java zu setzen, scheint auch nicht immer eine geeignete Lösung zu sein. Also am besten eine neue Sprache erfinden?

Eine neue Sprache

Es ist keine triviale Aufgabe, eine neue Programmiersprache zu erfinden, und die meisten Entwickler schrecken zu Recht davor zurück. Schon einfache Sprachen, wie zum Beispiel C, sind in der Umsetzung äußerst komplex. Jürg Billeter, ein Informatik-Student der ETH-Zürich, schuf Mitte Juli 2006 Vala. Dabei kam etwas heraus, das in Features und Syntax an eine Mischung aus C++, C# und Java erinnert. Ziel war es jedoch nicht, einen neuen Konkurrenten für die bereits etablierten Sprachen zu erschaffen, sondern Entwicklern eine Möglichkeit zu geben, GObject-basierende Anwendungen ohne Kopfschmerzen umzusetzen. Dies ist mitunter einer der Gründe, weshalb Vala viele Eigenschaften enthält, die üblicherweise nur in GObject zu finden sind. Anders als gängige Compiler übersetzt Vala den Quelltext des Programmierers nicht direkt in maschinenlesbaren Binärcode, sondern in ANSI-C. Mit der Ausgabeoption "valac -o test test.vala" besteht allerdings die Möglichkeit, den resultierenden "Zwischencode" direkt an den C-Compiler zu übergeben.

Dieses Stückchen Vala-Code bildet das Grundgerüst für ein Plugin für den Mediaplayer Rhythmbox.

Vala-Features

Vala unterstützt sämtliche moderne Features aus der Welt der Objektorientierung, die heutige Programmiersprachen beherrschen. Dazu zählen, um nur einige zu nennen:

  • Interfaces (Java und C#)
  • abstrakte Klassen (Java, C++, C#)
  • virtuelle Methoden (Java, C++, C#)
  • Properties (C#),
  • Generics/Templates (Java, C++, C#)
  • Non-null-Typen
  • Polymorphismus (Java, C++, C#)
  • Ausnahmebehandlung (Java, C++, C#)

Zusätzlich, und hier zeigt sich die Verbindung zu GObject, existiert das Schlüsselwort "signal". Methoden die Sie damit einleiten, verbinden Sie im weiteren Programmablauf mit einem Slot. Mit den von C# her bekannten "delegate"-Methoden kann Vala ebenfalls umgehen: Genauer gesagt handelt es sich hier im eigentlichen Sinne nur um die von C bekannten Funktionszeiger, die Sie an Funktionen übergeben. Bisher unterstützt Vala nur statische Handler-Methoden, die einer bestimmten Klasse beziehungsweise eines Typs zugeordnet sind. Ein Nachteil, der dadurch entsteht ist, dass sich der Zugriff auf eine Instanz nicht realisieren lässt. In einer der nächsten Versionen weiß der Compiler aber auch mit Instanzmethoden, die Sie per Parameter übergeben, umzugehen. In C ist das durch die Übergabe eines Funktionszeigers samt Funktionsparameter bereits gängige Praxis und taucht auch in vielen Stellen der GLib auf: "g_hash_table_foreach (GHashTable *htable, GHFunc func, gpointer user_data)".

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Vala im Detail

    Die junge High-Level-Sprache Vala erleichtert die Entwicklung von Anwendungen, die auf der GObject-Bibliothek aufsetzen. Dieser Artikel beleuchtet die Eigenschaften und Eigenarten der Sprache genauer.

  • Vorteile kombinieren

    Der Informatikstudent Jürg Billeter war mit GObject-Programmierung in C unzufrieden. Statt sich Mono oder Java zuzuwenden, entwickelte er Vala, eine eigene Sprache samt Compiler, um das Problem zu lösen.

  • Vala

    Wer Programme mit GTK+ oder für Gnome schreibt, greift dabei meist zu C oder Python. Mit Vala gibt es jedoch eine interessante objektorientierte Alternative. Deren Zauber liegt in sprachlichen Anleihen bei C# und Java sowie in der Integration der Glib-Bibliothek.

  • Projekteküche

    Mit Songbird betritt eine neue Softwaregattung namens Webplayer in finaler Version die dicht gedrängte Bühne der Musikabspielprogramme. Außerdem soll Gnome Format eine kleine, aber lästige Lücke im Desktop schließen und setzt dabei auf die innovative Sprache Vala.

  • Gnome-Entwicklung lernen auf der Guadec 2010

    Auf der Gnome-Konferenz Guadec 2010 in Den Haag (26. bis 30. Juli 2010) wird es ein zweitägiges Entwickler-Training geben. Bis zum 15. Juni gilt der Frühbucherrabatt.

comments powered by Disqus

Ausgabe 10/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.