5 Punkte von GN⁺ 2024-04-09 | 1 Kommentare | Auf WhatsApp teilen
  • Vala ist eine Programmiersprache, die darauf abzielt, GNOME-Entwicklern moderne Sprachfunktionen bereitzustellen
  • Im Vergleich zu in C geschriebenen Anwendungen und Bibliotheken stellt sie keine zusätzlichen Laufzeitanforderungen und verwendet keine andere ABI
  • Unterstützte moderne Sprachfunktionen: Interfaces, Properties, Signals, foreach, Lambda-Ausdrücke, Typinferenz für lokale Variablen, Generics, Non-Null-Typen, Speicherverwaltung, Exception Handling
  • Sie ermöglicht komfortables Schreiben von Code mit objektorientiertem Ansatz und Abstraktionen auf hohem Niveau und ist tief in GNOME-Technologien wie GObject und GTK integriert
  • Der Code wird zu sehr schnellen nativen Binärdateien kompiliert. Vorhandener C-Code kann in Vala-Programmen wiederverwendet werden, oder es kann aus Vala C-Code erzeugt werden

Kompatibilität mit bestehenden C-Bibliotheken

  • Vala wurde so entworfen, dass es ohne Runtime-Bindings auf bestehende C-Bibliotheken zugreifen kann, insbesondere auf GObject-basierte Bibliotheken
  • Wenn nur eine API-Datei mit Klassen- und Methodendeklarationen in Vala-Syntax vorhanden ist, kann die Bibliothek mit Vala verwendet werden
  • Vala wird derzeit mit Bindings für GLib und GTK+ ausgeliefert

Der Vala-Compiler valac

  • valac ist ein selbstgehosteter Compiler, der Vala-Quellcode in C-Quellcode und Header-Dateien umwandelt
  • Er verwendet das GObject-Typsystem, um die im Vala-Quellcode deklarierten Klassen und Interfaces zu erzeugen
  • Die Syntax von Vala ähnelt C# und wurde angepasst, damit sie besser zum GObject-Typsystem passt

In Vala geschriebene Klassen und Methoden aus C verwenden

  • Wenn nur die von einer Vala-Bibliothek erzeugten Header-Dateien installiert werden, kann eine C-Anwendung auf die GObject-basierte API der Vala-Bibliothek auf übliche Weise zugreifen
  • Da der Vala-Parser als Bibliothek implementiert ist und alle Informationen zur Compile-Zeit beim Erzeugen von Bindings genutzt werden können, dürfte es auch einfach sein, Binding-Generatoren zu schreiben, mit denen Anwendungen etwa in C# auf Vala-Bibliotheken zugreifen können

Meinung von GN⁺

  • Vala hat den Vorteil, eine objektorientierte Sprache mit C-ähnlicher Syntax zu sein, die gut in GNOME-Technologien integriert ist. Besonders für die Entwicklung von GUI-Anwendungen ist sie optimiert und lässt sich leicht mit GTK, Granite usw. verbinden
  • Vala ist auf die Entwicklung der GNOME-Desktop-Umgebung spezialisiert und dürfte in anderen Bereichen nur begrenzt zum Einsatz kommen
  • Vala mit seiner C#-ähnlichen Syntax dürfte Entwicklern, die mit C# vertraut sind, den Einstieg in die GNOME-Entwicklung erleichtern
  • Das Ziel von Vala, moderne Sprachfunktionen zu unterstützen und zugleich die Kompatibilität mit bestehenden C-Bibliotheken wichtig zu nehmen, ist erfrischend, allerdings dürfte dadurch die Eigenständigkeit der Sprache selbst zwangsläufig geringer ausfallen
  • Ein Blick auf Vala-Projekte zeigt, dass es vor allem viele Desktop-Apps für GNOME oder elementary OS gibt, die Sprache aber auch für Server-Programmierung genutzt werden kann. Allerdings ist das Ökosystem in diesem Bereich noch eher schwach
  • Wie weit Vala verbreitet sein wird, ist offen, aber im GNOME-Ökosystem könnte der Einsatz von Vala anstelle von C durchaus Produktivitätsgewinne bringen
  • Es gibt auch eine Sprache namens Genie, deren Syntax Vala ähnelt und die GNOME-Technologien nutzen kann. Charakteristisch ist, dass Codeblöcke wie in Python durch Einrückung getrennt werden. Sie ist als Alternative zu Vala einen Blick wert

1 Kommentare

 
GN⁺ 2024-04-09
Hacker-News-Kommentare
  • Es wird infrage gestellt, ob es bei Vala in letzter Zeit noch aktive Entwicklung gab. Laut dem Blogbeitrag eines GNOME-Entwicklers wird Vala von einer einzelnen Person gepflegt und für neue Entwicklungen nicht empfohlen.
  • Ein Kommentator schrieb kürzlich eine App in Vala und bezeichnete es als angenehme Erfahrung. Da er eine App wollte, die sowohl auf Desktop-Linux als auch auf dem PinePhone gut funktioniert, passte Vala gut; außerdem habe es deutlich mehr Spaß gemacht als Python und auch bessere Performance geboten.
  • Vala hat mit Genie eine Schwestersprache. Beide Sprachen sind im Grunde identisch, aber Vala verwendet eine C#-ähnliche Syntax, während Genie wie Python bedeutungsvolle Einrückung nutzt. Beide werden vom selben Compiler (valac) kompiliert.
  • Vala wirkt syntaktisch sehr ähnlich zu Swift. Neben der Syntax ähnelt Vala Swift auch durch erstklassige Referenzzählung, C-Sprach-Bindings und die direkte Kompilierung zu Binärdateien ohne externe Runtime.
  • Es wird gefragt, ob Vala eine stabile ABI oder Kompatibilität mit anderen High-Level-Sprachen wie C++ oder ObjC bietet. Das ist eine schwierige Aufgabe, die Swift ebenfalls zu lösen versucht.
  • Es ist schwer zu erkennen, dass Vala gegenüber Java oder C# ein (deutlich) produktiveres oder leistungsfähigeres Sprachmodell bietet. Unklar bleibt, worin genau Valas Vorteil liegt oder welches Problem die Sprache lösen soll.
  • Als einer der Vorteile von Vala wird die breite Auswahl an nativen Bibliotheken genannt, auf die sich dank der Kompatibilität mit GObject zugreifen lässt. Auch die gut dokumentierte Website an einem Ort (valadoc.org) erleichtert die Entwicklung.
  • Die meisten „nativen“ Apps von elementary OS sollen in Vala geschrieben worden sein.
  • Ein Kommentator, der Geary mochte, sah sich deshalb Vala näher an und fand, dass es eine elegante Sprache ist und sich gut eignet, um praktische Programme für GNOME zu schreiben. Allerdings habe er sich Vala in den letzten sieben Jahren nicht mehr angesehen.
  • Für die GNOME-Entwicklung wird Rust immer populärer (gtk-rs.org).