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
Ehemaliger
Anmeldungsdatum: 6. Juni 2006
Beiträge: 28316
|
Hallo, ja, zwei:
Gruß, noisefloor
|
cornix
(Themenstarter)
Anmeldungsdatum: 9. März 2007
Beiträge: 4763
|
Moin Moin Danke für die Rückmeldung.
done. Baustelle/Vala/Kompilieren 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
Ehemaliger
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
(Themenstarter)
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
Anmeldungsdatum: 22. März 2011
Beiträge: 35
|
Hallo cornix, danke für diesen Artikel 👍 , allerdings hätte ich da noch ein paar Fragen:
Danke im Voraus für Deine Antwort (ich hoffe, meine Fragen klingen nicht fordernd! 🙄 ). Liebe Grüße, falaki
|
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
(Themenstarter)
Anmeldungsdatum: 9. März 2007
Beiträge: 4763
|
falaki schrieb: 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.
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.
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.
Habe einen Wikipedia-Link eingebaut: GObject sollte die Frage beantworten. Gruß, cornix
|
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
Anmeldungsdatum: 22. März 2011
Beiträge: 35
|
@cornix + @BlackJack: Danke für Eure sehr ausführlichen Antworten!
|
cornix
(Themenstarter)
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
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
Ehemalige
Anmeldungsdatum: 4. Januar 2007
Beiträge: 4259
|
Hallo, wie ist hier der Stand der Dinge? Gruss
|
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
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
|