Welche Programmiersprache ist die richtige für mich?

  • Hallo,


    ich stehe vor der Frage, welche Programmiersprache ich sinnvollerweise lernen soll.


    Das Projekt was ich gerade starte ist ein Dartautomat mit einem RaspberryPi. Die Anzeige soll auf einem TFT im Vollbild erfolgen. Man soll also vom OS gar nichts mitbekommen, nach dem einschalten landet man direkt im GUI. Innerhalb der Menüs soll eine BT Tastatur dazu dienen Einstellungen vorzunehmen.

    Das Auslesen der Felder vom Dartboard übernimmt ein Arduino, der die Werte an den Raspi schickt.


    Ich habe mich die letzen Tage etwas mit Python und C# beschäftigt und mir kommt es sehr kompliziert vor mit Python ein GUI zu basteln was vernünftig aussieht.

    Da scheint mir Visual Studio mit C# oder C/C++ um einiges komfortabler zu sein.


    Erfahrungen mit der Arduino Programmierung sind bereits vorhanden (Kleine Projekte wie RGB LEDs mit PWM ansteuern, Temperaturregler mit Lüftersteuerung und LCD menü etc.)

    Außerdem habe ich Erfahrung in der SPS Programmierung (AWL, FUP)


    Mit fehlt es aber an dem Grundlegenden Verständnis wie ein größeres Programm richtig aufgebaut wird. Ich komme bei kleinen Projekten halt immer mit Trial and Error zum Ziel, möchte aber davon weg und eine Sprache richtig lernen.


    Bei den bekannten Fernschulen, gibt es C# und C/C++ Lehrgänge die ~18 Monate gehen, ich überlege ob ich mich dort einschreiben soll.


    Da ich Elektroniker (und Staatl. geprüfter Techniker) bin, kann ich die Programmierung auch im beruflichen Umfeld gut gebrauchen. (Prototypenbau etc.)


    Wozu würdet ihr mir raten?

    Einmal editiert, zuletzt von xromanx ()

  • Hallo,


    Zitat


    und mir kommt es sehr kompliziert vor mit Phyton ein GUI zu basteln was vernünftig aussieht.

    1. heißt die Sprache Python (wie die Schlange) - Phyton gibt es nicht.

    2. ist eine GUI Programmieren _immer_ aufwendig, weil du jedes Element coden musst und ggf. noch Aktionen / Events daran binden. Da ist es auch ziemlich egal, ob du Python oder C++ oder ... nimmst. Einen Teil der Arbeit kannst du dir mit einem GUI-Designer ersparen bzw. das Layout und die grafischen Element ziehst du dir im GUI-Designer zusammen, der erzeugt daraus eine Datei, die du später ins Programm einbindest (vereinfacht ausgedrückt).


    Zitat


    Mit fehlt es aber an dem Grundlegenden Verständnis wie ein größeres Programm richtig aufgebaut wird.

    Das kommt drauf an, welche Idiome die von dir gewählte Sprache hat. Bei Python und C++ würdest du dir für größere Projekte auf jeden Fall die GUI, die Programmlogik etc. in Klassen packen.


    C# würde ich nur nehmen, wenn auf dem Raspi auch Windows läuft. Zwar kannst du C# auch unter Linux nutzen, unter Windows hat man aber damit IMHO (noch) wesentlich mehr Möglichkeiten als unter Linux.


    Gruß, noisefloor

  • LabView war eigentlich für die schnelle Entwicklung von GUIs super. Ich glaube aber, das gibt es nicht für den Raspi. Ansonsten ist C natuerlich sehr universell, aber ein GUI ist auch nicht einfach so gemacht.

  • Es war schon etwas spät, der Schreibfehler wurde korrigiert.


    Wenn ich das richtig verstehe, nutzen viele von euch Python für den Raspi und erstellen die GUI dann als Webapp.

    Das alles ist doch auch mit C# möglich solange ich Windows IoT auf dem Raspi verwende oder?


    Um das angestrebte Projekt geht es mir eigentlich zweitrangig. Wichtig ist mir eine Programmiersprache "richtig" zu lernen. Diese sollte halt vielseitig nutzbar und einigermaßen einfach erlernbar sein (Deshalb schliese ich C wohl schonmal aus).

    Ein Projekt hilft, finde ich aber sehr, um gelernte Sachen selber umzusetzen und sich Gedanken zu machen.


    Ich lese oft das für den einstieg C# oder Java empfohlen wird weil beide Sprachen sehr modern sind.


    Mein Plan wäre jetzt C# (Ist ja mit Windows IoT super nutzbar) und wenn ich das gut beherrsche, umsteigen auf C++ um hardwarenah Programmieren zu können (embedded system usw.)


    Passt das so?

  • C# (Ist ja mit Windows IoT super nutzbar)

    Frage ob Windows IoT super nutzbar ist am Pi kannst du uns dann mal davon berichten (:



    Ich lese oft das für den einstieg C# oder Java empfohlen wird weil beide Sprachen sehr modern sind.

    Wo?



    Wenn ich das richtig verstehe, nutzen viele von euch Python für den Raspi

    Ja, sieh dir mal an wie viele Beiträge zu welcher Sprache erstellt werden und leite dabei ein Urteil ab.

    Ebenso prüfe, wieviele Biblioteken für verschiedene Sensoren und Funktionen zur Verfügung stehen, und beurteile welche Sprache du nimmst.


    Such dir verschiedene Sensorenvertreiber (Adrafruit o.ä) und prüfe auf welche Sprachen ihre Tutorials zur Verfügung stehen.


    Dann kannst du dir selbst ein Urteil fällen welche Sprache du für dich auserwählst

  • Das alles ist doch auch mit C# möglich solange ich Windows IoT auf dem Raspi verwende oder?

    Also mit Windows IOT auf dem RPi tust Du Dir als Anfänger keinen Gefallen! Da ist alles etwas anders, als in allen anderen Betriebssystemen für den RPi. Nicht mal das SD-Flashen funktioniert out of the box. Mein Tipp: Zunächst Raspbian Desktop und später evtl, Raspbian lite

  • Noch einen Schups in Richtung Python:


    Mein Einstieg wurde damals zum Python3 programmmieren begleitet von:

    https://cscircles.cemc.uwaterloo.ca/de/

    Dort werden die Basics sehr verständlich erklärt, und dazu immer wieder Aufgaben gestellt. Außerdem sieht man hier anfangs auch mal wie sich die Variablen etc. Schrittweise verändern.

    Kann ich dir zu Beginn nur Empfehlen, wobei dort nicht das "pythonische" vermittelt wird.


    Als Editor und Entwicklungstool würd ich von anfang an PyCharm empfehlen


    Als Nachschlagewerk verwende ich meist diese 2 Bücher:

    https://www.rheinwerk-verlag.de/python-3_3789/

    https://www.amazon.de/Raspberry-umfassen...e handbuch


    PS: Und wenn mit Python3 anfangen, nicht mehr Python2!

  • Ich danke euch für eure Mühen! :)


    Hofei Das Buch vom Rheinwerk Verlag habe ich gestern schon bestellt, sollte heute ankommen.

    Der Link für das Tutorial ist auch super!


    schlizbäda

    Bei der Installation von Windows IoT hatte ich bis jetzt keine Probleme, es wurde auch schon mein erstelltes GUI (Mit Visual Studio zusammengeklickt) dargestellt. WLAN lief auch mit einem externen WLAN Stick.


    Jetzt fällt es mir noch schwerer mich zu entscheiden :D Ich glaube ich sollte mich mal etwas mit dem QT Designer auseinander setzen und hoffen, dass ich damit auch so schnell eine brauchbare Oberfläche zaubern kann, die direkt im Vollbildmodus startet.

  • Bei der Installation von Windows IoT hatte ich bis jetzt keine Probleme, es wurde auch schon mein erstelltes GUI (Mit Visual Studio zusammengeklickt) dargestellt. WLAN lief auch mit einem externen WLAN Stick.

    Na wenn Du schon so weit bist und Erfolg hast, dann betrachte meinen obigen Ratschlag als gegenstandslos. Ich dachte nur, Du wärst noch in der theoretischen Evaluierungsphase. C# ist auf jeden Fall und zumindest unter Windows definitiv zukunftsfähig. Zur Info: Für Linux gäbe es das Mono-Projekt, das die (mittlerweile standardisierte) Programmiersprache C# implementiert.

  • Na wenn Du schon so weit bist und Erfolg hast, dann betrachte meinen obigen Ratschlag als gegenstandslos. Ich dachte nur, Du wärst noch in der theoretischen Evaluierungsphase. C# ist auf jeden Fall und zumindest unter Windows definitiv zukunftsfähig. Zur Info: Für Linux gäbe es das Mono-Projekt, das die (mittlerweile standardisierte) Programmiersprache C# implementiert.

    Ich habe halt beides mal getestet. Da ich wenig Ahnung von Linux habe, fühlte ich mich mit Windows wohler :D


    Im Anhang könnt ihr die sehen wie ich mir das in etwa vorstelle. Der Spielbildschirm an sich wird natürlich aufwändiger.

    Wenn sowas auch mit ein paar klicks mit QT möglich ist, wäre Python auf jeden Fall trotz der Linux Hürden einen Blick wert.



  • also Python gibt es prinzipiell auch für Windows. Jedoch weiß ich nicht, ob es auch unter Win IoT für den RPi problemlos funktioniert...

    Aber lass Dich nicht beirren!

  • Ich habe halt beides mal getestet. Da ich wenig Ahnung von Linux habe, fühlte ich mich mit Windows wohler

    Nur der Erwähnung halber: auf allen möglichen Plattformen läuft auch Lazarus, was eine pascaloide Sprache ist, imho leicht zu lernen und sich hervorragend für Deinen Zweck eignet. Für berufliche Entwicklung ist dann vielleicht aber doch was C-artiges besser.


    Grüße, STF

    "And now for something completely different."


    Hofeis guide to: Wie frage ich nach Hilfe? *** Mein nagelneuer Raspberry Pi 3B+ zeigt nur ein buntes Bild. (Ab)Hilfe.

  • Wenn Du in einer Suchmaschine mal "Vergleich Programmiersprachen" eingibst, wirst Du einiges an interessanten Berichten finden. Auch lohnt sich ein Blick auf diesen Beitrag in diesem Forum betreff C.

    Nach meinem Eindruck solltest Du zwei Begriffe mehr voneinander trennen, die Du vermutlich im Kopf zu dicht nebeneinanderlegst: Die IDE zur Unterstützung der Entwicklung und die Sprache, in der der Code geschrieben ist.

    Ferner baut man Programme mit GUI nicht mehr von Hand sondern per Baukasten wie QT etc.


    Ein Lehrgang ist per se was feines aber ich würde Dir empfehlen, die ersten Schritte alleine zu gehen und dann einen Lehrgang auszusuchen. Wie bei allen anderen Themen auch gibt es gute und schlechte Kurse und das kannst Du als Einsteiger nicht beurteilen.

    Für mich waren manche Tutorials auf Youtube hilfreich.


    Der Hinweis aus Beitrag #2 ist goldwert: Mit einer Sprache, die zwar Deinen Zweck erfüllt aber mit der Du nicht klarkommst, wirst Du weder Spaß noch Erfolg haben. Einach mal ausprobieren und die ersten 1000 Zeilen Code zusammenbauen und Erfahrungen sammeln.

    Mein Github-Repository ist hier zu finden.

  • peuler dürfte ich bitte erfahren, was du unter "von Hand" und "Baukasten" verstehst? Qt ist ein GUI-Toolkit, den Code, der vom Toolkit Gebrauch macht, schreibt "man" aber sehr wohl von Hand. Ich habe eine vage Vermutung, was du meinst, da hätte ich dann aber diverse Gegenbeispiele, deshalb brauche ich mehr Klarheit.

  • Mit "von Hand" meinte ich, dass man auch das GUI so zusammenbauen könnte, dass man jedes Element programmiert um zum Beispiel zu einem Menü zu kommen. Das macht aber keiner (mehr). In den Anfängen von grafischen Benutzeroberflächen ging es aber kaum anders.

    Du nennst QT ein Toolkit, für mich ist es ein Baukasten: aus fertigen Elementen kann ich etwas zusammensetzen und muss dann in meinem eigenen Programm auf die Ereignisse reagieren, die von dem zusammengesetzten Ergebnis ausgehen.

    Mein Github-Repository ist hier zu finden.