staging.inyokaproject.org

Vala

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion der Artikel Archiv/Vala/Kompilieren, Vala.

cornix Team-Icon

Avatar von cornix

Anmeldungsdatum:
9. März 2007

Beiträge: 4763

Moin Moin

Eigentlich wollte ich mir die 0.1-Versionen von Lombard und Fillmore von yorba 🇬🇧 (Shotwell) ansehen, aber die benötigen zum kompilieren Vala 0.9.1. Und weil ich Vala klasse finde, habe ich direkt mal einen kleinen Artikel dazu verfasst.

Fragen, Anregungen, Kritik?

Gruß, cornix

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

ja, zwei:

  • längere kompilieranleitungen wie hier kommen in eigenen Unterartikel

  • so ein minimales Codebeispiel (wie z.B. in Lua) wäre IMHO nett

Gruß, noisefloor

cornix Team-Icon

(Themenstarter)
Avatar von cornix

Anmeldungsdatum:
9. März 2007

Beiträge: 4763

Moin Moin

Danke für die Rückmeldung.

  • längere kompilieranleitungen wie hier kommen in eigenen Unterartikel

done. Baustelle/Vala/Kompilieren

  • so ein minimales Codebeispiel (wie z.B. in Lua) wäre IMHO nett

ein Hello World GObject 😉

Wobei die Browser-Beispiele auch sehr schön sind, da man fast eins-zu-eins Beispiele in Vala und Genie hat, zudem mit GTK+-Oberfläche.

Gruß, cornix

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

Wobei die Browser-Beispiele auch sehr schön sind,

Klar. Nur ist es IMHO besser, wenn man einen kurzen Code-Schnippsel hat, damit man nicht erst zu Wikipedia & Co. muss, um mal die Syntax zu sehen.

Artikel ist IMHO ok.

Gruß, noisefloor

cornix Team-Icon

(Themenstarter)
Avatar von cornix

Anmeldungsdatum:
9. März 2007

Beiträge: 4763

noisefloor schrieb:

Nur ist es IMHO besser, wenn man einen kurzen Code-Schnippsel hat, damit man nicht erst zu Wikipedia & Co. muss, um mal die Syntax zu sehen.

Gut, dann gibts auch ein kurzes Genie-Beispiel.

Gruß, cornix

moko.sono

Avatar von moko.sono

Anmeldungsdatum:
22. März 2011

Beiträge: 35

Hallo cornix,

danke für diesen Artikel 👍 , allerdings hätte ich da noch ein paar Fragen:

  • Ich suche nach einer Entscheidungshilfe, weshalb ich von Java zu Vala wechseln sollte. Dein Artikel beschreibt leider keine Vorzüge zum in der Syntax offenbar sehr verwandtem Java.

  • Wozu ist Vala überhaupt gedacht, also ist Vala ausschließlich für die Desktop-Programmierung gedacht oder auch für Enterprise-Anwendungen/Web-Services im Sinne von J2EE?

  • Welche Entwicklungsumgebung (Eclipse-Plugins ?) gibt es für Vala? Vielleicht ja doch mehr als die erwähnten Tools für gEdit?

  • Du schreibst, dass Vala "objektorientierte Programmierung mit dem GObject-Modell" ermöglicht. Doch was ist denn ein GObject-Modell?

Danke im Voraus für Deine Antwort (ich hoffe, meine Fragen klingen nicht fordernd! 🙄 ).

Liebe Grüße, falaki

Marc_BlackJack_Rintsch

Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4478

@falaki: Die letzte Frage ist der Schlüssel zur zweiten: GObject ist eine Bibliothek für die Programmiersprache C, die Makros und Funktionen für objektorientierte Programmierung in C bereit stellt. Das ist die Basisklasse und ein Rahmenwerk für ein OOP-Modell. Darauf baut die Glib-Bibliothek auf, die man als eine Art Standardbibliothek ansehen kann. Da sind unter anderem so typische Datenstrukturen wie Arrays, Listen, und Hash-Maps enthalten. Darauf bauen wiederum die Gtk- und GNOME-Bibliotheken auf.

Da C in der Sprache selbst keine besondere Unterstützung für OOP bietet, muss man vieles von Hand machen, und relativ viel Boilerplate-Code schreiben. Da kommt dann Vala ins Spiel. Das ist sozusagen syntaktischer Zuckerguss für C um GObject/Glib/Gtk/GNOME-Programme zu schreiben, ohne sich ständig über C ärgern zu müssen. ☺

Ich sehe einen Grund warum ein C-Programmierer zu Vala wechseln möchte, aber keinen grossen Anreiz für einen Java-Programmierer um zu Vala zu wechseln. Für einen C-Programmierer wird vieles um GObject und die Bibliotheken, die darauf aufbauen, leichter. Für einen Java-Programmierer wird es nur etwas anders.

cornix Team-Icon

(Themenstarter)
Avatar von cornix

Anmeldungsdatum:
9. März 2007

Beiträge: 4763

falaki schrieb:

  • Ich suche nach einer Entscheidungshilfe, weshalb ich von Java zu Vala wechseln sollte. Dein Artikel beschreibt leider keine Vorzüge zum in der Syntax offenbar sehr verwandtem Java.

Schwierig. Vala ist noch jung und bescheiden dokumentiert - klarer Nachteil. Den größten Unterschied (und der ist an vielen Stellen wohl auch ein Vorzug) macht es, dass bei Vala hinten Maschinencode raus kommt, während bei Java Bytecode raus kommt, der seine spezielle Laufzeitumgebung benötigt. Interessant sind da sicherlich die entsprechenden Wikipedia-Artikel.

  • Wozu ist Vala überhaupt gedacht, also ist Vala ausschließlich für die Desktop-Programmierung gedacht oder auch für Enterprise-Anwendungen/Web-Services im Sinne von J2EE?

Theoretisch lassen sich damit auch Webanwendungen realisieren, man sollte aber auch ein Auge darauf haben, wie viel Vorarbeit schon geleistet wurde. Bei Python wirst du auf wesentlich mehr vorhandenen Code stoßen, den du dafür verwenden kannst.

  • Welche Entwicklungsumgebung (Eclipse-Plugins ?) gibt es für Vala? Vielleicht ja doch mehr als die erwähnten Tools für gEdit?

Die Tools für gedit sind schon klasse, es gibt aber auch noch valide, eine in Vala geschriebene IDE. Ob es was für Eclipse gibt, weis ich nicht.

  • Du schreibst, dass Vala "objektorientierte Programmierung mit dem GObject-Modell" ermöglicht. Doch was ist denn ein GObject-Modell?

Habe einen Wikipedia-Link eingebaut: GObject sollte die Frage beantworten.

Gruß, cornix

Marc_BlackJack_Rintsch

Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4478

@cornix: Vala-Programme brauchen streng genommen auch eine spezielle Laufzeitumgebung. Mindestens die GObject-Bibliothek. Wenn man ein paar Datentypen braucht und die nicht selber implementieren will die Glib, und wenn noch eine GUI dazu kommt, die Gtk-Bibliotheken. Das ist unter Linux alles kein Problem, aber wenn man (auch) andere Plattformen anvisiert, kann das unter Umständen mehr Arbeit machen als ein Java-Programm zu schreiben und auszuliefern.

@falaki: Es gibt ein Vala-Plugin für die Monodevelop-IDE. Keine Ahnung ob das etwas taugt.

moko.sono

Avatar von moko.sono

Anmeldungsdatum:
22. März 2011

Beiträge: 35

@cornix + @BlackJack: Danke für Eure sehr ausführlichen Antworten!

cornix Team-Icon

(Themenstarter)
Avatar von cornix

Anmeldungsdatum:
9. März 2007

Beiträge: 4763

Marc 'BlackJack' Rintsch schrieb:

@cornix: Vala-Programme brauchen streng genommen auch eine spezielle Laufzeitumgebung.

Streng genommen: Nein. Zum Ausführen von Maschinencode braucht man eine Maschine, keine Laufzeitumgebung.

Gruß, cornix

Marc_BlackJack_Rintsch

Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4478

@cornix: Es geht hier aber nicht um das ausführen von Maschinencode, sondern um die Laufzeitumgebungen von Programmiersprachen jenseits von Assembler. Jedes Programm, das nicht ausschliesslich direkt das Betriebssystem (BS) (oder die Hardware) anspricht, hat eine Laufzeitumgebung (englisch: „runtime environment” oder nur „runtime”) als Vermittlungsschicht. Selbst reine C-Programme sprechen in aller Regel die C-Standardbibliothek an, statt direkt BS-Routinen aufzurufen. Und Vala-Programme brauchen mindestens GObject. Da die Dokumentation empfiehlt eigene Klassen von Glib.Object abzuleiten, weil sonst nicht alle Eigenschaften der Sprache(!) genutzt werden können, würde ich auch die Glib zur benötigten Laufzeitumgebung zählen.

Die Laufzeitumgebung muss auch nicht nur ”extern” sein, sondern kann teilweise auch statisch oder sogar ganz in das Programm eingebettet sein. Der Code, der bei C-Programmen als erstes, noch vor der main() ausgeführt wird, befindet sich traditionell in einer Übersetzungseinheit mit dem Namen crt0, wobei die Buchstaben für „common runtime” stehen. Da ist zum Beispiel Code enthalten, der den Stackpointer initialisiert und das Segment in dem die nicht-lokalen, nicht-konstanten Variablen liegen mit Nullbytes beschreibt. Denn das ist die Umgebung, die einem als C-Programmierer von der Sprachspezifikation zur Laufzeit versprochen wird.

frustschieber Team-Icon

Ehemalige
Avatar von frustschieber

Anmeldungsdatum:
4. Januar 2007

Beiträge: 4259

Hallo, wie ist hier der Stand der Dinge? Gruss

Marc_BlackJack_Rintsch

Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4478

@frustschieber: Worauf beziehst Du Dich? Die Wikiseite(n) sind mittlerweile aus der Baustelle raus: http://wiki.ubuntuusers.de/Vala

Lasall

Ehemalige
Avatar von Lasall

Anmeldungsdatum:
30. März 2010

Beiträge: 7723

Hi,

es geht um die Baustelle Baustelle/Vala/Kompilieren. Ehrlich gesagt bin ich mir unklar, ob diese Seite in der Form fürs Wiki geeignet ist. Die Seite ist sowieso nur für Fortgeschrittene und dann muss man auch genau auf die Versions-Bezeichnungen (4 verschiedene) achten. Wenn man die PPA-Pakete rekompiliert ist das z.B. sehr viel einfacher und man hat noch immer den brandaktuellen Vala-Compiler, also hat man da auch keinen Gewinn, es sei denn man möchte mit dem aktuellen HEAD arbeiten (wenn das der Fall ist, muss man nicht hier ins Wiki schauen und dann würde man auch schnell nach /usr/local installieren).

Die Artikelstruktur wäre besser für eine Anleitung, wie man saubere Pakete für neuere Upstream-Software aus bestehenden Paketen baut, geeignet.

Da ich keinen praktischen Sinn darin sehe, würde ich gerne die Seite Vala/Kompilieren ins Archiv nehmen.

Gruss Lasall

Antworten |