21C3: Gnome Anwendungsentwicklung

21C3: Sven Herzberg über Gnome Anwendungsentwicklung
In Gnome Anwendungsentwicklung ging es hauptsächlich um das objektorientierte C-Framework, auf dem GTK und Gnome basieren. Gnome began als reines C-Projekt, die Objektorientierung wurde nicht etwa mit dem Umstieg auf C++ eingeführt, sondern mit GObject und seinen Erben.

Ich sehe diese Technologie mit gemischten Gefühlen. Einerseits sind gute Ansätze dabei, es gibt endlich eine echte Typprüfung, die nicht mal C++ von Hause aus liefert. Andererseits sehe ich den entsprechenden Code und muss vor Schmerz aufstöhnen.

Es wird teilweise Code generiert, Makros werden exzessiv verwendet und die Strukturen kommen mir höllisch kompliziert und fehleranfällig vor.

Interessant war, dass alle Entities Namensstrings und mitunter einen kleinen Kommentar für die API-Doku bekommen können. Diese werden dann für Debugging oder Introspection genutzt, z.B. kann ein GUI-Builder daraus Nutzen ziehen.
Neben privaten Membern kann man noch Properties definieren und diese mit Lese- und Schreibrechten versehen.
Das GInterface klingt wie Java Interfaces und funktioniert auch in etwa so. Es gibt Prerequisits, damit kann man definieren, dass ein Interface nur von Klassen implementiert werden darf, die von Klasse XYZ abgeleitet wurden.

Mit gtkmm steht die C++ Version des Frameworks bereit, das sollte ich mir auf jeden Fall ansehen.