Open Source im professionellen Einsatz
Newsletter abonnieren
HEFTARCHIV | NEWS | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO

Partner-Links:
Shopping
Yatego Deutschlands größte Shoppingmall. 7000 Shops,
2.5 Mio Artikel. Alle Bestseller, Gutscheine und Liveshopping.

Firewall bei Mercateo kaufen.

Ein Preisvergleich bei Hardware lohnt sich.

Bei inkpool.de Laserdrucker und mehr bestellen.

Sie suchen günstige Laptops? Schauen Sie doch mal bei Preisvergleich.org, Preisvergleich.eu, Preisvergleich.ch und Preisvergleich.at vorbei.

Linux Jobs


user friendly

  Home  »  Online Artikel  »  Vorteile kombinieren  

RSS-Feed der aktuellen News von Linux-Magazin Online
Jürg Billeter
Diesen Artikel drucken Diesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren

Interview mit dem Vala-Autor Jürg Billeter

Vorteile kombinieren

von Christian Meyer
 

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.

Jürg Billeter ist Autor der Programmiersprache Vala und des Vala-Compilers. Sie erleichtern die Entwicklung von Gtk+- und Gnome-Programmen. Linux-Magazin Online sprach mit dem Entwickler, der kurz vor dem Abschluss seines Infomatikstudiums an der ETH Zürich steht, über das Design seiner Sprache.

Linux-Magazin Online: Was waren die ausschlaggebenden Gründe, eine neue Sprache zu erschaffen?

Jürg Billeter: Ich finde das Schreiben von GObject-Code in C zu aufwändig. Auf der einen Seite muss man einiges mehr schreiben als in modernen Programmiersprache und andererseits kann man mit GObject/C auch einiges nicht statisch, also zur Compile-Zeit, überprüfen.

Linux-Magazin Online: Wieso setzt Du nicht auf Mono oder Java? Es gibt ja bereits recht gute Bindings für diese Sprachen?

Jürg Billeter: Mono, Java und Python als Alternativen haben vor allem zwei Nachteile, der eine ist, dass man auf Bibliotheken, welche in diesen Sprachen geschrieben wurden, nicht vernünftig von C und anderen Programmiersprachen aus zugreifen kann. Der andere Grund ist, dass jede zusätzliche Runtime einen gewissen Speicher- und Startup-Overhead mit sich bringt. Gnome startet um einiges langsamer, wenn sich im Panel neben Applets in C auch noch Applets in Python und Mono befinden. Daher habe ich mir gedacht, dass ich die Vorteile von GObject/C und höheren Programmiersprachen kombinieren möchte.

Zur Compile-Zeit prüfen

Linux-Magazin Online: Du hast vorhin angesprochen, dass sich mit GObject/C nicht alles zur Übersetzungszeit überprüfen lässt. Geht das mit Vala? Wie wird das realisiert?

Jürg Billeter: Ein Beispiel sind Upcasts. Wenn du in C zum Beispiel "gtk_widget_show()" mit einem "GtkButton" aufrufen möchtest, so musst du das explizit casten. Also "gtk_widget_show (GTK_WIDGET (button))". Ob das korrekt ist oder nicht kann der C-Compiler nicht entscheiden, das überprüft GObject erst zur Laufzeit. Der Vala-Compiler hat hier mehr Informationen. "button.show()" reicht völlig und wird zur Compile-Zeit überprüft. Das Problem hier ist einfach, dass C die Typen-Hierarchie nicht kennt und deshalb keine impliziten Upcasts wie beispielsweise von "GtkButton" zu "GtkWidget" zulässt.

Linux-Magazin Online: Der Compiler weiß also, dass "button" vom Typ "GtkButton" ist?

Jürg Billeter: Ja, er weiß das und vor allem weiß er, dass "GtkButton" ein "GtkWidget" ist. Einige weitere Checks sind mit Vala möglich, aber noch nicht im aktuellen Compiler eingebaut.

Linux-Magazin Online: Wie wird das konkret realisiert, wo merkt sich Vala die Hierarchie?

Jürg Billeter: Der Vala-Compiler benötigt für alle Libraries eine API-Definitionsdatei, VAPI genannt. In dieser Datei sind alle erforderlichen Informationen über die Library enthalten.

Linux-Magazin Online: Also auch die Klassenhierarchie?

Jürg Billeter: Ja, auch die Klassenhierarchie.


Ein kurzes Code-Beispiel aus den Vala-Webseiten. Die Syntax lehnt sich an Java und C# an.

Speicherverwaltung

Linux-Magazin Online: Ein weiteres Problem bei C beziehungsweise auch bei C++ ist die Speicherverwaltung. Wird da was in Vala getan und wenn ja, was genau? Wo gibt es noch Probleme bei der Umsetzung?

Jürg Billeter: Vala unterstützt den Programmierer bei der Speicherverwaltung. Dazu benutzt Vala das Reference-Counting von GObject. In C muß bei jeder Zuweisung entschieden werden, ob möglicherweise "g_object_ref()" oder "g_object_unref()" aufgerufen werden sollte, um Abstürze und Speicherlecks zu verhindern. Vala arbeitet ähnlich wie Smart-Pointer in C++, das heißt, dass bei jeder Zuweisung der Referenzzähler korrigiert wird. Dies gibt vor allem in einem Punkt Probleme: zyklischer Garbage kann nicht erkannt werden.

Linux-Magazin Online: Gibt es Bereiche, wo der Programmierer noch selbst Hand anlegen muß, also der Compiler nicht intelligent genug ist?

Jürg Billeter: Dazu gibt es die Möglichkeit, Variablen und Felder mit dem "weak"-Modifier zu versehen. "weak"-Referenzen können das Problem in den meisten Fällen lösen, jedoch ist es manchmal nicht ganz einfach zu entscheiden, welche Referenzen als "weak" markiert werden müssen. Das gleiche Problem betrifft auch GObject-/C-Programme, ist also kein zusätzliches Problem von Vala-Programmen.

Linux-Magazin Online: In C# gibt es unter anderem die Möglichkeit, "unsafe"-Code zu schreiben. Bietet Vala dieses Feature an?

Jürg Billeter: Es gibt keine speziellen "unsafe"-Code-Abschnitte in Vala, es ist jedoch experimentell möglich, in beschränktem Maße direkt Zeiger zu verwenden.

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Diese Seite zu Mister Wong hinzuf�gen Webnews yigg it! Slashdot it! Twittern!
Ähnliche Artikel
GObject ohne Kopfschmerzen Vala - Sprache und Compiler für das GObject-Typensystem
Diktat des Kalenders Kritik an gängiger Software-Release-Politik
Spielplatz zum Lernen Didaktische Desktopoberfläche Sugar
Lesehilfen Bitparade: PDF-Viewer im Vergleich
Ordnung im Chaos 13 Desktop-Suchsysteme im Vergleich
Debian-CD für drei Plattformen Debian GNU/Linux 4.0 ist neu
Whitepaper
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)

Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Usage Landscape Enterprise Open Source Data Integration

Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.

Download PDF (Registrierung erforderlich)
Kommentare (0)
 

Impressum |Datenschutzerklärung | © 2010Linux New Media AG
Partner-Sites
Deutschland: [LinuxUser] [EasyLinux] [Linux-Community] [Linux Technical Review] [Ubuntu User]
Europa: [EasyLinux Polen] [Linux Magazine Polen] [Linux Magazine Spanien]
International: [Linux Magazine International] [Linux Pro Magazine] [Ubuntu User] [Linux Magazine Brasilien] [EasyLinux Brasilien]