PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Programm für Win und Apple


Ahnungsloser Passant
2021-07-29, 21:39:24
Hallo,

ich möchte für die Firma in Windows ein gar nicht mal so kleines Programm schreiben, das mit möglichst wenig Aufwand auf Laptops vom Apfel Mac OS konvertiert werden kann. Insbesondere der letzte Teil macht mir etwas sorgen, da ich keine Geräte von Apple besitze. Da ein paar absolute Spezalisten (Ü 60) an den Geräten sitzen, ist eine grafische Oberfläche Pflicht.

Bevor ich einfach drauf los programmiere, wollte ich mal fragen, ob jemand einen Tips hat z.B. zum Editor, die mir insbesondere bei Versionsänderungen Arbeit ersparen können.

Vielen Dank schon einmal im Voraus.

da.phreak
2021-07-29, 22:05:07
Wie sind Deine Vorkenntnisse bzgl. Programmieren?

Ahnungsloser Passant
2021-07-29, 22:26:09
C sehr gut, Grundlagen bis gute Kenntnisse C++ (vertiefe ich derzeit), Programmieren meist in Linux und mehr oder weniger über einen simplen Editor. Weil es oft eher kleine Programme waren (max 300 Zeilen Code) waren die einfachen Mittel völlig ausreichend. Das war dann auch platformübergreifend leicht umsetzbar. Jetzt wirds halt etwas aufwändiger. Große Sorgen mache ich mir bzgl. des eigentlichen Abarbeiten des Problems nicht. Eine grafischen Oberfläche in Kombination mit unterschiedlichen Betriebssystemen hingegen schon. Hier habe ich bisher kaum Erfahrung.

registrierter Gast
2021-07-29, 22:29:25
Der Einfachheit halber würde ich dir von C++ für Desktop-Anwendungen abraten.

Nutze Electron als Basis. Dann schreibst du Pille-Palle-HTML und CSS für deine Oberfläche und Pille-Palle-JavaScript für dein Backend.

Die Anwendung kannst du dann einfach für Windows, MacOS und Linux bauen und musst dir keine ganz wenig Sorgen um Cross-Plattform-Kompabilität machen.

Monger
2021-07-29, 22:56:18
Nutze Electron als Basis. Dann schreibst du Pille-Palle-HTML und CSS für deine Oberfläche und Pille-Palle-JavaScript für dein Backend.

Das Gute an Electron ist ja, dass du nahezu alles da reinquetschen kannst - auch ein C++ Backend.
https://gauriatiq.medium.com/electron-app-with-c-back-end-as-native-addon-napi-c67867f4058

Ich persönlich hasse nur eine Sache mehr als (serverside) Javascript, und das ist C++. Würde mir deshalb fürs Backend irgendwas cooleres suchen. Java oder so. Aber ein HTML Frontend für Desktop Apps ist heute schon sehr populär, und Electron ist ein sehr guter Container dafür.

Aber Multiplattformentwicklung ist immer noch ein Brett. Würde ich mir so ohne weiteres nicht unbedingt zutrauen.

Ahnungsloser Passant
2021-07-29, 23:28:29
Aber Multiplattformentwicklung ist immer noch ein Brett. Würde ich mir so ohne weiteres nicht unbedingt zutrauen.

Jupp, je mehr ich mich darin eingelesen habe, umso schlimmer wurden die Kopfschmerzen. Daher dachte ich mir, ich frage mal Leute die diesen Schmerz schon kennen und lerne von ihnen.

Ich habe mir die Tutorials zu Electron mal gegeben. Das sieht überzeugend aus. Der Arbeits- und Programmieraufwand scheint insbesondere bei den plattformübergreifenden Dingen deutlich reduziert zu sein. Dafür fressen die Programme viele Ressourcen, aber es scheint mir trotzdem ein guter Kompromiss zu sein. Vielen Dank! Da wäre ich alleine nicht drauf gekommen.

da.phreak
2021-07-30, 08:57:59
Ich mache beruflich C++ Desktop Entwicklung. Als UI-Framework setzen wir auf QT; das ganze soll halt flott und ohne zuviel Resourcen laufen. Ich nehme an, das UI wird bei einem solchen Programm nicht allzu kompliziert, das könnte schon gehen, aber QT braucht natürlich schon ein bißchen Erfahrung. Mit ein paar youtube Tutorials dürfte das aber gehen, und dann schreibt sich QML sehr angenehm, auch im Vergleich zu anderen UI Frameworks.

Mit QT empfieht sich der QT Creator, der mitgeliefert wird. Damit lassen sich einfache UIs schnell zusammenklicken. Persönlich benutze ich den kaum, und schreibe die QMLs per Hand, da unser UI doch zu komplex für so einen Editor ist. Als Editor benutze ich CLion, was für C++ super bist, bin aber auch Jetbrains Fan :). Dafür gibt es ein QML Editor Plugin für Syntax Highlighting (Lizenz 10€ / Jahr).

Zu beachten wäre bei QT die Lizenz. QT 6 ist GPL, will man ein Produkt damit verkaufen, kostet das irre viel Lizenzgebühren. QT 5 ist noch LGPL, das benutzen wir wegen besagten irren Lizenzkosten, und damit läßt sich auch sehr gut arbeiten.

The_Invisible
2021-07-30, 09:46:46
Bei Electron & Co denke ich immer an Bloatware und irren Ressourcenverbrauch für kleinste Apps bis hin zu ruckeln beim verschieben der App. Wir haben damit diverse Apps laufen die wirklich langsam und zäh sind. Ka ob das wirklich zutrifft oder fast alle Entwickler damit Nieten sind. ;D

Wäre sonst auch bei Qt, eventuell auch in Verbindung mit Python wenns einfach sein soll. Alternativ könntest dir auch WxWidgets anschauen, die besseren Tools hat aber klar Qt.

Exxtreme
2021-07-30, 11:02:35
Nutze Electron als Basis.
Electron ist die Definition von buggy, langsam und aufgeblasen. Schon Chatprogramme ala Slack brauchen 500+ MB an RAM. Da will ich nicht wissen wie viel RAM das braucht wenn die Applikation bissl komplexer wird.

@ TE

Wenn es C++ sein soll dann empfiehlt sich Qt für sowas. Aber hier die Lizenzen beachten! Ansonsten ist man schnell bei der GPL.

da.phreak
2021-07-30, 12:01:34
Wenn es C++ sein soll dann empfiehlt sich Qt für sowas. Aber hier die Lizenzen beachten! Ansonsten ist man schnell bei der GPL.

Was egal ist, wenn das Tool nur in-house verwendet wird.

The_Invisible
2021-07-30, 13:03:00
Zwecks Qt und GPL, laut diesem Vergleich hier ist noch immer LGPL möglich: https://embeddeduse.com/2021/04/18/using-qt-5-15-and-qt-6-under-lgplv3/

Finds aber allgemein sehr verwirrend die Lizenzlage, so lange es nur intern ist aber eh egal...

Exxtreme
2021-07-30, 13:18:18
Zwecks Qt und GPL, laut diesem Vergleich hier ist noch immer LGPL möglich: https://embeddeduse.com/2021/04/18/using-qt-5-15-and-qt-6-under-lgplv3/


Ja richtig. Wenn man aufpasst dann passiert da nichts.


Finds aber allgemein sehr verwirrend die Lizenzlage, so lange es nur intern ist aber eh egal...

Bis jemand auf die Idee kommt, dass man die Software ja auch verkaufen könnte. :D

Monger
2021-07-30, 14:11:42
Bei Electron & Co denke ich immer an Bloatware und irren Ressourcenverbrauch für kleinste Apps bis hin zu ruckeln beim verschieben der App.
Es gibt ein paar Electron Apps die sind superfix. VSCode z.B. lädt wirklich schnell, und ist superresponsiv.
Aber letztlich ist Electron ja nur ein Setup für ne Webseite, und da gibt es halt die furchtbar grottigen Monster, und die wenigen Ausnahmen die wirklich fix sind.

da.phreak
2021-07-30, 15:42:41
Zwecks Qt und GPL, laut diesem Vergleich hier ist noch immer LGPL möglich: https://embeddeduse.com/2021/04/18/using-qt-5-15-and-qt-6-under-lgplv3/

Sehr schöne Übersicht, danke!

Gohan
2021-07-30, 23:00:20
Oder man nehme Avalonia, mit C# und .NET Core ist das Desktop-Crossplatform (wenn man Mobil nicht braucht).

Zwar muss man sich noch mit XAML und diversen Patterns auseinandersetzen, aber ansonsten ist es sehr einfach.

http://www.avaloniaui.net

da.phreak
2021-07-31, 15:49:07
XAML macht aber auch echt nur mäßig Spaß ... und dann noch nen neuen tech stack lernen. Wenn C++ Vorwissen da ist, dann ist QT wahrscheinlich die einfachste Option.

Dio Eraclea
2021-07-31, 20:37:06
[..]nicht mal so kleines Programm schreiben[..]

Bitte nicht böse verstehen, aber diese Aussage hilft keinem dir hier eine sinnvolle Auskunft zu geben. Für manchen sind 10k LoC (ja ich weiß - schlechte Metrik) viel - für den anderen ist das nicht einmal erwähnenswert. Auch wäre es (für deine Fragestellung wichtig zu wissen wie komplex das UI sein soll. Reden wir hier von einem kleinen Fenster wo es ein paar Schalter gibt (da ist es imho egal was du verwendest) oder reden wir hier von einem komplexen Multiscreen Projekt mit komplexen Flows?

Monger
2021-07-31, 21:35:03
Oder man nehme Avalonia
Ähnliche Stoßrichtung: Xamarin
https://docs.microsoft.com/de-de/xamarin/get-started/what-is-xamarin

Ahnungsloser Passant
2021-08-05, 17:38:21
Hm, evtl. werde ich beides mal antesten. Mit QT habe ich bereits erste Erfahrungen. Das Programm soll eine reine InHouse Lösung werden. Aber trotzdem will ich mir keine Leiche in den Keller legen. Da muss ich mich mal schlau machen oder ggf. direkt die Entwickler anschreiben.

Bitte nicht böse verstehen, aber diese Aussage hilft keinem dir hier eine sinnvolle Auskunft zu geben. Für manchen sind 10k LoC (ja ich weiß - schlechte Metrik) viel - für den anderen ist das nicht einmal erwähnenswert. Auch wäre es (für deine Fragestellung wichtig zu wissen wie komplex das UI sein soll. Reden wir hier von einem kleinen Fenster wo es ein paar Schalter gibt (da ist es imho egal was du verwendest) oder reden wir hier von einem komplexen Multiscreen Projekt mit komplexen Flows?

Da ich noch nicht angefangen habe, kann ich dir auch nicht sagen wieviel LoC es sein werden. 10k scheint aber grob in der richtigen Größenordnung zu liegen. Das ganze soll links ein Fenster zum Navigieren enthalten und in der Mitte das Hauptfenster. Ich wollte mich beim Fensteraufbau grob an T@x (für Steuererklärungen) orientieren, wobei mein Vorhaben deutlich weniger komplex wird und auch nichts mit Steuern zu tun hat.

https://images.sftcdn.net/images/t_app-cover-l,f_auto/p/eb72e1ec-9b5e-11e6-9d74-00163ed833e7/4088281257/tax-2013-screenshot.jpg

Exxtreme
2021-08-06, 09:08:08
Auch noch eine Alternative: Java + JavaFX. Ist plattformunabhängig ootb, man muss auch nichts für verschiedene Plattformen bauen denn man kann dann ein Artfakt auf allen unterstützten Plattformen nutzen. Und man bekommt Zugriff auf ein riesiges Öko-System.

Ach ja, noch was zur LGPL v3, mit der Qt lizenziert ist. Man darf so ein Programm nicht "vernageln". Denn der Lizenznehmer hat bei dieser Lizenz das Recht die Bibliotheken durch neuere Versionen austauschen zu können. Die Ausübung dieses Rechts muss man ihm ermöglichen. Die LGPL v3 fällt dann oft flach für irgendwelches embedded Zeug und diese Klausel war auch der Grund warum sich Linus Torvalds gegen diese Lizenz entschieden hat.

Chris Lux
2021-08-06, 09:25:17
Der Einfachheit halber würde ich dir von C++ für Desktop-Anwendungen abraten.

Nutze Electron als Basis. Dann schreibst du Pille-Palle-HTML und CSS für deine Oberfläche und Pille-Palle-JavaScript für dein Backend.
Sorry wen OT, aber dieser Quatsch ist warum wir heute auf unseren Gigahertz Maschinen Editoren haben die langsamer, laggyer und einfach nur grausam zu benutzen sind verglichen mit was wir zu 286er Zeiten hatten. Damals kann ich mich nicht erinnern nach einem Tastendruck 500ms aufwärts warten zu müssen ehe mal was passiert.

Abstraktion auf Abstraktion basteln. Diese verfluchte Web-und-Java-Generation!

/rant (ich werde alt)

da.phreak
2021-08-06, 10:06:59
Hm, evtl. werde ich beides mal antesten. Mit QT habe ich bereits erste Erfahrungen. Das Programm soll eine reine InHouse Lösung werden. Aber trotzdem will ich mir keine Leiche in den Keller legen. Da muss ich mich mal schlau machen oder ggf. direkt die Entwickler anschreiben.

Viel Spaß, dann hast Du jemand vom Vertrieb am Hals, der Dir ne QT-Lizenz verkaufen will. Die werden Dir erzählen, daß Du die unbedingt brauchst, haben wir alles schon durch.

Hier ist noch ein interessantes Video zu LGPL und QT:

https://www.youtube.com/watch?v=bwTlCBbB3RY&list=PLNDFxsfJ30_UOOuyVSAqG-wmXRuLqEJD7&index=18