Glib lernen



  • Ich beschäftige mich gerade mit GLib und benutze dazu das GLib-Reference-Manual. Für mich als Anfänger ist so eine API-Referenz eine echte Herausforderung. Ich bin beispielsweise jetzt bei g_auto() angekommen. Es gibt dort ein Code-Beispiel, welches die GVariant-Struktur benutzt. Wenn ich nachschaue, was GVariant ist, dann steht dort nur noch: "GVariant is an opaque data structure and can only be accessed using the following functions." Ich komme so kaum weiter.
    Wie geht man vor, wenn man sich mit einer neuen Bibliothek beschäftigt? Schauen sich erfahrenere Leute einfach den Quellcode an und die Sache ist klar? Ich habe mich auch mit Pango beschäftigt, aber dort ist es noch schlimmer (sehr knappe Anleitung und kaum Bücher oder Tutorials). Oder Suche ich falsch? Wäre um ein paar hilfreiche Anweisungen sehr dankbar. Ich habe Grundlagen in C und C++.



  • Ich würd erstmal nach einem Beispiel schauen, das etwas "nachvollziehbares" macht. Nachvollziehbar in dem Sinne, dass ich den Einstieg finde (ich muss nicht gleich alles verstehen) und sehe, wie ich anfangen kann.
    Die Referenz zu lesen ist am Anfang recht nutzlos, man muss die Konzepte einer Bibliothek verstanden haben. In die Referenz schaut man, wenn man etwas konkretes sucht.
    Und du brauchst natürlich Erfahrung. Weißt du nicht, was ein Variant ist? Das ist ein allgemeiner Begriff (der teilweise unterschiedlich verwendet wird). Ich konnte mir gleich was drunter vorstellen, hab dann in die Doku geschaut und konnte auch gleich was damit anfangen.



  • Vielen Dank, das hilft schon mal weiter. Ich habe std::variant in C++ gefunden und ich denke, dass ich ein Bild davon bekommen habe, was ein Variant ist. Wie kann ich mir das Konzept der GLib erarbeiten? Ich vermute fast, dass ich mich weiterhin mit den Grundlagen beschäftigen muss. Bin aber für jeden Tip (Bücher, Links) dankbar.



  • Zumindest ich bin da überfragt, ich kenn Glib nur am Rande.

    Ich würde aber erstmal die Frage stellen, warum du das eigentlich lernen willst? Hast du ein konkretes Ziel?



  • Das ist einfach erklärt. Ich wollte auf Linux mit C ein kleines Adressbuch programmieren. Ich habe angefangen, mich mich mit GTK+ zu beschäftigen, da ich eine grafische Benutzeroberfläche brauche. Ich benutze das Buch "Foundations of GTK+ development". Dadurch bin ich auf GLib und Pango gestossen, die eben beide nur recht oberflächlich vorgestellt werden.



  • Worauf ich hinauswill... Willst du das wirklich? Warum willst du unbedingt C und Glib programmieren?
    Ich finde C++ hat gegenüber C deutliche Vorteile und würde nicht ohne guten Grund C programmieren. Und Glib ist ein sehr umständlicher Nachbau von vielem, was C++ eh von Haus aus mitbringt. Und falls du das später beruflich machen willst, wirklich relevant ist das nicht. Dass du in der Arbeit mal eine GUI in C schreiben musst, ist so gut wie ausgeschlossen.
    Also, warum muss man sich selber sowas antun?



  • Ja, ich habe mich natürlich auch schon gefragt, warum ich mir das antue und natürlich habe ich oft gedacht, das wäre mit C++ doch viel einfacher.. Ich bin irgendwie da gelandet, da ich mich mit C beschäftigen wollte und auf Linux bin. Sehe ich das richtig, dass C gut ist, wenn man ein Problem nahe an der Hardware lösen möchte? Es ist ja auch immer noch eine der am meisten verwendeten Sprachen. Aber hier geht es hauptsächlich um eine Benutzeroberfläche und das mache ich wohl besser mit C++ und Qt (was anderes kann ich nicht..)



  • Sowas kann vermutlich nur zu einem Flame War C vs C++ führen 😉 Beide Sprachen haben ihre Anhänger und Gegner.
    Im Grunde kannst du mit C++ alles machen, was du mit C machen könntest, auch hardwarenahe Probleme. C kann man in dem Bereich aber evtl. auch als bessere Lösung ansehen, allein weil das einfacher und nachvollziehbarer ist, und C++ seine Vorteile eh nicht so sehr ausspielen könnte. Ich will das aber nicht unbedingt vertiefen.
    Jedenfalls ist C hauptsächlich im Embedded Bereich vertreten, und da geht die Wahrscheinlichkeit gegen 0, dass dich jemand eine GUI in C entwickeln lässt.
    Wenn du Open Source Programme für Linux entwickeln möchtest, dann sieht es wieder etwas anders aus, allerdings sehe ich da echt keinen Grund, auf C++ zu verzichten, außer aus fehlgeleiteter Überzeugung. Und wenn du jetzt kein fanatischer C Anhänger bist, dann wüsste ich nicht, warum man so etwas kompliziertes und wenig nützliches machen sollte. Die Zeit kannst du wahrscheinlich sinnvoller investieren.



  • Ja, das ist klar. Für jemanden mit meinem Kenntnisstand ist es wenig sinnvoll, drei Tage über g_auto() zu hirnen, wenn man noch so viele andere wichtigere Grundlagen zu lernen hat. Vielen Dank für die Informationen und die Hilfe!


Anmelden zum Antworten