26.02.2014 Aufrufe

Linux-Magazin Clean Linux (Vorschau)

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Programmieren<br />

www.linux-magazin.de Vala 09/2013<br />

92<br />

Vala, eine Programmiersprache für Gnome- und GTK+-Anwendungen<br />

Voilà Vala!<br />

Wer Programme mit GTK+ oder für Gnome schreibt, greift dabei meist zu C oder Python. Mit Vala gibt es jedoch<br />

eine interessante objektorientierte Alternative. Deren Zauber liegt in sprachlichen Anleihen bei C# und<br />

Java sowie in der Integration der Glib-Bibliothek. Tim Schürmann<br />

© Andriy Popov, 123RF.com<br />

den Vorteil, dass Vala-Programme ähnlich<br />

schnell wie C-Programme ablaufen und<br />

sich zudem auf allen Plattformen übersetzen<br />

lassen, auf denen C-Compiler und<br />

Glib-Bibliothek bereitstehen.<br />

Darüber hinaus kann der Programmierer<br />

in Vala alle vorhandenen C-Bibliotheken<br />

nutzen und umgekehrt in Vala<br />

geschriebenen Programmcode in anderen<br />

C-Programmen einsetzen. Bindungen<br />

existieren bereits zu zahlreichen Gnome-<br />

Bibliotheken, Benutzeroberflächen beispielsweise<br />

entstehen wie bei Shotwell<br />

und Geary häufig mittels GTK+.<br />

2006 begann der Informatikstudent Jürg<br />

Billeter eine neue Programmiersprache<br />

zu entwickeln. Als Ausgangspunkt<br />

wählte er die Gobject-Bibliothek. Diese<br />

soll es eigentlich C-Entwicklern ermöglichen,<br />

objektorientiert zu programmieren.<br />

Das GUI-Toolkit GTK+ und viele Gnome-<br />

Bibliotheken nutzen Gobject. Jürg Billeter<br />

verrührte die Konzepte von Gobject<br />

mit C# und Java und taufte das Ergebnis<br />

Vala [1]. Da Gobject ein Teil der Glib ist,<br />

bekommen Vala-Programmierer diese als<br />

Standardbibliothek gratis ins Haus. Auf<br />

01 // Dies ist ein Kommentar ...<br />

02 /* ... und dies auch */<br />

03 int main() {<br />

04 string hallo = "Hallo Welt!\n";<br />

05 print(hallo);<br />

06 return 0;<br />

07 }<br />

Listing 1: Hallo Welt!<br />

Wunsch kümmert sich Vala sogar um die<br />

Speicherverwaltung.<br />

Bindungswillig<br />

Die Entwicklung von Vala ist noch nicht<br />

vollständig abgeschlossen, zum Redaktionsschluss<br />

war Version 0.20.1 aktuell.<br />

Die Sprachsyntax ist jedoch recht stabil:<br />

Seit Mitte 2011 hat es nur kleinere<br />

Optimierungen, Fehlerkorrekturen im<br />

Compiler sowie Anbindungen an weitere<br />

Gnome-Bibliotheken [2] gegeben.<br />

Die Alltagstauglichkeit der Sprache beweisen<br />

zahlreiche in Vala geschriebene<br />

Anwendungen, darunter die Fotoverwaltung<br />

Shotwell (Abbildung 1, [3]) und der<br />

E-Mail-Client Geary [4].<br />

Vala-Programme übersetzt ein Compiler<br />

in C-Quellcode, den dann wiederum ein<br />

C-Compiler zu einer ausführbaren Binärdatei<br />

verarbeitet (Abbildung 2). Das hat<br />

Hallo Vala!<br />

Ein Hallo-Welt-Programm zeigt Listing 1.<br />

Bei seinem Start ruft Vala automatisch die<br />

»main()«-Funktion auf. In ihr legt das<br />

Listing die Variable »hallo« an, die eine<br />

Zeichenkette (»string«) speichert und den<br />

Text »Hallo Welt!\n« aufnimmt. Vala versteht<br />

die üblichen Escape-Zeichen, »\n«<br />

steht im Beispiel für einen Zeilenumbruch.<br />

Die Funktion »print()« bringt den<br />

Text in der Variablen »hallo« auf den Bildschirm.<br />

Abschließend gibt »return« eine<br />

»0« zurück, womit das Programm den<br />

fehlerfreien Ablauf bestätigt. Jede Anweisung<br />

schließt mit einem Semikolon ab.<br />

Typsache<br />

Von C# und Java geerbt hat Vala die<br />

Kontrollstrukturen (»if«, »while«, »for«),<br />

die Vergleichsoperatoren (wie »==«<br />

und »!=«) sowie die Datentypen (etwa<br />

»int« und »bool«). Wie in C besitzen die<br />

meisten Datentypen allerdings auf verschiedenen<br />

Plattformen unterschiedliche<br />

Größen. Für Integerwerte – und nur für<br />

sie – gibt es deshalb auch Datentypen

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!