Forum: PC-Programmierung Einstieg in GUI Programmierung


von Stan S. (silentjim)


Lesenswert?

Vorweg zu nehmen, ich habe reine C# Basiskenntnisse(Typen, Klassen, 
usw.) und schon ein paar Grundlagen in C++.

Auch PHP, HTML, CSS Grundkenntnisse sind vorhanden (auch wenn es vlt. 
nicht in diese Richtung geht.). Möchte damit eigentlich nur ausdrücken, 
dass ich die Denkweise doch ein wenig schon beherrsche und nicht 
komplett bei 0 anfangen müsste.

Nun bin ich nicht schlüssig, ob ich weiter auf C# setzen soll, um GUI 
Programme zu schreiben. Allerdings würde ich diesen gern auch anderen 
(nicht Windows Nutzern) zur Verfügung stellen.

An dieser Stelle könnte ich Xamarin verwenden (wo ich derzeit noch keine 
Erfahrung habe) oder aber ich nutze C++ mit QT (wo ich auch erst mich 
einarbeiten müsste. Für die Lizenz wäre ich bereit auch die Lizenzgebühr 
für Unternehmen unter 2500 Euro im Jahr zu zahlen.

Mein Sohn spielt derzeit ein bisschen mit Arduino herum, um ihm da 
helfen zu können wäre es dann ja besser ich würde C++ beherrschen. Oder 
ist es da ausreichend, wenn ich mir die Grundlagen von C++ anschaue
(und mit meinen Kenntnissen welchen ich aus de C# Programmierung habe 
profitiere?)

Vorrangig geht es mir nicht um komplexe Programme, sondern wird es eher 
in Richtung Helfer für den Alltag gehen. Also nichts in Richtung 
Photoshop, sondern eher in Richtung Taschenrechner. Weis nicht wie ich 
es am günstigen rüber kriege.

Eigentlich heute ich ja auch eine Idee für eine IOS App (Swift bringe 
ich (noch) nicht) aber das kann warten.

Was würdet ihr mir empfehlen? Will das ganze nur privat machen, nichts 
Berufliches.

Vielleicht gibt es ja jemand in der Nähe von Dresden, der breit ist sich 
mit mir da auseinander zu setzen. Ihr könnt auch gern eine PN schicken.

PS:Ich möchte keine WebApp bauen

von Mellopock (Gast)


Lesenswert?

Jaja, der tägliche GUI-Troll-Thread...

Wenn es Cross Platform und C++ sein soll: Qt

von PittyJ (Gast)


Lesenswert?

Mellopock schrieb:

>
> Wenn es Cross Platform und C++ sein soll: Qt

Genau. Das mache ich schon seit 20 Jahren. Funktioniert prima.

Bei allem anderen wäre ich an Grenzen gestossen (hatte mal ein paar 
Jahre einen Mac). Aber dank QT lief alles weiter.

von Dirk K. (merciless)


Lesenswert?

Stan S. schrieb:
> Nun bin ich nicht schlüssig, ob ich weiter auf C# setzen soll, um GUI
> Programme zu schreiben. Allerdings würde ich diesen gern auch anderen
> (nicht Windows Nutzern) zur Verfügung stellen.
Microsoft ist dabei, das .NET-Framework für mehrere
Plattformen zur Verfügung zu stellen:
https://www.heise.de/hintergrund/NET-5-0-ist-erschienen-4952894.html

> Vorrangig geht es mir nicht um komplexe Programme, sondern wird es eher
> in Richtung Helfer für den Alltag gehen. Also nichts in Richtung
> Photoshop, sondern eher in Richtung Taschenrechner. Weis nicht wie ich
> es am günstigen rüber kriege.
Die Zielplattform und der Funktionsumfang
bestimmen die Technologie.

merciless

von Karl (Gast)


Lesenswert?

PyQt + Python wäre noch eine Alternative.

von Andreas B. (bitverdreher)


Lesenswert?


von IT-Abteilung (Gast)


Lesenswert?

Ganz klar C++ oder Python.

von Sven K. (quotschmacher)


Lesenswert?

Mellopock schrieb:
> Wenn es Cross Platform und C++ sein soll: Qt

oder wxWidgets... das gibt es ja auch noch.

von Nick M. (Gast)


Lesenswert?

So eine Meldung würde mich abhalten Qt zu verwenden:
https://www.heise.de/news/Qt-6-Abomodell-koennte-zum-Fallstrick-fuer-kommerzielle-Kunden-werden-4942027.html

Mit MS und deren .NET würde ich nie und nimmer ein 
Cross-Platform-Projekt starten. Nach 8 Jahren geht es dann nur noch auf 
Win.

Wenn ich GUI brauch, mach ich das mit Tk. Das genügt meinen primitiven 
Ansrüchen.

von W.S. (Gast)


Lesenswert?

Stan S. schrieb:
> Vorweg zu nehmen, ich habe reine C# Basiskenntnisse(Typen, Klassen,
> usw.) und schon ein paar Grundlagen in C++.
>
> Auch PHP, HTML, CSS Grundkenntnisse sind vorhanden (auch wenn es vlt.
> nicht in diese Richtung geht.). Möchte damit eigentlich nur ausdrücken,
> dass ich die Denkweise doch ein wenig schon beherrsche und nicht
> komplett bei 0 anfangen müsste.

Also du hast offenbar einiges an Kenntnissen in Richtung Netzwerke und 
Internet und das ist nicht alles nur C-artig, sondern eher vielfältiger.

Nun, da rate ich dir dringend dazu, dir Lazarus/Freepascal mal herunter 
zu laden und ebenfalls von Embarcadero die Delphi-Community-Edition. 
Kostet beides nix und ist beides auch einsetzbar für kommerzielles - bei 
Delphi bis zu einer Einkommens-Obergrenze von $5000/a für die damit 
erzeugten Produkte.
Siehe:
https://www.lazarus-ide.org/
https://www.embarcadero.com/products/delphi/starter

Beides ist geeignet, um für verschiedene Plattformen GUI-Anwendungen zu 
programmieren. Lazarus läuft übrigens selbst auf einem Raspberry, wenn 
man das will.

Der große Unterschied zu all dem QT- C#- und Python- Gedöns ist, daß man 
bei Delphi und Lazarus eben keine fetten Laufzeitbibliotheken braucht, 
sondern eine Anwendung (bei Windows eine .exe) erhält, die so wie sie 
ist, standalone läuft.

Abgesehen davon hat man mit Pascal ("Object-Pascal") eine 
Programmiersprache, die leicht zu erlernen ist und weitaus sauberer ist 
als alles, was man an C und C-artigen Sprachen so hat. Im Vergleich zu 
Pascal ist C++ gräßlich und endlos hakelig.

W.S.

von Sheeva P. (sheevaplug)


Lesenswert?

Stan S. schrieb:
> Nun bin ich nicht schlüssig, ob ich weiter auf C# setzen soll, um GUI
> Programme zu schreiben. Allerdings würde ich diesen gern auch anderen
> (nicht Windows Nutzern) zur Verfügung stellen.

Naja, bestimmte Teile von C# sollen ja auch schon auf anderen 
Plattformen gehen, aber letzten Endes spielt es keine größere Rolle, was 
Du konkret benutzt: Qt oder wxWidgets, C++ oder Python... Im Grunde 
können sie alle dasselbe. Wenn es C++ sein soll, würde ich zwar immer zu 
Qt neigen, aber das stammt noch aus einer Zeit, als die C++ Standard 
Template Library (STL) eine ziemlich rudimentäre Angelegenheit war, 
weswegen Qt leider sehr viel Funktionalität implementiert hat, die es 
heute in der STL gibt. Daher würde ich persönlich wegen Deiner Idee, 
Deinen Sohnemann bei C++ unter Arduino zu unterstützen, eher C++ und 
wxWidgets tendieren.

Sogar Freepascal oder Delphi könnten eine valide Option sein, die aber 
eher zu den Nischen gehört -- und solche Nischen gibt es leider meistens 
weniger Fundstellen und andere Hilfen im Netz. Und die Arduinosache wird 
damit auch schwierig...

> Mein Sohn spielt derzeit ein bisschen mit Arduino herum, um ihm da
> helfen zu können wäre es dann ja besser ich würde C++ beherrschen. Oder
> ist es da ausreichend, wenn ich mir die Grundlagen von C++ anschaue
> (und mit meinen Kenntnissen welchen ich aus de C# Programmierung habe
> profitiere?)

Die Arduino-Jungs geben sich schon ziemlich große Mühe, C++ vom 
Arduinoentwickler fern zu halten, und sie machen das ziemlich gut. Ist 
ja auch ein Designziel dieses Projekts: kleine Compute-Einheiten 
zugänglich machen für Menschen, die ansonsten recht wenig mit 
Softwareentwicklung zu tun haben. Wenn Du ihm auf C++-Niveau ein 
bisschen helfen möchtest, werden C++-Grundlagen dazu vermutlich nicht 
ausreichen.

> PS:Ich möchte keine WebApp bauen

Guter Hinweis, sonst hätte ich nämlich ganz genau das empfohlen. Die 
Zeiten von FatClients neigen sich nämlich eher dem Ende zu, und Webapps 
haben halt viele enorme Vorteile... und mit dem C++ Web Toolkit [1] kann 
man die ganz ähnlich wie eine normale Desktop-Applikation schreiben.

[1] https://www.webtoolkit.eu/wt

von Sheeva P. (sheevaplug)


Lesenswert?

Nick M. schrieb:
> Wenn ich GUI brauch, mach ich das mit Tk. Das genügt meinen primitiven
> Ansrüchen.

Sieht halt aus wie Motif oder Win3.11... oder mit Tix wie CDE oder 
Win95... Gibt es eigentlich mittlerweile anständige Tabellen- und 
ähnliche Containerwidgets? ;-)

von Andreas B. (bitverdreher)


Lesenswert?

Sheeva P. schrieb:
> Sogar Freepascal oder Delphi könnten eine valide Option sein, die aber
> eher zu den Nischen gehört -- und solche Nischen gibt es leider meistens
> weniger Fundstellen und andere Hilfen im Netz.

Das sehe ich völlig anders. Schau Dir mal Lazarus genauer an. Wenn man 
nicht gerade mit Pascal auf Kriegsfuß steht: Super RAD. Schneller und 
effizienter bekommt man eine moderne SW mit GUI nicht gebacken.
Hilfe findet man genug im Netz auch unter Delphi (da sind die 
Unterschiede marginal).
Obwohl ich auch Pascal nicht als die optimale Programmiersprache 
empfinde, aber die IDE von Lazarus ist (fast) unschlagbar.

von Lothar (Gast)


Lesenswert?

Mellopock schrieb:
> Wenn es Cross Platform und C++ sein soll: Qt

Stan S. schrieb:
> Lizenzgebühr für Unternehmen

Wenn es nichts kosten soll: FLTK

LGPL with an exception to allow static linking

https://en.wikipedia.org/wiki/FLTK

https://www.fltk.org/doc-1.3/fluid.html

von Nick M. (Gast)


Lesenswert?

Sheeva P. schrieb:
> Sieht halt aus wie Motif oder Win3.11... oder mit Tix wie CDE oder
> Win95... Gibt es eigentlich mittlerweile anständige Tabellen- und
> ähnliche Containerwidgets? ;-)

Tk genügt sicherlich nicht den Hipstern, die Information und 
Funktionalität mit BlingBling verwechseln.
Und Tabellen gehen tatsächlich sehr gut.

von Andreas D. (rackandboneman)


Lesenswert?

Nicht nur der Vollständigkeit halber sei Gtk+ erwähnt - es ist gut genug 
dass man GIMP damit geschrieben hat, es ist echt Open Source, und es 
funktioniert mit vielen Programmiersprachen. Dafür ist es nicht das 
allereinfachste, eben weil das Toolkit so ausgelegt ist dass es nicht 
NUR mit objektorientierten Sprachen brauchbar ist (nicht unähnlich der 
Windows-API*).

*Wenn man wirklich verstehen will wie Windows und GUI-Toolkits intern 
"ticken" empfiehlt es sich mal ein paar einfache Beispiele auf reiner 
Windows-API-Basis durchzuarbeiten. Als Mittel zum produktiven Entwickeln 
ist das natürlich eher nicht optimal, man ist schnell bei mehreren 
Seiten Code für einfachste Aufgaben angelangt.

von Jemand (Gast)


Lesenswert?

Nick M. schrieb:
> Tk genügt sicherlich nicht den Hipstern, die Information und
> Funktionalität mit BlingBling verwechseln.

Das Wichtigste, das Profiköche von Laien unterscheidet, ist die 
Präsentation.

Natürlich kann man Information und Funktionalität auch ansehnlich 
aufbereiten, und wenn man seine Software nicht nur selbst benutzen, 
sondern auch verkaufen oder anderen als OpenSource-Software zur 
Verfügung stellen möchte, sind ein gefälliges Äußeres und eine 
ordentliche Usability schon sehr sinnvoll. Vor ein paar Jahren habe ich 
mal eine Studie darüber gelesen, wie ein ausgereiftes, hübsches Äußeres 
einer Software nicht nur deren Akzeptanz, sondern auch das Vertrauen der 
Benutzer in die Software fördert. Schade, daß ich die Studie gerade 
nicht mehr finde, sonst hätte ich sie verlinkt.

> Und Tabellen gehen tatsächlich sehr gut.

Das Fehlen eines Table-Widget in Tk und Tix ist aus meiner Sicht eines 
der größten Probleme dieser Software. Natürlich kann man die Listbox- 
oder Treeview-Widgets mißbrauchen oder eine externe Bibliothek nutzen, 
aber mal ehrlich: ein GUI-Framework ohne Tabellenwidget? Und Grafen auf 
ein Canvas zu malen ist wohl auch nicht mehr so ganz State-of-the-Art.

Diese Dinge sorgen leider oft dafür, daß der Vorteil der Einfachheit, 
den Tk  Tkinter  Tix beim Einstieg für sich verbuchen können, leider 
spätestens bei aufwändigeren Applikationen schnell wettgemacht wird... 
tut mir leid, das so sagen zu müssen, ich benutze es ja auch gerne dort, 
wo es sinnvoll ist und ich mit der etwas... altbackenen Optik leben 
kann.

von Nick M. (Gast)


Lesenswert?

Jemand schrieb:
> tut mir leid, das so sagen zu müssen, ich benutze es ja auch gerne dort,
> wo es sinnvoll ist und ich mit der etwas... altbackenen Optik leben
> kann.

Das darfst du auch ruhig sagen, ohne dass ich dagegen argumentieren 
müsste.

von Andreas D. (rackandboneman)


Lesenswert?

Tk und Motif sind da halt authentische Regionalküche, die der "Profi" 
oft nur verschlimmbessern und verteuern würde :)

von Andreas (Gast)


Lesenswert?

Wenn wir über Delphi sprechen, gibt es eine weitere mögliche Lösung: 
https://www.devart.com/dac.html
Ich denke, es könnte sehr nützlich sein, da diese 
Datenzugriffskomponenten mit allen gängigen Datenbanken kompatibel sind.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.