Hallo, da die Zukunft der AVRs ja eher unsicher ist und STM32 doch eine handvoll Vorteile bietet, würde ich gerne umsteigen. Der Nachteil: Ich programmiere bisher in Bascom, und das klappt ganz gut. Allerdings supportet Bascom ja nur AVR. Deshalb werde ich wohl oder übel umsteigen müssen. Mir ist die C-Syntax zuwider, haufenweise Klammern, Semikola, usw.! Deshalb suche ich ein gutes, einsteigerfreundliches Tutorial. Das hauseigene finde ich zu theoretisch. Wer kennt ein gutes?
Umsteiger schrieb: > Mir ist die C-Syntax zuwider,.. Mir auch! Aber trotzdem, das ist die falsche Einstellung! Tipp: Begrüße deine Probleme wie alte Freunde, denn sie sind und bleiben dir treu.
Es gibt da noch Mikrobasic ich glaube das ist Basic für Stm32 & viele andere. Aber ob das was taugt weiß ich nicht.
ich hab mir vor paar Tagen aus Spaß mal eine App (Android) runtergeladen. Grad wenn du schon programmieren kannst und hauptsächlich Syntax lernen willst, halte ich das gar nicht für schlecht. Gibt es für quasi jede Sprache und heisst "Learn C" usw.
Nachtrag: heißen wahrscheinlich mehrere so. Hatte die App von "SoloLearn"
C ist längst nicht so grausig wie viele meinen. BASIC übrigens auch nicht :-) Es ist nur sehr wichtig, sich gleich zu Beginn einen guten Stil anzueignen, um übersichtlichen Code und wartbare Programme zu schreiben. Ich für meinen Teil bin der Meinung, dass C und C++ noch immer die wichtigsten Programmiersprachen sind, auch wenn wegen der ganzen Smartphones Java z.Zt. die Vorherrschaft hat. Programmiersprachen wie Java und C# beschützen den Programmierer vor seiner eigenen Blödheit, in C/C++ muss man halt wissen, was man tut. Vor allem in der Mikrocontrollerwelt, wo es häufig drauf ankommt, das letzte bischen aus der MCU rauszuholen. Mit IoT wird da noch einiges kommen.
Kauf dir toten Baum: https://www.amazon.de/Programming-Language-Prentice-Hall-Software/dp/0131103628
Umsteiger schrieb: > Mir ist die C-Syntax zuwider, haufenweise Klammern, Semikola, usw.! Nur mal so am Rande vermerkt -- wenn man sich mit C num überhaupt nicht anfreunden mag, dann gibt es heute ja durchaus sehr gute Alternativen. Jedenfalls wenn man kein absoluter Depp ist und etwas Zeit, Lernwillen und Eigeninitiative mitbringt. Aber das letztere braucht man für C ja eh auch. Nim setzen einige ja schon auf größeren Controllern wie STM32 ein -- auch wenn es noch recht rauh zugehen mag. Aber bei echtem Interesse gibt es auch Hilfe von den Entwicklern. Etwa https://github.com/nim-lang/Nim/issues/4437 und ich hatte schon andere ähnliche Projekte gesehen. Aber natürlich ist C Lernen nicht verkehrt, wahrscheinlich sinnvoller als Latein.
Stefan schrieb: > ch hatte schon andere > ähnliche Projekte gesehen. http://goran.krampe.se/2016/02/25/nim-meets-arduino/
Umsteiger schrieb: > Mir ist die C-Syntax zuwider, haufenweise Klammern, Semikola, usw.! Ja, C wurde speziell für Schreibfaule entwickelt, die keinen 10-Finger Blindschreibekurs absolviert haben. Wichtige Syntaxelemente werden deshalb mit möglichst wenig Zeichen kodiert. Sie lassen sich daher auch schnell lernen und dann mag man diese kompakte Schreibweise. C bietet auch eine große Freiheit, Ausdrücke beliebig lang zu kombinieren, da der Zeilenvorschub kein Syntaxelement ist.
Peter D. schrieb: > Ja, C wurde speziell für Schreibfaule entwickelt, die keinen 10-Finger > Blindschreibekurs absolviert haben. Spaetestens im Alter wenn die Finger nicht mehr so beweglich sind ist das ein grosser Vorteil. :=)
Peter D. schrieb: > C bietet auch eine große Freiheit, Ausdrücke beliebig lang zu > kombinieren, da der Zeilenvorschub kein Syntaxelement ist. Der Präprozessor scheint das etwas anders zu sehen..... ;-) ;-) Und überhaupt, die Sprache(Präprozessor), in der Sprache(C) Mit C++ ist das etwas besser geworden. Sicherlich ist C in den Jahrzehnten besser geworden! Heutzutage gibts wenigstens Meldungen, wenn man 2 Buchstaben addiert, die Wurzel draus zieht und das Ergebnis dann als Pointer nutzt. OK, unterdrücken (weg casten) kann man sie immer noch. Früher konnte man ein Gürteltier auf der Tastatur wälzen, und der Kompiler hats klaglos verdaut. Das alles macht die Sprache nicht schlecht! Nur unhandlich. Ecken und Kanten. Eben etwas unangenehm. Aus meiner Sicht ist C/C++ das Beste für meine kleinen µC. Forth wäre mir noch lieber, aber das beißt sich etwas mit der Harvard Architektur.
Peter D. schrieb: > Ja, C wurde speziell für Schreibfaule entwickelt, die keinen 10-Finger > Blindschreibekurs absolviert haben. > Wichtige Syntaxelemente werden deshalb mit möglichst wenig Zeichen > kodiert. Nö, das hat man gemacht weil Speicher (besonders RAM) damals noch viel teuerer und viel kleiner war als heute. Der Zielrechner wäre heute ein besserer Taschenrechner, war damals (fast 40 Jahre her...) aber so groß wie ein Schrank und sollte ein Programm in endlicher Zeit übersetzen können. Sonderzeichen als Syntax Elemente machen es für den Compiler einfacher. Ein paar ganz olle Altlasten hat man mit C89 beseitigt, danach gab es haupsächlich Feinschliff.
Peter D. schrieb: > da der Zeilenvorschub kein Syntaxelement ist. und der TAB auch nicht C&P gehts bei Python schon mal öfter schief.
Jim M. schrieb: > Sonderzeichen als Syntax Elemente machen es für den Compiler > einfacher. Nicht nur für den Compiler. Das sinnlose "begin" ... "end" tippen bei Pascal war auch nicht die reine Freude. Wobei der beschissene Griff für eckige und geschweifte Klammern auch Murks ist. Mit der US Tastatur war/ist das alles deutlich ergonomischer.
Im Artikel STM32 gibt es den Link: "MikroE bietet neben Pascal und Basic auch C mit kompletter Oberfläche mit Compiler etc. pp relativ günstig" https://www.mikroe.com/products/#compilers-software Diese Firma bietet neben C auch Basic und Pascal als Umgebung für die STM32. Wie schnell die allerdings diese Firma die vielen neue µC von ST unterstützt weiß ich nicht, da ST ja fast täglich neue µC mit anderen Features heraus bringt.
Peter D. schrieb: > Ja, C wurde speziell für Schreibfaule entwickelt, die keinen 10-Finger > Blindschreibekurs absolviert haben. > Wichtige Syntaxelemente werden deshalb mit möglichst wenig Zeichen > kodiert. Das ist ein Missverständnis. Bei 10 Zeilen am Tag und guten IDEs kommt es nicht auf die Schreibleistung an. Die prägnante Schreibweise dient (heute) ausschließlich der Lesbarkeit. Die Mathematik hat sich 1000e von Jahren mit ausführlichen Schreibweisen rumgeärgert, bis irgendwann jemand das Stellensystem einführte. Und selbst da hat es noch 1000 Jahre gedauert (nach 1500), bis dieses auf Nachkommastellen übertragen wurde. Begin und End (als Beispiel) sind einfach wenig effizient. "GetLastMemberOnAlternativeList" kann es hingegen sein.
Der Andere schrieb: > Jim M. schrieb: > Wobei der beschissene Griff für eckige und geschweifte Klammern auch > Murks ist. Ja, besonders { und [, wenn man gezwungen ist, Alt Gr statt Strg + Alt zu benutzen. Bei Vim lege ich schon immer einiges auf Strg + ö, ä, ü.
Der Andere schrieb: > Wobei der beschissene Griff für eckige und geschweifte Klammern auch > Murks ist. Mit der US Tastatur war/ist das alles deutlich ergonomischer. Wie es der Zufall so will, war Ritchie ja US-Amerikaner. Was herauskommt, wenn sich jemand mit europäischer Tastatur an eine Sprache macht, sieht man ja bei Pascal. Arduino F. schrieb: > Früher konnte man ein Gürteltier auf der Tastatur wälzen, und der > Kompiler hats klaglos verdaut. LOL! :-) Nee im Ernst, natürlich kann man in C kryptische Ausdrücke schreiben. Es gibt sogar den Obfuscated-C-Contest für besonders verwirrende Programme. Aber weder muß man dies, noch sollte man dies für Nutzcode tun.
Jim M. schrieb: > Peter D. schrieb: >> Ja, C wurde speziell für Schreibfaule entwickelt, die keinen 10-Finger >> Blindschreibekurs absolviert haben. >> Wichtige Syntaxelemente werden deshalb mit möglichst wenig Zeichen >> kodiert. > > Nö, das hat man gemacht weil Speicher (besonders RAM) damals noch viel > teuerer und viel kleiner war als heute. Die Größe der einzelnen Syntaxelemente haben praktisch keinen Einfluss auf den RAM-Bedarf beim Kompilieren (da die Quellcodedatei nie als Ganzes in den Hauptspeicher geladen werden muss) und schon gar nicht beim Ausführen von Programmen. > Sonderzeichen als Syntax Elemente machen es für den Compiler > einfacher. Für den Compiler sind Sonderzeichen Zeichen wie alle anderen. Für ihn ist ein '%' nicht kryptischer als ein 'A'. Die Sonderzeichen werden ausschließlich verwendet, um dem Programmierer die Eingabe und das Lesen des Quellcodes zu erleichtern, denn dieses Beispiel
1 | x = (a - 1) * (b + 1); |
ist nicht nur schneller getippt, sondern wird auch beim Lesen vom Auge wesentlich leichter in seiner Struktur erfasst als dieses:
1 | assign product of difference of a and 1 and sum of b and 1 to x |
Natürlich muss man dazu die Bedeutung der Zeichen '=', '+', '-', '*' usw. kennen. Da es in C mehr Datentypen gibt als in Basic, ist auch die Anzahl der Operatoren größer. Dazu kommen noch ein paar "Abkürzungs"- Operatoren wie bspw '++', die Basic ebenfalls nicht hat. Das hat man aber sehr schnell gelernt, und ist, wenn überhaupt, höchstens ganz am Anfang etwas ungewohnt. Nop schrieb: > Der Andere schrieb: >> Wobei der beschissene Griff für eckige und geschweifte Klammern auch >> Murks ist. Mit der US Tastatur war/ist das alles deutlich ergonomischer. > > Wie es der Zufall so will, war Ritchie ja US-Amerikaner. Was > herauskommt, wenn sich jemand mit europäischer Tastatur an eine Sprache > macht, sieht man ja bei Pascal. Auch in Pascal werden [] (für Array-Indizes) und {} (für Kommentare) verwendet. Aber zurück zum Thema: Für den frischen Einstieg in C finde ich dieses interaktive C-Tutorial nicht schlecht: https://www.learn-c.org/ Da es aber – wie praktisch alle Tutorials – nicht den kompletten Sprachumfang abdeckt, sollte man sich zusätzliche Literatur wie bspw. den von "Der Andere" empfohlenen toten Baum von Kernighan und Ritchie besorgen. Umsteiger schrieb: > Deshalb suche ich ein gutes, einsteigerfreundliches Tutorial. Das > hauseigene finde ich zu theoretisch. Welches meinst du?
Nop schrieb: > Was > herauskommt, wenn sich jemand mit europäischer Tastatur an eine Sprache > macht, sieht man ja bei Pascal. gab es damals schon normierte deutsche Tastaturen? Meine erste Tastatur konnte man im Dos mit Ctrl-Alt-F1 auf amerikanisch und mit F2 wieder auf deutsch umschalten. Der Zeichensatz war in einer anderen Farbe auch auf die Tasten gedruckt. Ich habe das zum Programmieren sehr lange benutzt, nur beim Y und Z musste man dann aufpassen.
Yalu X. schrieb: > (da die Quellcodedatei nie als > Ganzes in den Hauptspeicher geladen werden muss) Früher hing das schon vom benutzten Editor ab. Beim Commodore CBM-3008 von meinem Kumpel war das z.B. schon ein Problem. Da wurde mit jedem Leerzeichen, Zeilenumbruch und den Zeilennummern gegeizt, daß der Quellcode (Basic) in den Speicher passte.
> x = (a - 1) * (b + 1); > assign product of difference of a and 1 and sum of b and 1 to x a 1 - b 1 + * x !
Yalu X. schrieb: > x = (a - 1) * (b + 1); > > ist nicht nur schneller getippt, sondern wird auch beim Lesen vom Auge > wesentlich leichter in seiner Struktur erfasst als dieses: > > assign product of difference of a and 1 and sum of b and 1 to x Offtopic: Und Java macht es wieder rückgängig In C++:
1 | Matrix A,B,C,D,E; |
2 | E=A*B+C*D; |
In Java:
1 | E=(A.multiply(B)).add(C.multiply(D)); |
oder so ähnlich. :-)
Der Andere schrieb: > Da wurde mit jedem Leerzeichen, Zeilenumbruch und den Zeilennummern > gegeizt, daß der Quellcode (Basic) in den Speicher passte. irgendwann half das nicht mehr und man musste einige Routinen in ASM einbauen (lassen). Glücklicherweise hatten wir dafür einen Werkstudenten der Informatik.
Vielen Dank für die zahlreichen Meinungen. Ich bin nicht auf eine Programmiersprache fixiert, eindeutiges Haupotziel sind Mikrocontroller, die etwas moderner und zukunftssicherer sind als die AVR-Familie. Ich wusste gar nicht, dass es Basic auch für STMs gibt, das werde ich mir auch mal ansehen, bevor ich mir eine neue Sprache (welche auch immer) aufhalse. Was ich jetzt rausgelesen habe: - C ist nicht mehr das Maß der Dinge, es sollte eher C# oder C++ sein - Pascal und Basic sind auch vertreten - Python scheint eine Alternative zu sein - wie zu erwarten gibt's dafür Apps (das müsste aber bei mir iOS oder Windows Phone sein) - tote Bäume sind als Lernmaterial zu empfehlen Die Grundprinzipien (Timer, Takt, Schleifen, Verzweigungen, Funktionen, Subroutinen (gosub) usw.) sind mir ja einigermaßen aus Bascom bekannt. Wie die Struktur aussehen muss, weiß ich also ungefähr. Hauptsächlich geht's darum, diese Strukturen eben nicht mehr mit Bascom, sondern mit einer zukunftstauglichen Sprache in Controller zu bringen, damit ich bei Bedarf (=AVR tot) umsteigen kann, ohne dann erst einen Monat C oder was auch immer lernen zu müssen.
Umsteiger schrieb: > es sollte eher C# Das gibts nicht auf µC. (soweit ich weiß) Umsteiger schrieb: > - C ist nicht mehr das Maß der Dinge, Auf µC? Doch doch.... Mein Tipp: Lerne C und auch gleich C++. Dann bist du für die ganze µC Welt offen. ... würde ich mal so sagen ...
Arduino F. schrieb: > Mein Tipp: > Lerne C und auch gleich C++. > Dann bist du für die ganze µC Welt offen. > ... würde ich mal so sagen ... Auch wenn er Arduino im Namen hat ;-), muss ich ihm recht geben.
Arduino F. schrieb: > Umsteiger schrieb: >> es sollte eher C# > Das gibts nicht auf µC. Doch: http://netmf-tutorial.de/net-micro-framework-c-auf-einem-microcontroller/ Ist aber in diesem Betreich doch etwas exotisch, ich würde es nicht empfehlen (obwohl ich C# an sich ganz gut finde). > Umsteiger schrieb: >> - C ist nicht mehr das Maß der Dinge, > Auf µC? > Doch doch.... Ja, ganz klar. > Lerne C und auch gleich C++. > Dann bist du für die ganze µC Welt offen. > ... würde ich mal so sagen ... Um C++ sinnvoll auf einem Mikrocontroller einsetzen zu können, muss man es schon recht gut beherrschen, würde ich mal sagen. Umsteiger schrieb: > ohne dann erst einen Monat C oder was auch immer lernen zu müssen Zumindest C++ lernt man vermutlich nicht (gut) in einem Monat, wenn man nicht nur die Syntax und Grundlagen kennen will, sondern auch Dinge wie Idiome, Implementierung der typischen Patterns, komplexere Template-Programmierung etc.
Arduino F. schrieb: > Mein Tipp: > Lerne C und auch gleich C++. > Dann bist du für die ganze µC Welt offen. > ... würde ich mal so sagen ... von Basic auf C sehe ich weniger das Problem, cpp ist für mich immer noch ein Rätsel. Ich progge lieber alles in C nutze aber gerne LIBs (und auch da kann man noch Optimierungen in C einbringen)
Joachim B. schrieb: > cpp ist für mich immer > noch ein Rätsel. Ich komme halt aus der OOP Ecke... ;-) Heimvorteil ;-) Delphi, PHP, ein bisschen Java, usw.. Da ist das µC OOP eher wie Fahrrad fahren.
OOP habe ich nie verstanden und mehrmals versucht. Mag ich einfach nicht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.