CLI oder GUI Apps?



  • Naja mal langsam müssen die grauen Zellen mal wiederarbeiten. Und seitdem Windows bei mir ganz Geschichte ist, wird es wohl ein ziemlicher Umbruch werden. Unter Windows war Dev-C++ für CLI die IDE der Wahl. GUI's und Programme die eine graphische Oberfläche brauchten erstellte ich mit BCB6 Enterprise.

    So wie ich es sehe, gibt es aber keinerlei BCB Alternative von Borland(auf der Homepage fand ich nur den BCB und die Turbo Varianten). Der Compiler schlechthin ist ja eh GCC unter Linux. Jetzt kommt aber ein ganz neuer Aspekt ins Spiel, und zwar sollte es ja alles recht universal sein, und auf jeden Linux System laufen, was ja eher für CLI Programme spricht. Auf der anderen Seite gibt es auch Sachen wo es praktischer mit einer GUI wär. So ist der aktuelle Denkanstoß eher eine IDE im BCB Stil, womit man ja alles machen konnte. CLI,GUI und und und. Damit könnte man ja das gern Programm autak erstellen und für den Komfort eine Gui extra erstellen.

    Wie handhabt ihr das denn in der Regel? Auf mein Servern hab ich nur eine Shell, also nix mit KDE,Xfce,Gnome oder so. Auf mein Desktop PC aber Xfce und KDE. Und möcht nun auch nicht Leuten zumuten 10 Parameter auswendig zu wissen, nur damit sie ein Programm nutzen können.

    Hatt einer da paar Ansätze oder Techniken wie er es macht?



  • Die Entwicklung der GUI hängt nicht von der IDE ab, sondern vom GUI Toolkit, was du benutzt.

    Du kannst die native XLib Bibliothek nehmen, was aber kaum Spaß machen wird und eher frustriert aufgeben wirst. Naja, die XLib ist sozusagen die "rohe" Bibliothek, um den X Server zu benutzen und in Fenstern zu zeichnen, Events schicken, usw.

    Es gibt aber auch "schöne Wrappers der Xlib". Damit meine ich, dass es Bibliotheken gibt, mit denen man viel einfacher als mit Xlib GUIs schreiben kann. Internt arbeiten diese Bibliotheken natürlich mit der XLib aber sie sind dennoch einfacher zu benutzen, sie haben bereits ein eigenes Look&Feel, eigene Widgets, Klassen, usw.

    Der große Vorteil von diesen Toolkits ist dass sie sehr Ummfangreich sind und mehr bieten, als "Fenster Zeichnen" sondern z.b. Datsnstrukturen wie Listen, Bäumen, oder eigene XML PArser und was weiß ich noch. Außerdem sind sie mittlerweile nicht nur unter Linux bzw. Unix portiert sondern sind auch unter Windows verfügbar, d.h. ein Programm, welches nut ANSI C und nur die Funktionen des Toolkits benutzt, ist quasi plattformunabhängig.

    Vertretter dieser Klasse sind: GTK+ und Derivate, Qt, wxWidgets, usw.

    Ich kenne mich am besten mit GTK aus. Da gibt es sogar Bindings für andere Sprachen wie Perl oder Python. Da ist z.b. nicht notwendig, C bzw C++ zu benutzen, um GUI mit GTK+ zu schreiben. Ich glaube, Qt und wxWidgets haben auch sowas, weiß ich aber nicht.

    Wie handhabt ihr das denn in der Regel? Auf mein Servern hab ich nur eine Shell, also nix mit KDE,Xfce,Gnome oder so. Auf mein Desktop PC aber Xfce und KDE. Und möcht nun auch nicht Leuten zumuten 10 Parameter auswendig zu wissen, nur damit sie ein Programm nutzen können.

    KDE,Xfce,Gnome sind Desktop Environments, keine GUI Toolkits. KDE ist mit Qt geschrieben, Gnome und Xfce mit GTK+. Eine GUI läuft, wenn der X Server läuft und die entsprechende Bibliothek installiert ist. Da ist es egal, ob du ein Window Manager oder Desktop Environment benutzt, wichtig ist der X Server.

    Und auf einem Server ohne X würde ich keine GUI Programme erstellen. Alternativ wäre da ncurses zu nehmen, wenn du eine schöne CLI haben willst.



  • qt und gtk könnten beide so ziemlich gleich viel. gtk hat eine c api, qt eine für c++. gtk kann natürlich auch für c++ verwendet werden - entweder nativ oder per gtkmm. gtk hat den vorteil lgpl zu sein, sodass man es auch für closed source projekte verwenden darf. bei qt klappt das nicht. die wxwidgets sind ein aufsatz auf gtk bei linux. alle drei frameworks sind großteils plattformunabhängig.





  • Ich kann dazu C# und Mono empfehlen! Es ist einfach herrlich, alles läuft und man muss sich um nichts mehr sorgen machen. Die System.Windows.Forms-Elemente sind sehr gut und ausgereift unter Mono.

    Mono wird übrigends bei vielen Distributionen bereits mit ausgeliefert: OpenSUSE, Ubuntu uvm.

    Geiler Nebeneffekt: Man kompiliert ein Programm unter Linux und man startet es einfach ohne Zusätze unter Windows.

    Ich kann nur empfehlen dir mal die Seite über das Mono-Projekt anzugucken. Dort steht vieles schön beschrieben und man muss sich nicht mit so Dingen wie, Aussehen auf verschiedenen Plattformen rumärgern. 🙂


Anmelden zum Antworten