Welche Programiersprache

  • Ich stelle mir je Langers je mehr die Frage für welche Programmiersprache ich mich entscheiden soll. Grundsätzlich steht der Raspberry hinder dem Python. , dies würde in meinem sinne wohl am meisten sinn ergeben. Bei Ardunio habe ich aber gesehen das dieser auf der C Sprache basiert. Da ich in Sachen Programmieren noch überhaupt keine Ahnung habe möchte ich mich da nicht für den falschen weg entscheiden. Mein Ziel wären Robotik Projekte mit dem Pi. Bin mal auf eure Meinungen gespannt. Da ich grundsätzlich ein Windows Anwender bin, Linux jetzt nur dank des Raspberrys entdekt habe, möchte ich auch eine Programiersprache die sich auch in der Windows Welt sehen lassen kann.


    Mfg Alex

  • Hallo Alex,


    mit der Empfehlung von Programmiersprachen ist das so eine Sache. Das hängt davon ab, was Du programmieren möchtest.


    Anscheinend legst Du Wert auf Portabilität (Quellcode, der auf einem System entwickelt wurde, soll ohne nennenswerte Änderungen auch auf einem anderen System laufen) reduziert sich die Auswahl auf folgende Sprachen:

    • C
    • C++
    • Lazarus/FPC
    • Icon


    (um mal eine kleine Auswahl zu nennen).


    Zu jeder dieser Programmiersprachen gibt es gute (und weniger gute) Tutorials. Ein Tutorial zur Programmiersprache Icon stammt von mir.


    Wenn Du in Sachen Programmiersprachen vollkommen unbeleckt bist, würde ich an Deiner Stelle mal den Quellcode von Programmen einiger Programmiersprachen anschauen. Die Erfahrung hat gezeigt, dass Du in der Programmiersprache, deren Quellcode Du besser "lesen" kannst (=verstehst) auch besser und schneller, leichter und einfacher wirst Programme entwickeln können.


    Hier im Forum gibt es auch eine Auflistung von Programmiersprachen, die auf dem Raspberry Pi laufen. Hier findest Du eine größere Auswahl mit noch mehr Anregungen.


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited 3 times, last by Andreas ().

  • Hallo Alex,
    zunächst zu mir, ich bin ein großer Freund von C++ und habe mit Python bis jetzt wenige Erfahrungen gesammelt.


    Wie du schon richtig erkannt hast, ist Python auf dem Raspberry Pi sehr weit verbreitet, falls du aber etwas auf einem Mikrocontroller (z.B. den Arduinos) programmieren willst, wirst du mit Python nicht weit kommen, sondern in den meisten Fällen bei C (oder C++) landen. Robotik sollte auf dem Pi in beiden Sprachen funktionieren.


    Nach meiner Meinung sollte Python für den Anfang leichter sein, da man auch ohne tiefes Verständnis recht weit kommt. Die verfügbaren Bibliotheken decken fast alles ab, was man brauchen könnte. Bei C/C++ sind die Datentypen verpflichtend, was den Einstieg schwerer macht, dafür aber ein Verständnis dafür vermittelt (z.B. warum man eine Zeichenkette "70" nicht einfach mit der Zahl 70 vergleichen kann).


    Ob Windows/Linux ist meiner Meinung egal. Bei C würde ich dir diese Anleitung empfehlen (http://www.raspberry-projects.…lopment-on-a-raspberry-pi), damit kannst du auf dem Windows PC mit voller Unterstützung der Autovervollständigung programmieren, die Programme werden aber auf dem Pi kompiliert und ausgeführt. (Auf Wunsch auch debuggt)


    Letzendlich liegt die Entscheidung bei dir.


    Gruß
    Chris


    PS: Mir ist bewusst, dass dieser Beitrag nicht ganz neutral ist.

    Edited once, last by ChrisvA ().

  • Danke für deine Antwort. Da ich dirch viele Programieranleitungen zum Thema Raspberry Pi immer wieder auf Python gestossen bin, bin ich irgendwie auf diese Sprache fixiert worden.
    Natürlich kenne ich (vom hörensagen) die Programmiersprache C eher als Python. Möchte mich jedoch such nicht in was schwieriges reinsteigern. Vielleicht Programmiersprache C gerade desswegen, weil ich so die möglichkeit hätte auch ein Projekt mit Ardunio zu realisieren?

  • Also mit C/C++ fährst du bestimmt nicht falsch.


    Wenn du was plattformunabhängiges suchst wäre Java noch eine Möglichkeit. Das würde unter bestimmten Voraussetzungen auch auf dem Arduino laufen. Hier will ich mir z. B. BAJOS mal anschauen.


    Python ist so eine Sache. Es ist für Einsteiger einfach zu lernen und für die, die eine andere Sprache bereits können, sehr schnell anzueignen. Daher würde ich mal sagen man kann diese Sprache parallel lernen, wenn man damit kein Problem hat.


    Wenn du einen beruflichen Zweck damit verbinden kannst fährst du ziemlich gut, wenn du alle drei Sprachen lernst. Aber schön langsam anfangen.



    Wenn ich wählen müsste würde ich erst Java lernen. Danach oder parallel Python und C/C++ als dritte Sprache zum Schluss. Hier ist die Syntax von C und Java sehr ähnlich, sodass du dich dann auch leicht reinfuchsen wirst bzw. wenn du es nur für den Arduino benötigst kannst du dich nur mit den entsprechenden "basics" beschäftigen.


    Grundsätzlich gilt aber: Wenn du es nicht beruflich brauchst wähle die Sprache, die dir am besten gefällt und deinen Zweck erfüllt. Da kann man nämlich Glaubenskriege über die "beste Sprache" los treten. Für Anfänger sollte die Sprache nur eine weite Verbreitung haben, da du dann mehr Unterstützung und mehr Sourcecode zur Verfügung hast. Also wenn du nur C lernst wirst du auch glücklich. [emoji6]

  • Grundsätzlich möchte ich die Sprache aus reinem Privatem interesse fürs Programieren des Rasperis erlernen. Natürlich könnte hier und da ein Ardunio Projekt hervorkommen, (bin nicht gerade der absolute Linux fan;)).
    Desshalb sollte die Sprache auch rein Privat und durch eigenstudium erlernbar sein.

  • Hallo Alex,



    Desshalb sollte die Sprache auch rein Privat und durch eigenstudium erlernbar sein.


    Das gilt uneingeschränkt für jede Programmiersprache...


    Wenn Du z.B. jetzt schon weißt, dass Du hauptsächlich (graphische) Anwendungen für die Kommunikation mit dem Arduino schreiben möchtest, dann würde sich auch die sehr an C++ angelehnte Programmiersprache Processing anbieten.

    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas ().

  • Ich glaube irgendwann stand jeder mal vor dieser Frage. Ich hab auch dann erstmal mit pyhton angefangen weil es recht einfach zu verstehen War. Dann hatte ich zuletzt Kleinigkeiten mit dem Arduino(C/C++) gemacht und es ist garnicht so schwer das zu lesen und zu verstehen nach dem man schon etwas in einer anderen Programmiersprache gelernt hat.

    :shy: Legastheniker :shy:


    wer fehler findet darf nachsicht haben


    Klick>Youtube Channel<Klick

  • Ich würde das davon abhängig machen WAS du umsetzen möchtest. Dazu habe ich hier bisher nichts genaues lesen können nur "Robotik" aber das ist ein ebenso breiter Bereich wie es Sand am Meer und ebenso viele verschiedene Programmiersprachen gibt.


    Du kannst GPIO's auch ganz simpel via bash steuern und so ein Gefährt bewegen und selbst das zählt dann zum Bereich "Robotik".... Die bash ist die Konsole wenn du in Linux ein Terminal aufmachst oder dich via SSH verbindest. (manchmal auch dash oder ksh aber das tut sich kaum was)


    Der Arduino basiert nur auf C++, es ist aber durch verschiedene Libs vereinfacht und nicht vollständig kompatibel zu C++ wie zum Beispiel ' String ' und ' string ' , eins davon funktioniert nur für Arduino das andere nicht, und das gleiche gilt für C++: eins geht das andere was für Arduino funktioniert aber nicht ... Sobald du auf Libs verzichten willst/musst wird C++ weitaus komplizierter als es für Anfänger geeignete Sprachen wie Python sind.


    Wie gesagt, mach deine Wahl davon abhängig was du überhaupt umsetzen/erreichen willst.
    Es macht aus meiner Sicht auch kein Sinn stupide nur auf einer Programmiersprache fixiert zu sein, ziemlich oft bedarf es mindestens 2 verschiedener



    //EDIT: Meine gestrige Antwort auf deine Frage aus einem anderen Thread: http://www.forum-raspberrypi.d…agen?pid=234602#pid234602


  • Ich glaube irgendwann stand jeder mal vor dieser Frage. Ich hab auch dann erstmal mit pyhton angefangen weil es recht einfach zu verstehen War. Dann hatte ich zuletzt Kleinigkeiten mit dem Arduino(C/C++) gemacht und es ist garnicht so schwer das zu lesen und zu verstehen nach dem man schon etwas in einer anderen Programmiersprache gelernt hat.


    Genau aus diesem Grund einfach machen und nicht lange suchen [emoji6]


    Wenn dir Python schon nicht mehr aus dem Kopf geht... fang damit an.



    http://www.diveintopython.net/


    https://wiki.python.org/moin/GermanPythonBooks

  • Hallo Meigrafd,



    Der Arduino basiert nur auf C++, es ist aber durch verschiedene Libs vereinfacht und nicht vollständig kompatibel zu C++ wie zum Beispiel ' String ' und ' string ' , eins davon funktioniert nur für Arduino das andere nicht, und das gleiche gilt für C++: eins geht das andere was für Arduino funktioniert aber nicht ... Sobald du auf Libs verzichten willst/musst wird C++ weitaus komplizierter als es für Anfänger geeignete Sprachen wie Python sind.


    Arduino kann auch in Basic, Pascal (z.B. mikroPascal) und ADA programmiert werden - nicht NUR C++.


    Aber auch in


    Quote

    Occam via concurrency.cc
    BASIC via DK-Basic
    Java via NanoVM
    Forth via amforth


    [Quelle]
    kann ein Arduino programmiert werden.



    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas ().

  • Andreas: Diese Info ändert aber doch irgendwie nichts an dem was ich bezüglich Arduino und C++ geschrieben habe, oder? :-/ Ich schrieb nicht das NUR C/C++ auf dem Arduino funktionieren würde, sondern das es NUR darauf basiert - kleiner aber feiner Unterschied.


    Soweit ich weiß werden die anderen Sprachen aber auch nur übersetzt also konvertiert. Direkt/Nativ/ohne Übersetzer/ohne extra Compiler - funktionieren die nicht.

  • @meigraf ich glaube er will einfach nur "irgendwas" umsetzen. Aus Interesse, aus Spass oder unter vorgehaltener Waffe [emoji12]
    Daher sollte er erstmal anfangen überhaupt eine Sprache zu lernen.

  • Hallo Meigrafd,



    Andreas: Diese Info ändert aber doch irgendwie nichts an dem was ich bezüglich Arduino und C++ geschrieben habe, oder? :-/ Ich schrieb nicht das NUR C/C++ auf dem Arduino funktionieren würde, sondern das es NUR darauf basiert - kleiner aber feiner Unterschied.


    Soweit ich weiß werden die anderen Sprachen aber auch nur übersetzt also konvertiert. Direkt/Nativ/ohne Übersetzer/ohne extra Compiler - funktionieren die nicht.


    Damit wird Deine Ausage auch nicht richtiger. Prinzipiell kann ein Arduino in jeder beliebigen Programmiersprache programmiert werden, zu der eine Tool Chain existiert, um daraus nativen Binärcode zu erzeugen.
    Und weiterhin: Dies muss nicht auf C++ basieren - und tut es bzgl. der geposteten Beispiele auch nicht. Z.B. wird bzgl. Pascal direkt Binär-Code erzeugt, wie es unter der IDE aus C++ erzeugt wird.


    Meigrafd, es muss jedem erlaubt sein, auch Dich auf Deine Aussagen korrigierend hinzuweisen, wenn Du etwas zum Ausdruck bringst, das Leute mit wenig kritikfähigem Wissen für die totale Wahrheit halten - aber missverstehen, da Aussagen ggf. von Dir dehnbar ausgelegt werden, damit Du auf jeden Fall immer Recht behältst.


    Ich bin da auch aus diesem Thread raus, da Du auch diesen durch Deine Drehungen und Wendungen ad absurdum zu führen scheinst.



    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Andreas: Es ist ein unterschied ob man schreibt:


    Der Arduino kann nur C++


    oder


    Der Arduino basiert nur auf C++ ...



    Mein obiger Beitrag beinhaltet die Aussage dass das C++ für den Arduino nicht vollständig kompatibel zum herkömmlichen C++ ist ... Denn der Satz geht ja noch weiter.


    Schreib ein einfaches Programm in C++ was 'string' verwendet auf dem Pi und versuche's dann mit avr-gcc zu kompilieren, vielleicht merkst Du ja dann was ich mit dem Satz in Beitrag#9 gemeint haben könnte.



    Aber vermutlich hätte Ich noch mehr Details erwähnen oder es gar noch krass anders formulieren müssen? Wer etwas zum meckern sucht, findet immer etwas

  • Wohl werde ich mein Glück mit Python versuchen. Da ich erstmal einige Grundkenntnisse erlernen muss bietet sich diese Sprache wohl am besten an.


    Natürlich möchte ich ein Roboter von Grund auf Programmieren. Dies geht ja auch über Python. Vielleich auch etwas begrenzt. Auch wird dies wohl nicht ein Roboter sein der Programmtechnisch die Welt verändern wird. Viel mehr steht bei mir das erlernen und das herumtüfteln im Vordergrund. Später kann ich ggf. immeroch auf C++ umsteigen.

  • Deine Entscheidung für Python halte ich für absolut richtig. :thumbs1:


    Diese Sprache hat einen recht einfachen und schlüssigen Aufbau und erzieht zur Strukturierung (Einrückungen sind in Python als Blockdefinition zu sehen).
    Außerdem hat diese Sprache im Wesentlichen alles, was andere Hochsprachen ebenfalls haben (Objektorientierung usw... - will dich jetzt nicht verwirren, wirst du schon sehen).


    Wähle möglichst die Sprach-Version 3.4 oder 3.5. Die Version 2.7 gilt als veraltet und ist Performance-technisch schlechter.
    Der Syntax der Sprachen ist etwas unterschiedlich, wobei die Version 3.x näher an anderen Hochsprachen dran ist (was eine spätere Erweiterung deiner Programmiersprachkenntisse fördert).


    UND (ganz wichtig): Python ist eine Mainstreamsprache, will heissen, du findest sehr viel Unterstützung in Web, wenn mal etwas klemmt. Auch hier im Forum beherrschen sieht viele diese Sprache, um dich ggf. unterstützen zu können. Es gibt massenhaft Bücher und Tutorials...


    Ich empfehle dir als Editor (IDE) PyCharm zu benutzen (gibt es für Linux und für Windows..). Diese IDE (Integierte Entwicklungsumgebung, zu deutsch) erleichtert sowohl das Schreiben von Code als auch den Test und die Fehlersuche. Mit (nach)installiertem Java (7/8) SDK läuft PyCharm auch auf dem RasPi direkt.


    Viel Spass und wenn du auf Probleme stößt, frag hier nach!


    das Zen

  • Danke für den Tipp. Muss dazu auf dem Raspberry noch etwas Installiert werden?