Welche Sprache sollte ich verwenden?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
fg_91
User
Beiträge: 7
Registriert: Mittwoch 28. April 2021, 10:00

Donnerstag 29. April 2021, 16:44

Hallo,

ich möchte ein Programm für verschiedene Notebooks erstellen (kompatibel mit verschiedenen OS: Win, Linux, macOS). Mithilfe der GUI soll es möglich sein einen landwirtschaftlichen Lüfter zu steuern. Das Ganze geht dann aus dem PC über ein "serial communications port interface". Der Lüfter sollte ausfallsicher über eine lange Zeit laufen.

Ich frage mache ob ich das besser mit C++ oder Python umsetze. Könnte mir hierbei jemand einen Tipp geben?
Einerseits wäre es mit Python einfacher für alle Betriebssysteme zu entwickeln, aber wäre eine solche GUI sicher genug?
Es wird hier wahrscheinlich keine eindeutige Lösung geben, aber vielleicht kann mir ja jemand ein paar Tipps geben auf was ich aufpassen muss. :mrgreen:

Danke im voraus und ich Entschuldigung sollte das Thema nicht passend für dieses Forum sein. :)
jerch
User
Beiträge: 1668
Registriert: Mittwoch 4. März 2009, 14:19

Donnerstag 29. April 2021, 18:20

Ohne jetzt die technischen Vorgaben zu kennen, hier eine Idee:

Nimm einen Bastelrechner ala Raspi (oder noch kleiner), pöppel den fest in die Nähe des Lüfters und schliess das serielle Kabel an. Dann kannst Du mit WLAN oder LAN-Kabel drauf zugreifen. Dann eine kleine Weboberfläche zur Steuerung gebaut, z.B. mit Django (mit Login absichern!), und die Steuersignale über seriell rausgeben. Fertsch.

Vorteil der Weboberfläche - funktioniert mit allen Geräten, die einem Browser darstellen können und Zugriff auf das Netzwerk haben.
Nachteil - wenn Du keine Ahnung von Webprogrammierung und/oder Netzwerken hast, könnte das korrekte Absichern problematisch werden.

Eine native Desktopanwendung wäre mir für sowas zu unflexibel, es sei denn, man hat einem stationären Rechner mit Monitor und Tastatur direkt an den Lüfter geklemmt.
Sirius3
User
Beiträge: 14776
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 29. April 2021, 18:42

Dass der Lüfter ausfallsicher läuft, hängt am Lüfter. Also ist die entscheidende Frage, wie wird der Lüfter angesteuert? Muß das auch ausfallsicher sein? Wenn ja, dann wird es kompliziert.

Für die direkte Kommunikation schließe ich mich jerch an, da reicht wohl ein Raspi-Zero oder ESP, oder Arduino. Entweder läuft darauf direkt ein Web-Server oder es gibt irgendwo einen Server, der das übernimmt. Kommt halt drauf an, was Du sonst noch an Hardware laufen hast.
jerch
User
Beiträge: 1668
Registriert: Mittwoch 4. März 2009, 14:19

Donnerstag 29. April 2021, 19:51

@Sirius3: Jepp, wichtiger Punkt mit der Ausfallsicherheit.

@fg_91: Falls Ausfall- und Zugriffsicherheit sehr wichtig sind, würde ich da nicht mit etwas selbst Gebasteltem anfangen, sondern lieber ein paar Euro in zertifizierte Anlagensteuerung investieren (hat auch juristische und versicherungstechnische Vorteile). Nicht dass am Ende wegen eines ausgefallenen Raspis die halbe Ernte im Trockensilo verdirbt.
fg_91
User
Beiträge: 7
Registriert: Mittwoch 28. April 2021, 10:00

Sonntag 2. Mai 2021, 12:39

Danke schon mal für eure Antworten!
An die Weboberfläche habe ich auch schon gedacht, aber leider keine Erfahrung damit.
Ziel ist es, das Ganze auf einem alten Laptop zu installieren und mit der Steuerung zu Verbinden. Die Steuerung des Lüfters funktioniert bereits, dafür gibt es ein Bedientableau. Darum muss ich mich nicht kümmern. Es soll halt mit dieser GUI schöner dargestellt werden bzw. leichter zu bedienen sein..
__deets__
User
Beiträge: 10055
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 2. Mai 2021, 12:47

Wenn es *ein* alter Laptop ist, warum dann diese OS-Vielfalt? Dann hast du doch Kontrolle ueber das System, und kannst genau das drauftun, was dir die Loesung am einfachsten macht. Ich persoenlich wuerde aus Kostengruenden einfach ein Linux nehmen, und das Ding bootet dann in deine Anwendung - das war's.
nezzcarth
User
Beiträge: 1317
Registriert: Samstag 16. April 2011, 12:47

Sonntag 2. Mai 2021, 12:51

Kannst du denn C++ bereits so gut, dass du dir das Entwickeln einer Plattform-übergreifenden GUI-Anwendung zutraust, oder wie kommt genau diese Sprachkombination (Python vs. C++) zustande? Gerade C++ ist ja jetzt nicht unbedingt das, was man so wählt, wenn man es sich leicht machen möchte ... :)
__deets__
User
Beiträge: 10055
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 2. Mai 2021, 13:32

@nezzcarth: wenn ich eine cross-platform-gui entwickeln wuerde, waere C++ & Qt durchaus eine engere Wahl. Denn was Python an Leichtigkeit der Entwicklung bringt, verspielt es dann wieder beim Bundling fuer egal welche Plattform.
nezzcarth
User
Beiträge: 1317
Registriert: Samstag 16. April 2011, 12:47

Sonntag 2. Mai 2021, 13:42

@__deets__: Das verstehe ich. Allerdings hast du allgemein sehr viel Programmiererfahrung und kannst C++ bereits, oder? Ich hätte es jetzt so gesehen, dass C++ für jemanden, der neu einsteigt, ein dickeres Brett zu Bohren ist, als Python. Aber andere kennen sich da besser aus als ich. Daher habe ich jedenfalls gefragt, ob bereits C++-Kenntnisse vorliegen.
__deets__
User
Beiträge: 10055
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 2. Mai 2021, 13:50

Klar kann ich C++ & Python. Rein altersbedingt habe ich mit C++ sogar angefangen, da gab's Python nicht oder nur in einer rudimentaeren Form.

Wie dick das Brett C++ als Erstsprache vs. Python ist - finde ich schwierig zu beurteilen. Das hat auch wirklich viel mit Neigung zu tun. Fuer mich war Python definitiv eine Offenbarung, weil so viel ausdrucksstaerker. Aber es gibt auch Leute, die bevorzugen klare Typinformationen und entsprechendes Feedback und Design. Und Qt zumindest ist auch ziemlich freundlich was resourcen-Management angeht. Man muss ausser deleteLater eigentlich relativ wenig wissen.
fg_91
User
Beiträge: 7
Registriert: Mittwoch 28. April 2021, 10:00

Sonntag 2. Mai 2021, 14:00

Super, dass ihr so schnell antwortet.
Ich kann beide Sprachen. (ist natürlich relativ, würde mich nicht als Experte bezeichnen :D)
Die OS-Vielfalt kommt daher, dass dieses System für mehrere existiert. Es soll für mehrere alte Rechner gehen.

QT + C++ war mein erster Gedanke, nach einem kleinen POC bin ich aber irgendwie auf die Idee mit Python gekommen. Wäre das für eine Cross Platform nicht einfacher?
jerch
User
Beiträge: 1668
Registriert: Mittwoch 4. März 2009, 14:19

Sonntag 2. Mai 2021, 14:10

fg_91:

Zur engeren Sprachauswahl - in welcher Sprache hast Du denn Vorkenntnisse? Hast Du schon mal eine GUI geschrieben mit irgendeiner Sprache? Dann würde ich dabei bleiben, egal ob Java, C++ oder welche Sprache auch immer.

Wenn Du keine Vorkenntnisse hast, empfehle ich Dir was Einsteigerfreundliches, und da ist Python eine gute Wahl. Da dann gleich bis zur GUI-Programmierung vorzudringen, ist allerdings ein ziemliches Brett, da Du Dich zunächst mit der Sprache selbst vertraut machen musst, um dann Konzepte wie ereignisgesteuerte Programmierung zu lernen. Erst dann kann man sich sinnvoll an eine GUI wagen. Mit hoher Motivation und ausreichend Zeit kann man in Python da schnell hinkommen, trotzdem reden wir hier eher von Monaten und nicht nur ein paar Wochen.

Erzähl doch mal, was Deine Vorkenntnisse in puncto Programmieren sind, vllt. kann man so gezieltere Tipps geben.

Edit: Ok, Du warst schneller und hast Obiges schon beantwortet. Wenn Du C++ gut kannst, ist es mit Qt doch sehr einfach. Bzgl. Python mit Qt sehe ich hier nur den Vorteil der schnelleren Entwicklung/Eingriffe (ist super für RAD). Da Du wahrscheinlich kaum Businesslogik brauchst, reduziert sich die Frage darauf, ob Du lieber Qt in C++ oder Python ausdrücken möchtest (+ build/bundling Einfachheit). Das ist Geschmackssache (ich würde es mit Python machen).
Benutzeravatar
__blackjack__
User
Beiträge: 8836
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Sonntag 2. Mai 2021, 15:27

@ nezzcarth: Wobei C++ durch Qt IMHO auch schon wieder ein bisschen entschärft wird. Klar die ganze Komplexität von C++ ist natürlich trotzdem da, aber wenn man sich an die ”Untermenge” und die Konventionen hält die Qt ”vorlebt”, ist das für Anfänger ein bisschen weniger krass als C++ ohne Rahmenwerk oder einem das weniger ”opinionated” ist.
Q: What is the volume of a pizza of radius z and thickness a?
A: pi·z·z·a
__deets__
User
Beiträge: 10055
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 2. Mai 2021, 16:22

Ich wuerde immer noch mit Nachdruck dazu raten, sich die Mehrplattformigkeit abzuschminken. Das wird der entscheidende Teil des Aufwandes sein in meinen Augen, und bei der angestrebten Nutzung ist es doch total egal. Solange das Notebook nur *eine* Sache machen soll (und es soll ja stabil sein, also gleichzeitig noch auf fragwuerdigen Seiten rumsurfen sollte nicht erlaubt sein, etc), kannst und solltest du mehrere gleich aufgesetzte Notebooks verwenden.

Denn auch wenn du recht hast, das Python an sich einfacher auszufuehren ist, wenn man drei verschiedene Kisten vor sich stehen hat, so liegt das nur daran, dass jemand anderes fuer dich einen oder mehrere Installer gebaut hat. Und du das System so hinfrickeln kannst, das alles geht.

In dem Moment, wo du aber selbst einen komfortablen Installer bauen willst, damit dein Programm auch bequem installiert werden kann, sieht das ploetzlich ganz anders aus.
fg_91
User
Beiträge: 7
Registriert: Mittwoch 28. April 2021, 10:00

Sonntag 2. Mai 2021, 18:13

Danke nochmal für eure Antworten. Ich bin begeistert wie viel Rückmeldung man in diesem Forum bekommt.

@jerch: Würdest du mir zu QT raten? Ich habe z.B. auch wxWidgets gefunden. (cross platform) Bzw. frage ich mich im Moment ob dein erster Vorschlag mit Django vielleicht gar nicht so schlecht wäre.

@deets: Diese Mehrplattformigkeit wäre für mich schon wichtig. Wie ist das dann mit dem Installer? Damit habe ich keine Erfahrung. Wäre das wirklich so ein großer Aufwand?
Antworten