www.wikidata.de-de.nina.az
Vala ist eine objektorientierte Programmiersprache die ab 2006 von Jurg Billeter und Raffaele Sandrini die an der ETH Zurich Informatik studierten entwickelt wurde ValaParadigmen objektorientiertErscheinungsjahr 2006Entwickler Rico Tzschichholz Haupt Jurg Billeter Raffaele SandriniAktuelle Version 0 57 0 1 11 April 2023 Typisierung statisch starkBeeinflusst von Boo C C C D JavaBetriebssystem alle mit ANSI C Compiler da Vala C Code erzeugtLizenz LGPL 2 1 https vala dev Vala hat das Ziel eine moderne Programmiersprache fur die Entwicklung mit dem Objektsystem GObject das Fundament aller GTK Gnome Anwendungen zu bieten ohne die Notwendigkeit einer zusatzlichen Laufzeitbibliothek im Gegensatz zu Mono oder Java Zudem ist die Binarschnittstelle kompatibel mit Applikationen und Bibliotheken die in C geschrieben sind Die Vala Syntax ist stark an die von C und damit auch an die von Java angelehnt Inhaltsverzeichnis 1 Compiler 2 Sprache 2 1 Speicherverwaltung 3 Bibliotheken 3 1 Binarkompatibilitat 3 2 Standardbibliothek 3 3 Bindings 4 Plattformen 5 Verbreitung 6 Codebeispiele 7 Sonstiges 8 Literatur 9 Weblinks 10 EinzelnachweiseCompiler BearbeitenDer Vala Compiler ubersetzt den Vala Quelltext in C Quelltext und lasst den Rest vom C Compiler erledigen Diese Technik ist fur viele Programmiersprachen weniger geeignet weil sich damit z B Exceptions oder arithmetische Uberlaufe nicht effizient abfangen lassen Da Vala aber ohnehin direkt auf C Schnittstellen aufsetzt fallt diese Einschrankung weniger ins Gewicht als bei Sprachen wie Eiffel oder Haskell Der Vorteil ist dass der C Compiler bereits Backends fur samtliche Prozessorarchitekturen mit sich bringt und Vala von dessen Optimierungen profitieren kann Auch kann ein Entwickler die generierten C Quelltexte zusatzlich zu den Vala Quelltexten veroffentlichen so dass nicht einmal der Vala Compiler zum Kompilieren des Programms benotigt wird Dies wird etwa beim Vala Compiler getan um das Henne Ei Problem zu losen da der Vala Compiler selbst in Vala geschrieben ist self hosting Sprache BearbeitenIm Gegensatz zu Objective C sowie mit geringen Ausnahmen C ist Vala keine Erweiterung von C da C keine Teilmenge der Vala Syntax ist Somit ist Vala auch kein C Praprozessor Die Syntax ist stark an C und damit auch Java angelehnt jedoch ist weder Vala eine Teilmenge von C noch umgekehrt C Programme lassen sich also nicht mit Vala kompilieren selbst wenn man von den erheblichen Unterschieden der Standardbibliotheken absieht Vala ist statisch und stark typisiert und erlaubt Typinferenz implizites Typisieren fur lokale Variablen Vala bietet unter anderem OOP Klassen Vererbung Virtuelle Methoden Abstrakte Klassen Schnittstellen Mixins Typ Polymorphie Namensraume Properties automatische Getter und Setter Signale Signalbenachrichtigungen bei Property Anderungen Foreach Schleifen Lambda Ausdrucke Closures Generische Typen Nicht nullierbare Typen Assistierte Speicherverwaltung automatische Referenzzahlung Deterministische Destruktoren ermoglicht RAII Ausnahmebehandlung Checked Exceptions Asynchrone Methoden Koroutinen Vorbedingungen und Nachbedingungen Design by contract Typinformation zur Laufzeit RTTI Verbatim Strings Zeichenketten ohne Interpretation von Escape Sequenzen und uber mehrere Zeilen hinweg Bedingte Kompilierung Statische und dynamische D Bus UnterstutzungSpeicherverwaltung Bearbeiten Vala nimmt dem Entwickler die manuelle Speicherverwaltung ab Statt eines Garbage Collectors wie bei Java oder bei NET kommt automatische Referenzzahlung zum Einsatz Referenzzahlung hat den Vorteil dass sie deterministisch und echtzeitfahig ist jedoch mussen andererseits im Falle von Referenz Zyklen diese manuell vom Entwickler durch den Gebrauch einer schwachen Referenz weak reference gebrochen werden etwa dann wenn in einer Baum Datenstruktur ein Element eine Referenz auf sein Elternelement halt und dieses wiederum eine Referenz auf das Kindelement beide also gegenseitig aufeinander verweisen Vala erlaubt optional auch manuelle Speicherverwaltung mit Zeigern Bibliotheken BearbeitenBinarkompatibilitat Bearbeiten In Vala entwickelte Bibliotheken sind valide C Bibliotheken und konnen von C Entwicklern direkt benutzt werden da Vala im Gegensatz zu Sprachen wie C und D zur C Binarschnittstelle ABI kompatibel ist Standardbibliothek Bearbeiten Als Standardbibliothek verwendet Vala die GLib samt ihren Unter Modulen GIO GObject GModule die fur die meisten Systeme verfugbar ist und Dinge wie plattformunabhangiges Threading Eingabe Ausgabe Dateiverwaltung Netzwerk Sockets Plug ins Regulare Ausdrucke und vieles mehr bietet Des Weiteren gibt es eine in Vala geschriebene Bibliothek namens Gee die generische Collection Container Klassen zur Verfugung stellt Grafische Benutzeroberflachen konnen mit dem GUI Toolkit GTK und dem Oberflachen Designwerkzeug Glade entwickelt werden Bindings Bearbeiten Um eine C Bibliothek mit Vala nutzbar zu machen sind keine Laufzeit Bindings Wrapper notig sondern lediglich eine statische Beschreibung in einer sogenannten vapi Datei Vala API mit annotierter Vala Syntax die dem Vala Compiler zur Kompilierzeit sagt wie Vala Methodenaufrufe in C Funktionsaufrufe transformiert werden sollen Diese Dateien lassen sich fur GObject basierte Bibliotheken semi automatisch generieren fur nicht auf GObject basierende C Bibliotheken mussen sie von Hand geschrieben werden Fur eine Vielzahl von Bibliotheken sind bereits Bindings vorhanden unter anderem auch fur nicht auf GObject basierende C Bibliotheken wie die Multimediabibliothek SDL OpenGL etc Plattformen BearbeitenValas Basisbibliotheken GLib GIO und Gee sind auf allen gangigen Plattformen verfugbar wie etwa verschiedene Unixe Linux macOS und Windows Die einzigen Voraussetzungen fur Vala sind die GLib und ein C Compiler Vala ist also nicht an Gnome gebunden Sofern der Entwickler Dinge wie plattformabhangige Pfadangaben und nicht plattformubergreifende Bibliotheken vermeidet und stattdessen die Abstraktionen der GLib nutzt kann er mit Vala plattformubergreifende Anwendungen entwickeln Auch GTK gibt es fur die verschiedenen Betriebssysteme Ein zu Binarcode kompiliertes Vala Programm ist an die jeweilige Plattform gebunden da es dann in Form von nativem Maschinencode vorliegt Verbreitung BearbeitenAnwendungen die mit Vala entwickelt wurden und bereits einen gewissen Bekanntheitsgrad erlangt haben sind etwa die Fotoverwaltung Shotwell der Twitter Client Pino und das Backup Werkzeug Deja Dup Alle drei sind Standard Anwendungen der Linux Distribution Fedora ab Version 13 Auch in Ubuntu 10 10 ist Shotwell die vorinstallierte Fotoverwaltung und hat F Spot ersetzt Ubuntus ursprunglich fur Netbooks entwickelte Oberflache Unity wird in Vala entwickelt ebenso der DLNA UPnP Medienserver Rygel der unter anderem beim GNOME Projekt eingesetzt wird Der Vala Compiler selbst ist ein Beispiel fur ein grosseres in Vala geschriebenes Kommandozeilen Projekt Im TIOBE Index Stand April 2018 wurde Vala zwischen Platz 51 und 100 gelistet 2 Dennoch bezeichnete GNOME Entwickler Emanuelle Bassi Vala als tote Sprache und riet 2017 davon ab Vala als Programmiersprache fur neue Anwendungen zu wahlen 3 4 Trotz dieser Ankundigung wird Vala auch nach dieseweiterhin fur Gtk basierende Programme eingesetzt beispielsweise ist es die bevorzugte Sprache der elementary OS Entwickler und erhielt im Juni 2022 auch eine eigene Website Codebeispiele BearbeitenEin minimales Hallo Welt Programm void main print Hallo Welt n Eine komplexere Variante die einige objektorientierte Eigenschaften von Vala demonstriert class Sample Object void run stdout printf Hallo Welt n static void main string args var sample new Sample sample run Dieses Codebeispiel demonstriert ein einfaches GTK Programm using Gtk int main string args Gtk init ref args var window new Window window title Ein einfaches GTK Programm window set default size 300 50 window window position WindowPosition CENTER window destroy connect Gtk main quit var button new Button with label Klick mich button clicked connect gt button label Dankeschon window add button window show all Gtk main return 0 Dieses Programm initialisiert GTK erzeugt ein Hauptfenster setzt dessen Titel Grosse und Position fugt dem Fenster eine Schaltflache hinzu und verbindet deren Signal das bei einem Mausklick ausgelost wird mit einer anonymen Ruckruffunktion welche die Beschriftung der Schaltflache andert und startet schliesslich die Hauptereignisschleife von GTK Sonstiges BearbeitenVala hat eine Schwestersprache namens Genie die ebenfalls die Vala Compiler Infrastruktur nutzt und eine Python ahnliche Syntax mit statischer Typisierung hat Literatur BearbeitenChristian Meyer Vala Sprache und Compiler fur das GObject Typensystem GObject ohne Kopfschmerzen In Linux Magazin Band 6 7 November 2007 Online abgerufen am 13 August 2019 Weblinks BearbeitenWebsite des Vala Projektes Vala Tutorial Online API Dokumentation Vala Beispielcode Programmieren mit Vala PDF 1 8 MB Artikel in freiesMagazin Ausgabe 01 2011 Vorteile kombinieren Interview mit dem Vala Autor Jurg Billeter 8 November 2007 Benchmarkvergleich zwischen C Mono C und Vala 8 November 2011 englisch Vala Tutorial fur Java Entwickler 2 April 2012 Einzelnachweise Bearbeiten Release 0 57 0 11 April 2023 abgerufen am 4 Mai 2023 https www tiobe com tiobe index Emanuelle Bassi halting problem On Vala In bassi io 13 Februar 2017 abgerufen am 13 Februar 2017 englisch https www phoronix com scan php page news item amp px GNOME Vala Bassi Abgerufen von https de wikipedia org w index php title Vala Programmiersprache amp oldid 235881492