Welche Programmiersprache ist dem Arduino am ähnlichsten ?

Hallo,

wie der Titel schon sagt,..... welche Programmiersprache ist dem Arduino am ähnlichsten ?

Ich würde gerne etwas tiefer in die Materie eintauchen. Leider komm ich mit meinen Arduino-Büchern nicht wirklich weiter. Zum einen fehlt mir die Disziplien und oft bleiben einfach zu viele Fragen für mich offen. Spezielle Arduino Kurse/Lehrgänge gibt es ja nicht wirklich, außer vielleicht mal an der Uni. Hab auf jeden Fall nichts gefunden.

Was würdet Ihr mir raten,... welche Programmiersprache hilft mir am ehesten mit dem Arduino weiter zu kommen. Es geht mir eigentlich erstmal nur um einen grundkurs !

Gruß, Philip

Der Arduino wird in C / C++ programmiert und zwar ausschliesslich. Daher ist es das beste, wenn Du Dich mit genau dieser Sprache auseinander setzt. Andere Sprachen wie z.B. Java sind ähnlich und alle imperativen Programmiersprachen haben gemeinsame Elemente wie Schleifen, Verzweigungen, Vergleiche, Variablen und Funktions- bzw. Unterprogrammaufrufe, aber der Teufel steckt ja sprichwörtlich im Detail. Im Fall von C sind das Zeiger die auf bestimmte Stellen im Speicher zeigen und mit denen gerechnet, verglichen und gezählt wird. Das ist für Einsteiger am Anfang in der Regel der schwierigste Teil und auch der frustrierendste, da man hier schnell Fehler macht, die kaum auf den ersten Blick zu erkennen sind. Aber genau dafür gibt es ja solche Foren wie hier.

Da es C schon sehr lange gibt (ca. 40 Jahre), finden sich im Netz jede Menge Tutorials auch für Anfänger. (z.B. http://www.c-howto.de/tutorial.html)
C++ ist eine Erweiterung von C auf objektorientierte Programmierung. Hier geht es sehr vereinfacht ausgedrückt um die Abstraktion und Wiederverwendbarkeit von Code. Am Anfang ist das für die Programmierung des Arduino nicht zwingend. Viele Libraries verwenden Objekte und Klassen, liefern aber meist auch Doku wie diese zu benutzen sind.

Am besten schaust Du Dir das eine oder andere Tutorial an und versuchst das Gelernte auf den Arduino zu übertragen. Einfache Tests wie “Hello World” kann man auch sehr schön mit Hilfe der seriellen Konsole umsetzen.
Wenn Du konkrete Fragen hast, wird Dir hier sicher schnell geholfen.

Mario.

Ich empfehle K+R "C", Stroustrup C++ und McConnel Code Complete. Zur Not kannst Du den Stroustrup weglassen. Wenn Du alle 3 durcharbeitest werden Dich 99% der Forenmitglieder nicht mehr von einem Profi Entwickler unterscheiden können.

[quote author=Udo Klein link=topic=90697.msg681697#msg681697 date=1328631754] Ich empfehle K+R "C", Stroustrup C++ und McConnel Code Complete. Zur Not kannst Du den Stroustrup weglassen. Wenn Du alle 3 durcharbeitest werden Dich 99% der Forenmitglieder nicht mehr von einem Profi Entwickler unterscheiden können. [/quote]

Das ist jetzt aber schon ein Scherz, oder? Die Ausgaben von K+R sowie Stroustrup die ich kenne (mein Stand ist allerdings schon ungefähr 15 - 20 Jahre alt), sind für einen Anfänger absolut unbrauchbar - vorf allem im Selbststudium. Da gibt es sicher bessere Einsteigerbücher. Meine Ausgabe von "Code Complete" ist auch schon etwas älter - finde ich sehr gut, aber für einen Einsteiger auch viel zu tief.

Da gerade die Programmierung unter Android vom Aufbau her sehr einfach ist, würde ich nach einem guten Einsteigertutorial für C suchen, C++ ist sicherlich sehr nett, aber da kann man noch mehr Fehler als in C machen;-)

Rudi

Nein, das ist kein Scherz. Er hat nach Büchern und "tief einsteigen" gefragt. Anfängerbücher würde ich mir keine kaufen. Anfängermaterial findet sich im Internet haufenweise. Insbesondere auch Bücher die man sich mittlerweile frei runterladen kann. Wenn Code Complete schon zu tief ist, dann muß ich passen. Alle einfacheren Bücher sind bei mir mittlerweile im Müll gelandet.

Hallo,

das hier sollte geeignet sein etwas einzusteigen: http://openbook.galileocomputing.de/c_von_a_bis_z/

Grüße, Jürgen

Hmmm, wieso ist das besser als K+R geeignet?

Hallo Udo,

habe nur geschrieben, dass es geeignet sein sollte. Nicht, dass es besser sein sollte... Wollte auch Deine Literaturvorschläge gar nicht angreifen :-)

Grüße, Jürgen

[quote author=Udo Klein link=topic=90697.msg681861#msg681861 date=1328638442] Nein, das ist kein Scherz. Er hat nach Büchern und "tief einsteigen" gefragt. Anfängerbücher würde ich mir keine kaufen. Anfängermaterial findet sich im Internet haufenweise. Insbesondere auch Bücher die man sich mittlerweile frei runterladen kann. Wenn Code Complete schon zu tief ist, dann muß ich passen. Alle einfacheren Bücher sind bei mir mittlerweile im Müll gelandet. [/quote]

Nee, er hat geschrieben, dass er "etwas tiefer einsteigen" wolle und als letztes kam die Aussage, dass es ihm eigentlich um einen Grundkurs gehe.

Ich will übrigens weder den K&R noch den Stroustrup schlecht machen - aber die Werke, so wie ich sie in Erinnerung habe, sind didaktisch eine Katastrophe.

Was mir damals recht gut gefallen hat, waren die Bücher von Herbert Schildt und auch einsvon Bruce Eckel über C++. Ich kenne allerdings die aktuellen Werke nicht, das muss sich Philip dann schon selbst ansehen.

Was mir bei einem Buch immer ganz wichtig ist, sind die Beispiele - kenne ich die Materie oder sind das eher mir fremde Gebiete - und mit den Beispielen von Stroustrup und K&R konnte ich damals nicht viel anfangen. K&R ist noch auf dem Stand von 1990 und die Kritiken bei Amazon sind nicht so überwältigend, vor allem wegen der miserablen Übersetzung. Immerhin schon ANSI-C, ich kannte nur die alte Ausgabe vor ANSI-C. Das von Jürgen vorgeschlagene Buch kenne ich auch nicht, wird aber bei Amazon durchgängig mit 5 Punkten bewertet, gerade wegen der Didaktik.

Dass die einfacheren Bücher bei dir schon im Müll gelandet sind, beweist ja nur, dass du sie nicht mehr brauchst - aber ein Anfänger hat ganz andere Anforderungen, da geht's schon los mit der Erklärung der IDEs, die immer komplexer werden. Ich habe meine Anfängerbücher auch längst entsorgt, aber das heißt nicht, dass sie überflüssig wären.

Danke Euch erstmal für die Antworten !

Aber leider hab ich mich in meiner Frage nicht richtig ausgedrückt. Ich meinte keine Bücher mit denen ich mich weiterbilden will, sondern einen Kurs den ich gern belegen würde. Gäbe es Arduino Kurse, würde ich den sofort belegen und mitmachen, aber leider hab ich sowas noch nicht gefunden. Deswegen bin ich zu der Überlegung gekommen in einer ähnliche (Arduino) Programmiersprache einen Kurs an einer Schule, oder wo auch immer, zu machen. Wie Mario schon geschrieben hat, ist C oder C++ dann wohl das richtige für mich. Wie gesagt, erstmal reicht mir ein Grundkurs um die Basics zu verstehen ;)

In Berlin gibt es regelmäßig Treffen der "bausteln" Gruppe, soweit ich weiss. Wie das in anderen Städten aussieht weiss ich nicht. Allerdings finde ich Programmierkurse in größeren Gruppen nicht sehr effektiv. Jeder entwickelt ein anderes Verständnis für den Stoff und hat andere Fragen, somit ist es für den Kursleiter sehr schwer auf die individuellen Fragen einzugehen.

Ich würde Dir empfehlen einen Einsteigerkurs im Netz zu suchen und den auf Deinem PC mal durchzuarbeiten. Und zwar erstmal ohne Arduino. Für Windows kannst Du mit http://www.bloodshed.net/dev/devcpp.html eine freie, einfache Entwicklungsumgebung runterladen. Für Linux und Mac OS gibts von Hause aus den gcc-Compiler. Da Du ja später wieder zum Arduino zurückkommen willst, brauchst Du Dich auch nicht mit der Entwicklung von GUIs oder Graifk beschäftigen. Es reicht einfach kleine Programme zu schreiben, die Ein- und Ausgaben auf der Konsole (Eingabeaufforderung, bzw. Shell) machen. Wichtig sind vor allem die Grundkonzepte wie Schleifen, Verzweigungen, Variablen und deren Typen. Und dann natürlich die Sache mit dem Speicher und den Pointern (Zeiger).

VG, Mario.

Danke Mario,

ich werd mir das mal anschauen und vielleicht finde ich ja doch noch sowas wie einen Arduino-Kurs.

Ich finde diese Buch hervorragend: C++ Programmierung lernen: Anfangen, Anwenden, Verstehen vpm Andre Willms ( habe ich aus der Bücherei zum einlesen) Das fängt gut an und geht auch recht tief in die programmierung. nur zu emfehlen

Der Arduino wird in C / C++ programmiert und zwar ausschliesslich.<<
Diese Aussage ist falsch. Der Arduino wird in C++ programmiert und nicht in C.
Auch wenn die beiden Sprachen sich oberflaechlich aehnlich sind, so sind es doch zwei voellig unterschiedliche Sprachen.

Diese Aussage ist falsch. Der Arduino wird in C++ programmiert und nicht in C. Auch wenn die beiden Sprachen sich oberflaechlich aehnlich sind, so sind es doch zwei voellig unterschiedliche Sprachen.

Also C und C++ sind keine unterschiedlichen Sprachen. C++ ist eine Erweiterung von C um objektorientierte Programmierung, wobei C als vollständige Teilmenge in C++ enthalten ist. Somit wird der Arduino sehr wohl in C programmiert. Sämtliche Funktionen die Du verwendest und die nicht an einer Klasse respektive Objekt hängen sind C. Der größte Teil der in der IDE verwendeten Funktionen sind sogar C-Funktionen.

Also C und C++ sind keine unterschiedlichen Sprachen. C++ ist eine Erweiterung von C um objektorientierte Programmierung, wobei C als vollständige Teilmenge in C++ enthalten ist. Somit wird der Arduino sehr wohl in C programmiert. Sämtliche Funktionen die Du verwendest und die nicht an einer Klasse respektive Objekt hängen sind C. Der größte Teil der in der IDE verwendeten Funktionen sind sogar C-Funktionen.

Korrekt! Dem ist (fast) nix mehr hinzuzufügen.

Und die Tatsache, dass beispielsweise der Blink-Sketch (blink.pde) als C++ File mit der Erweiterung cpp als blink.cpp mit avr-g++ statt avr-gcc kompiliert wird, macht meiner Meinung nach noch kein C++ daraus. Im übrigen kann man den Blink-Sketch beipielsweise mit AVR Studio 4 / 5 problemlos als C-File compilieren.