Guten Abend Community, habe jetzt länger mit der Arduino IDE gearbeitet und würde nun auf besseres Werkzeug umsatteln. Kurz und knapp gefragt. Welche Sprache hat eine grosse Community und ist zukunftssicher? Bei der Arduino Community gab es sehr viel Hilfe und verständliche Tutorials.
Arduino nutzt C++. Bleib doch einfach dabei und verzichte auf die Arduino Library.
jan.F. schrieb: > Welche Sprache hat eine grosse Community und ist zukunftssicher? Hast du schon mal an C gedacht. Echte Programmierer verwenden das seit 45 Jahren und werden es auch weiterhin tun.
Arduino ist auch nur nur eine runde Umgebung aus einfachst gehaltener IDE, einer Menge Bibliotheken zu aller möglichen Peripherie und einer halbwegs vereinheitlichten Hardwareplatform. Darunter steckt als Sprache C und das ist nun mal sehr weit verbreitet, also eine sichere Wette wenn Du "mehr" willst. Als "bessere" IDE wenn Du von Arduino kommst kannst Du Atmel Studio nehmen und mit WinAVR dazu den C-Compiler einbinden. Dann kannst Du damit die gleiche Hardware programmieren und musst nicht neu kaufen, oder aber Du machst eigene Hardware auf AVR-Basis. Das C darunter ist das gleiche, denn Arduino benutzt am Ende den gleichen C-Compiler. (Wenn auch vielleicht nicht die selbe Version(-snummer))
my2ct schrieb: > Hast du schon mal an C gedacht. Echte Programmierer verwenden das seit > 45 Jahren und werden es auch weiterhin tun. Und C++-Programmierer sind gar keine echten Programmierer?
jan.F. schrieb: > habe jetzt länger mit der Arduino IDE gearbeitet und würde nun auf > besseres Werkzeug umsatteln. Dann verwende Visual Studio zum Arbeiten mit den Arduinos http://www.visualmicro.com/
>Und C++-Programmierer sind gar keine echten Programmierer?
Wahrscheinlich sind echte Hardware-Programmierer gemeint. Bei C++ ist
das ja immer so aufgebläht.
Mit der Arduino IDE kann ich teils schon gut umgehen. Ich dachte es wäre Zeit für einen Schritt weiter. Der Gedanke ist folgender, wenn ich eine neue Sprache lernen will, dann soll diese dann auch eine sein die eine breite Community hat und Zukunftssicher ist. Aufgrund fehlenden Wissens kann ich natürlich nicht abschätzen ob jetzt C oder C++ es sein soll. Da seid ihr schon gefragt. Ihr seid ja ein Teil dieser Community. Hauptsächlich will ich mich dem Arduino Bashing entziehen. Ansonsten ist es bis jetzt ausreichend für mich. Als Werkzeug benutze ich das Programm Programino. Dieses sieht schon seriöser aus, und hat auch einige Tools dabei die das Programmieren erleichtern.
Wie wärs mit Atmel Studio und nackt auf einem Atmega programmieren in C ohne Bootloader und C++ - Bibliotheken ? So lernst du auch den Prozessor kennen und arbeitest mit den Registern, die sehr gut in den Datenblatt dokumentiert sind.
Ich werde mir erstmal Atmel Studio installieren und auf Youtube einige Videos ansehen. Vorrang hat erstmal den Umgang mit dem Werkzeug zu erlernen bevor es ans programmieren geht.
my2ct schrieb: > jan.F. schrieb: >> Welche Sprache hat eine grosse Community und ist zukunftssicher? > Hast du schon mal an C gedacht. Echte Programmierer verwenden das seit > 45 Jahren und werden es auch weiterhin tun. Was sind denn "Echte Programmierer"? Gibt es auch unechte?
jan.F. schrieb: > Hauptsächlich will ich mich dem Arduino Bashing entziehen. Falscher Ansatz! Dem kann/darf/sollte man sich nicht entziehen, dem muss man sich stellen. (gilt zumindest für mich) Tute das was DU für sinnvoll erachtest. Und wenn dann C++ an der Seite raus fällt, dann ist auch gut. Baster schrieb: > Arduino ist auch nur nur eine runde Umgebung aus einfachst gehaltener > IDE, einer Menge Bibliotheken zu aller möglichen Peripherie und einer > halbwegs vereinheitlichten Hardwareplatform. > > Darunter steckt als Sprache C .. Eben nicht! Im Augenblick ist C++11 der Standard. Aber es geht auch C und Assembler. Nicht jedem liegt die OOP, aber das macht sie weder gut, noch schlecht. Stanislaw Jerzy Lec schrieb: > Auch das Gute hat zwei Seiten. > Eine gute und eine böse.
Retro N. schrieb: > Was sind denn "Echte Programmierer"? https://www.bernd-leitenberger.de/echte-programmierer.shtml jan.F. schrieb: > und auf Youtube einige > Videos ansehen. Ich glaube nicht, dass das der "wahre" Pfad ist.
Arduino F. schrieb: > Retro N. schrieb: >> Was sind denn "Echte Programmierer"? > > https://www.bernd-leitenberger.de/echte-programmierer.shtml LOL You made my day :-))))
jan.F. schrieb: > Ich werde mir erstmal Atmel Studio installieren und auf Youtube > einige Das Atmel Studio basiert auf der Visual Studio IDE und ist schön, aber aufgeblasen, erfordert einen modernen Quadcore Rechner mit mind. 8 Gbyte RAM, wenn man einigermassen flüssig arbeiten will. jan.F. schrieb: > Kurz und knapp gefragt. Welche Sprache hat eine grosse Community und ist > zukunftssicher? Bei der Arduino Community gab es sehr viel Hilfe und > verständliche Tutorials. Eine Übersicht findest Du hier: https://www.mikrocontroller.net/articles/AVR C hat IMHO die größere Community, Assembler kommt gleich danach. (Freue mich schon auf den Flame War hier im Forum). Das alte AVRStudio 4.x immer sehr zu empfehlen weil klein, schnell, schlank support für debugging mit JTAG + DebugWire, ich programmiere damit die billigen China nano Boards. Brauchst aber auch einen passenden Programmer. Neben den Atmel China-Billig-ISP_JTAG-Clones ist IMHO immer noch der AVRDragon die erste Wahl: Up to Date Programmer mit (fast) allen Modi, und debugger. http://www.atmel.com/tools/avrdragon.aspx?tab=documents AtmelStudio ist für ganz neue Microchip MCU's, mit Plug+Play inkl. debugging speziell auch für die Xplained Boards wie z.B. http://www.atmel.com/tools/mega328p-xmini.aspx optimal, aber wie gesagt sehr aufgeblasen. Wenn Du lieber BASIC Programmieren willst, würde ich einen Blick auf Luna AVR https://avr.myluna.de/ werfen, die haben inzwischen ziemlich viele Freunde und jede Menge libs. Du kannst natürlich auch Forth oder Pascal nehmen, aber da dürfte die Unterstützung nicht nur hier im Forum ziemlich gering ausfallen
:
Bearbeitet durch User
Hey jan.F. klar, alle haben Ihre eigene Meinung... aber, wenn du erstmal weiterhin bei der ATmega Famile bleiben willst: 1. Programmiere in C 2. sollten zeitkritische Dinge dabei sein, greife in C auf "inline assembler" 3. Atmel Studio ist für ATmega erstmal die einfachste Lösung Ich habe auch mit C und nem Pollin AVR Board angefangen. Wenn man nichts verstehen möchte und nur will das alles tut, sind die LIB's usw. vom Arduino echt top. (Doch du willst wohl mehr) Datenblatt deines µC lesen (bzgl. Peripherie), nach Source Codes suchen und versuchen zu verstehen...so lernt man am meisten, ah und das "rumspielen" nicht vergessen! Glaub mir, so wild ist es nicht :) Ich hab vorhin innerhalb von 5 min. ein fremden Code zu Testzwecken implementiert um RGB LEDs anzusteuer. Einmal den Sinn verstanden ist alles das gleiche. Viel Erfolg! Um es korrekt zu halten: (hier der Verweis) TitelBeitrag "Anzahl PWM Ausgänge zu Anzahl RGB LEDs"
Retro N. schrieb: > mind. 8 Gbyte > RAM Wer hat das als Entwickler nicht? ...oder (Gamer) Win braucht doch schon locker 4 :-D Retro N. schrieb: > C hat IMHO die größere Community, Assembler kommt gleich danach. (Freue > mich schon auf den Flame War hier im Forum). OH JA, da freu ich mich auch schon drauf, wobei beides seine Berechtigung hat... aber doch bitte kein C++. Retro N. schrieb: > AtmelStudio ist für ganz neue Microchip MCU's, mit Plug+Play inkl. > debugging speziell auch für die Xplained Boards wie z.B. > http://www.atmel.com/tools/mega328p-xmini.aspx optimal, aber wie gesagt > sehr aufgeblasen. Er muss das ASF ja nicht nutzen (falls ich dich richtig verstehe). Für die ATmega Serie gibts da eh kaum was.
Hi, jan.F. schrieb: > Hauptsächlich will ich mich dem Arduino Bashing entziehen. Ansonsten ist > es bis jetzt ausreichend für mich. Sofern du nicht beruflich etwas in Richtung Embedded Devices machen willst wäre mir soetwas wie "Arduino Bashing" egal. Entweder es reicht für deine Ansprüche oder es reicht nicht. Zudem geht es beim sogenannten "Arduino Bashing" ja noch nicht einmal um die Arduino Software selbst, sondern darum das ein nicht gerade kleiner Teil der Arduino Nutzer sich da nett aussehnde Projekte nach Copy & Past Manier zusammenklickt, dabei nicht mal im Ansatz versteht was sie wirklich machen, sich aber gleichzeitig für die ultimativen Superprogrammierer halten. Personen die sich richtig einschätzen und wissen wo sie vom Wissen stehen sind da meist aussen vor. Sei es der erfahrene Programmierer der aus Bequemlichkeit für ein Projekt (oder einen Test) auf Arduino zurückgreift weil es da schon etwas in der Richtung fast fertig gibt, sei es der Einsteiger der Arduino nutzt weil er es selbstständig (noch) nicht kann, aber sich dessen auch bewusst ist. jan.F. schrieb: > Der Gedanke ist folgender, wenn ich eine neue Sprache lernen will, dann > soll diese dann auch eine sein die eine breite Community hat und > Zukunftssicher ist. Ist verständlich! Wobei man immer unterscheiden muss zwischen dem eigentlichen Syntax der Sprache und dem Programmierparadigma das hinter der Sprache steht. Der Syntax, das sind die Schlüsselwörter. DAvon haben die meisten Sprachen nur wenige. Dazu kommen dann noch die wichtigsten Bibliotheken usw. So einen Syntax hat man in wenigen Stunden bis Tagen komplett drinnen. Das ist kein riesiger Aufwand. Was viel Erfahrung und Übung braucht bis man es wirklich beherrscht das sind die Programmierparadigmen die hinter den Sprachen stehen. (Z.B. ob es eine objektorientierte oder prozedurale Sprache ist) Wenn man eine Sprache samt dahinterstehendem Paradigma gut beherrscht ist es nur ein sehr kleines Problem bis man eine weitere Sprache aus demselben Bereich beherrscht. Selbst wenn sich der Syntax stark unterscheidet. Andersherum ist es für die meisten ein enormer Kraftakt wenn die Sprache die man lernen will ein anderes Paradigma verfolgt als man bisher gewohnt ist. Da kann die Syntax noch so ähnlich sein! Bestes Beispiel ist der Wechsel von C nach C++ und umgekehrt. Der Syntax von C++ baut auf dem Syntax von C auf. Ja, der komplette Syntax von C ist in C++ enthalten. (das entweder der größte Vorteil oder der größte Nachteil von C++. Je nach Sichtweise) Die sind sich auf dem ersten Blick daher sehr ähnlich! Allerdings ist C eine prozedurale Sprache, C++ ist eine objektorientierte Sprache (die man als Besonderheit von C++ als prozedurale Sprache missbrauchen kann) Wenn jetzt Jemand der bisher nur objektorientiert Programmiert hat plötzlich mit "normalen" C arbeiten soll und dabei effektive Programme zu Stande bringen muss, dann hat er, obwohl er den Syntax praktisch schon seit Jahren kennt, damit viel mehr Probleme als wenn er auf Java umsteigen muss. Umgekehrt gilt das natürlich genauso. Ein C Programmierer der auf C++ umsteigen soll wird damit viel mehr Probleme haben als wenn er z.B. auf Pascal wechseln will. In der Realität endet das gerade bei C++ dann damit das zwar die C++ Befehle genutzt werden, aber im Prinzip weiter prozedural programmiert wird. (gilt beides natürlich nur für den jeweiligen Erstkontakt mit dem jeweiligen Paradigma) War bei mir damals nicht anders. Ich habe das mit dem C-Style C++ auch erst in den Griff bekommen und die OOP verstanden als ich mich erst auf Java konzentriert habe und erst als das ordentlich lief wieder C++ in Angriff genommen habe. > > Aufgrund fehlenden Wissens kann ich natürlich nicht abschätzen ob jetzt > C oder C++ es sein soll. Da seid ihr schon gefragt. Ihr seid ja ein Teil > dieser Community. Das kommt darauf an WO du hin möchtest... Nur Mikrocontroller oder auch PC? Bei Mikrocontrollern: "Kleine" 8 und 16bitter "bare metal" oder aber größere Vertreter der 32Bit Familie auf denen ein OS läuft? Auf dem PC ist im produktiven Einsatz ausser für sehr hardwarenahe Programmierung (treiber & Co. untere Schichten des Betriebssystems usw) durchweg die Objektorientierte Programmierung das Mittel der Wahl. Mittlerweile viel Java, immer häufiger C# und natürlich immer noch C++. Auch bei den "dicken" Mikrocontrollern mit OS ist C++ sehr stark vertreten. (Wobei man alles grundsätzlich auch in C oder gar Basic ebenfalls hinbekommen könnte. Nur nicht so "schön") Aber in dem Bereich den die meisten tatsächlich mit "Embedded Systems" verbinden, also der bereich von den kleinen 8Bittern bis zum unteren Mittelfeld der 32Bitter, da ist C nach wie vor das Mittel der Wahl! Es gibt für praktisch jeden aktuellen Controller aus diesem Bereich einen praxistauglichen C Compiler. Die Beispiele/Application Notes und Libs der Controllerhersteller sind in C geschrieben. Sicher >90% der Projekte, egal ob kommerziell oder Freizeit, auf dieser Klasse von Controllern wird in C realisiert. Es gibt auch für diesen Bereich C++ Compiler, teilweise selbst für kleine 8Bitter. Aber zum einen lange nicht für alle, zum anderen ist das alleine aus Kapzitätsgründen gerade kein "reines C++ nach Lehrbuch" sondern in der Realität ein Mischmasch. Je kleiner der Controller wird um so mehr verschiebt sich das in Richtung C mit C++ Befehlen... Und der Grad der Durchmischung und welche C++ Untermenge nun tatsächlich nutzbar ist variert von Compiler zu Compiler. Selbst da wo es mehrere Compiler für dasselbe Zielsystem gibt. Das finde ich fürs erlernen absolut suboptimal! Daher: Für den Einsatz auf dem Mikrocontroller fange mit C an! Nicht irgendein Mischmasch sondern mit reinem C! Dafür kannst du deine bisherige Arduino Hardware problemlos weiterverwenden! Das macht es vielleicht auch leichter und sicher kommt so auch der eine oder andere AHA Effekt viel schneller. Die allerersten Gehversuche in C (oder jeden anderen Programmiersprache) solltest du aber nicht auf dem Controller machen sondern auf dem PC. Einfach weil du da viel leichter verfolgen kannst was dein Programm macht wenn es nicht das macht was es soll. Erst nach ein paar Nachmittagen wenn du die Grundlagen sicher beherrscht würde ich auf den Controller wechseln. Wenn du dann in C einigermaßen sicher bist und noch weiter lernen willst, dann ist es sicher nicht verkehrt sich mal die OOP bei der PC Programmierung anzuschauen. Alleine schon weil mit fortschreitender Erfahrung auch immer öfter der Bedarf kommt seine Anwendung mit dem PC oder neuerdings dem Handy koppeln zu wollen. Und wenn man schon mal komplett eigene Projekte macht dann gibt es dafür kein Tool das andere für einen geschrieben haben. Allerdings gibt es Libs und Frameworks die es auch einem mittelmäßigen Programmierer erlauben in übersichtlicher Zeitspanne was auf die Beine zu stellen. Die Libs und Frameworks für den PC und vor allem für das Handy sind aber üblicherweise in einer Objektorientierten Sprache geschrieben. (Bei Handy abseits von Apple nahezu immer Java) Wie geschrieben würde ich dann aber nicht mit C++ anfangen sondern zumindest bis zu dem Zeitpunkt wo man den Hintergrund der OOP wirklich verstanden hat zu Java oder C# greifen wo man gar nicht erst in der Lage ist ein Paradigmenwischwasch zu schreiben. Hat man es verstanden kann man natürlich auch wieder zu c++ greifen. Dann spricht auch nichts dagegen auf Mikrocontrollern wo es geht und sinnvoll ist auch mit C++ zu arbeiten. Ja, wenn man es verstanden hat spricht nicht einmal etwas dagegen DA WO ES SINNVOLL IST bewusst mal die Grenzen verschwimmen zu lassen und einfach so zu programmieren wie es am zweckmäßigsten ist und es der Compiler hergibt. Und man kann sich problemlos auf jeden Compiler und jedes Zielsystem einstellen, egal welche Untermenge von C/C++ jetzt tatsächlich zur Verfügung steht. Gruß Carsten
:
Bearbeitet durch User
jan.F. schrieb: > Ich dachte es wäre Zeit für einen Schritt weiter. Man nimmt das Werkzeug, mit dem man am besten klar kommt und das Problem lösen kann. Wenn man ein passendes Werkzeug hat, benötigt man kein anderes. Kann man zwar machen, aber es besteht kein Zwang. Dafür braucht man sich auch nicht zu schämen, weil jemand anders sagt, dass er ein anderes Werkzeug benutzt. ... er mag damit besser klar kommen. Vielleicht. Gruß Jobst
@Carsten Sch. Also wenn du beim 'di-di-da-didit' genauso gut bist wie hier beim Schreiben, dann Respekt ;-) Ich fasse mal zusammen: Du brauchst fast 30 Zeilen Text um zu dieser Aussage zu kommen: Carsten S. schrieb: > Für den Einsatz auf dem Mikrocontroller fange mit C an! > Nicht irgendein Mischmasch sondern mit reinem C! Dann kommen wieder ca. 25 Zeilen Text mit folgender Kernaussage: Carsten S. schrieb: > Hat man es verstanden kann man natürlich auch wieder zu C++ greifen. > Dann spricht auch nichts dagegen auf Mikrocontrollern wo es geht und > sinnvoll ist auch mit C++ zu arbeiten. Deine Einlassung zum 'Arduino Bashing' hat 15 Zeilen Text. In vier Zeilen nun die Information die ich aus deinem Beitrag für mich herausgefiltert habe: * Also ein Arduino kann man durchaus mit anderen IDE Werkzeugen benutzen. * Man braucht sich dafür nicht zu schämen, betrachte es als EVAL-Board. * Schreib deine Programme ausschließlich in 'C' * Gelüstet dich nach C++ kauf dir eine 'Raspberry'. 73 PS1: Ich frage mich, woher bei euch Funkern dieser ausschweifende Mitteilungsdrang her kommt? PS2: Bernd möge mir verzeihen ob diese Frage.
il Conte schrieb: > @Carsten Sch. > > Also wenn du beim 'di-di-da-didit' genauso gut bist wie hier beim > Schreiben, dann Respekt ;-) > 73 > > PS1: > Ich frage mich, woher bei euch Funkern dieser ausschweifende > Mitteilungsdrang her kommt? Von Einem auf Alle zu schließen ist jetzt ein bisschen zu allgemein. Man kann sicher darüber diskutieren, ob ein Post dieser Länge hier im Forum sinnvoll ist oder nicht, und am Ende den Einen oder Anderen evtl. zu sehr strapaziert. Ich fand die Ausführungen interessant und mich hat dieser Beitrag schließlich mit (diesen 15 Zeilen) >Deine Einlassung zum 'Arduino Bashing' hat 15 Zeilen Text. nun tatsächlich motiviert, daß ich jetzt nach Jahren reiner C und asm Programmierung auch mal mit den Arduino libs spielen werde, die mir bisher eigentlich aus Prinzip zu unsportlich waren - allerdings nicht mit dieser unsäglichen Arduino-IDE, sondern damit: http://www.visualmicro.com/ P.S. QED: Es geht auch kürzer, ich bin auch Funkamateur, wenn auch derzeit nicht QRV 73
:
Bearbeitet durch User
Wenn Du Dich weiterentwickeln möchtest, dann schau Dir mal andere Prozessoren, z.B. welche mit Netzanbindung an. Das Thema IoT greift ja auch immer mehr um sich und ohne Netzanbindung ist das nur halb so spannend ;-) Ich empfehle den ESP8266 mit Programmierung in LUA. Alternativ findest Du hier im Forum auch vermehrt Einträge über CortexM3/M4/M7, daher gehe ich davon aus, dass diese auch eine gute Zukunft haben. Die Programmiersprache ist meistens nicht das Problem, es sind die Frameworks und Bibliotheken, in die man sich einarbeiten muss.
Kannst dir auch die Compiler von Mikroe ansehen. Mit denen arbeite ich ganz gern. Wenn man die Funktionen der Programme schön von der verwendeten Hardware abgrenzt,kann man damit gleich mehrere Prozessorfamilien bedienen. Unter Abgrenzung verstehe ich: Nicht "Port.4 = 1", sondern "LED2_ON" Aufruf benutzen. Im Sub "LED2_ON" wird dann erst die Hardwarezuweisung erledigt.
Pete K. schrieb: > Die Programmiersprache ist meistens nicht das Problem, es sind die > Frameworks und Bibliotheken, in die man sich einarbeiten muss. Das wäre jetzt auch meinen Antwort gewesen. Gerade wenn man nicht berufsmäßig programmiert, sind die IDE (Debugger nicht vergessen) und gepflegten Bibliotheken (d.h. mit guter Dokumentation und passenden Beispielen) das wichtigste. Für die gängigen Prozessoren wird es dann die Sprachen C/C++ sein. PS: Bin auch gerade dabei ein paar NodeMCU-Projekte umzusetzen.
Guten Morgen Community, ich habe mir alle Ausführungen eurerseits durchgelesen, und vieles erscheint mir schlüssig. Zu meiner Person, es findet alles im Hobby und im Amateurumfeld statt. Beruflich wird solches nicht gefordert sein. Von daher kann ich mich auf wenige Prozessoren konzentrieren. Was ich bisher benutzt habe und auch weiter benutzen werde ist der Atmega328 und ESP8266. Projekte waren teils Hausautomatisierung und Hardware für Spiele(Simulationen). Wie z.B. Aquariumsteuerung, Tachometer für Autorennspiele, diverse Spuleninstrumente ansteuern für Raumfahrtsimulationen. Zuletzt hatte ich bisschen mit UDP Nachrichten und Serialcomistruments gearbeitet. Von der vorhandenen Hardware will ich nicht weg, da sie mir preislich sehr entgegenkommen. Baugrösse ist nicht der ultimative Faktor für mich. Nach dem ganzen lesen gehe ich davon aus, das C für mich das richtige im ersten Moment ist. Und falls ich Visualisierungen brauche sollte, könnte ich mir Java anlächeln. Zuletzt ein dickes Dankeschön an die rege Beteiligung an diesem Thema. Ich bin mir im klaren das solch ein Thema anstrengend wirken kann und schnell in Lagerkämpfe ausartet.
jan.F. schrieb: > Lagerkämpfe Natürlich! Denn über Geschmack lässt sich vortrefflich streiten. Privat hat man freie Auswahl. Im kommerziellen Umfeld hat man sich meist der Firmenphilosophie/Team anzupassen. Kosten für die Entwicklungsumgebung sind da ehe zweit- oder fünftrangig. jan.F. schrieb: > Was ich bisher benutzt habe und auch weiter benutzen werde ist der > Atmega328 und ESP8266. Dann ist Assembler quasi gestorben, da nicht portabel. C/C++ ist die Wahl. Die Arduino Umgebung kann beides. AtmelStudio ist dann die falsche Wahl, denn es kann kein ESP und kein Java. Evtl. Eclipse Denn das kann ESP, AVR, Java usw. Eigentlich alle Prozessoren und Sprachen. Läuft auf allen üblichen Betriebssystemen Eine Eier-Legende-Woll-Milch-Sau.
Ich habe deine Frage so verstanden, dass du statt Arduino mit anderen Mikrocontroller-Entwicklungsboards arbeiten willst. In dem Bereich wären Java und C# aufgrund begrenzter Ressourcen deplaziert. Du wirst deine Hardware nich mit virtuellen Maschinen belasten wollen, nur um eine programmiererfreundlichere Form der OOP betreiben zu können. C ist ohne Frage die wichtigste Programmiersprache im Bereich Mikrocontroller. Das beherschen von Assembler ist in Ausnahmefällen auch wichtig, aber würde ich erstmal hinten anstellen. OOP mit C++. Die Nähe zur Hardware ist hierbei ausschlaggebend. Beim Umstieg von Arduino auf allgemeine Mikrocontroller-Programmierung ist das Lernen der Programmiersprache C aber nicht die große Herausforderung. Die Kenntnis der Eigenheiten der verwendeten Hardware ist da die größere Lernaufgabe. Hast du bei der Arbeit mit dem Arduino schonmal in das Datenblatt des ATMega328 geschaut? Das ist ab jetzt dein bester Freund.
>Was sind denn "Echte Programmierer"? Gibt es auch unechte?
Kein Ahnung, aber auf dem Bild kann man sehen, wie echte Programmierer
aussahen.
chris schrieb: > aber auf dem Bild kann man sehen, wie echte Programmierer > aussahen. Nur aus Neugierde : Wer wahr auf dem Bild derjenige der sich das MS-DOS ausgedacht und programmiert hat ? (das Buberl unten links kanns wahrscheinlich nicht gewesen sein ;-)
Vielleicht sollte man auch mal Micropython in Betracht ziehen, wenn es um Zukunftssicherheit geht: https://micropython.org/ Boards auf denen das läuft, gibt es mittlerweile genug.
Arduino ist doch C++, man muss es nur nutzen. Man kann C++ auch missbrauchen und den ganzen Code in ein ellenlanges loop() reinschreiben und jegliche Strukturierungsmöglichen ignorieren. So sehen leider viele Arduino Sketches aus. Wenn man ein Programm ordentlich aufbaut halte ich es nicht für verwerflich den Luxus von Bibliotheken zu nutzen. Die 'Marlin' Firmware in Millionen 3D-Druckern zeigt doch das man mit dieser Platform durchaus brauchbares erstellen kann. Ich würde allerdings eher auf 32-Bitter setzen, da ist viel mehr Luft nach oben. Und das Preisargument zieht auch nicht, siehe Bluepill board für 2 US$. Auch andere Cortex-M0 kosten weniger als 2€ und haben viel mehr Flash, RAM und Peripherie als die steinalten ATMegas. Die schon genannte 3D Drucker Software ist mittlerweile auch am Limit mit den ATMegas und wird jetzt aufwändig in die 32 Bit Welt portiert.
il Conte schrieb: > (das Buberl unten links kanns wahrscheinlich nicht gewesen sein ;-) Dummerweise ist es genau der :-)
Beitrag #5150997 wurde vom Autor gelöscht.
chris schrieb: >>Was sind denn "Echte Programmierer"? Gibt es auch unechte? > > Kein Ahnung, aber auf dem Bild kann man sehen, wie echte Programmierer > aussahen. Microsoft? Bill Gates? Ach Du sch... Das waren doch die, die nur das MS-Basic selbst programmiert haben, der Rest wurde zugekauft und von Tim Paterson entwickelt (MS-DOS). https://de.wikipedia.org/wiki/MS-DOS Dann schon lieber der https://de.wikipedia.org/wiki/Dennis_Ritchie und der https://de.wikipedia.org/wiki/Tim_Berners-Lee
:
Bearbeitet durch User
chris schrieb: > Kein Ahnung, aber auf dem Bild kann man sehen, wie echte Programmierer > aussahen. Bärte! Die Leute müssen wieder Bärte haben, dann wird Alles gut. Um mich herum sehen auch alle aus, als wären sie die Auswechselspieler von ZZ-Top. Damit eine Vorstellung entsteht: https://www.youtube.com/watch?v=Z_4ULKpkLNc Herbert
:
Bearbeitet durch User
Herbert B. schrieb: > chris schrieb: >> Kein Ahnung, aber auf dem Bild kann man sehen, wie echte Programmierer >> aussahen. > > Bärte! Die Leute müssen wieder Bärte haben, dann wird Alles gut. Ich finde die aktuelle Bartmode sieht eher aus wie bei meinem Ur-Grossvater. Schrecklich! https://de.wikipedia.org/wiki/Barthaar >Um mich > herum sehen auch alle aus, als wären sie die Auswechselspieler von > ZZ-Top. Das erinnert mich an die Leningrad Cowboys, die tragen neben ihrer adretten Frisur jetzt auch Bärte, außer den weiblichen Bandmitgliedern (oder doch?) https://blog-001.west.edge.storage-yahoo.jp/res/blog-18-ee/marbini0302/folder/348141/75/26871075/img_0_m?1442409718
:
Bearbeitet durch User
Dirk B. schrieb: > Echte Programmierer: > https://xkcd.com/378/ https://blog.codinghorror.com/content/images/uploads/2007/10/6a0120a85dcdae970b012877702759970c-pi.png
Retro N. schrieb: > Microsoft? Bill Gates? Ach Du sch... > > Das waren doch die, die nur das MS-Basic selbst programmiert haben Naja, es waren die, die fast jedem Heimcomputer der damaligen Zeit Leben eingehaucht haben. Angefangen mit einem Computer, den es noch gar nicht gab, sondern den Paul Allen nur emuliert hatte. Man kann über solche Cracks (wie auch Steve Woszniak) denken, was man will. Sie gehörten zu den genialsten und fleißigsten Programmierern ihrer Zeit.
jan.F. schrieb: > Arduino IDE gearbeitet und würde nun auf > besseres Werkzeug umsatteln. Die IDE unterstützt auch externe Editoren. Sieh dir den Aufbau des "Arduino core" an. Das Framework basiert auf avr-libc. Du kannst C++ und C mischen. Lasse nach und nach die Arduino-Funktionen weg: z.B. das Serial Objekt ersetzen mit etwas eigenem (für C: siehe Tutorial hier). Viel Erfolg.
irgend eines der sehr günstigen STM32 Nucleo boards (ARM Cortex-M0 - M4), die sind auch oft mit Arduino shields kompatibel und werden auch oft von ST einfach verschenkt. Für die ersten schritte die libs und IDE von mbed. Wenn du einigermaßen den überblick hast dann eine gängige kostenloses IDE, z.B. Attolic True Studio, STM Workbench oder gar eine eigene toolchain mit GCC aufsetzen (ist mittlerweile relativ simple). Sobald wie möglich immer mehr C++ Aspekte anschauen und üben. Am besten mindestens den C++ Standard 2011. Alternativ direkt etwas exotischeres wie die Sprache "Rust" :)
Das schöne an C++ ist: - Du kennst es schon - Damit kannst du auch PC und Smartphones programmieren - Es setzt auf C auf, du wirst also alle Anleitungen bezüglich C leicht verstehen können - Wenn du später zusätzlich Java oder C# lernen musst, wird Dir sehr vieles sehr bekannt vorkommen. Die ersten Kapitel der Tutorials kannst du im Galopp hinter Dich bringen.
Stefan U. schrieb: > - Wenn du später zusätzlich Java oder C# lernen musst, wird Dir sehr > vieles sehr bekannt vorkommen. Die ersten Kapitel der Tutorials kannst > du im Galopp hinter Dich bringen. Du meinst so ? https://youtu.be/hLYg_hnidWI?t=494 ;-)
Hallo "Was viel Erfahrung und Übung braucht bis man es wirklich beherrscht das sind die Programmierparadigmen die hinter den Sprachen stehen.(Z.B. ob es eine objektorientierte oder prozedurale Sprache ist). Wenn man eine Sprache samt dahinterstehendem Paradigma gut beherrscht ist es nur ein sehr kleines Problem bis man eine weitere Sprache aus demselben Bereich beherrscht. Selbst wenn sich der Syntax stark unterscheidet." Eine klare Aussage lieber Carsten und doch immer noch ein wenig zu kurz gegriffen. Könntest du genauer erklären wie man ein Programmierparadigma beherrscht? Wenn ich nämlich meine "Probleme" beim programmieren erlernen (C für µC und 8Bit AVR) analysiere scheint genau das der Knackpunk zu sein. Gibt es da etwas mehr Möglichkeiten als "nur" Erfahrung und Übung um "echtes" Programmieren und das jeweilige Programmierparadigma zu verinnerlichen (also nicht "nur" die reine "Grammatik" zu erlernen) so das man es nicht nur vom "Kopf" her versteht sondern auch aus dem "Bauch" heraus? Meine "Probleme" liegen desweiteren nicht in den Verständnis wie C im µC Umfeld funktioniert, und auch nicht wie ein µC (8Bit AVR) auf Hardwareebene funktioniert und z.B. Register behandelt werden - sondern ehr darin wie ich ein Projekt angehe (In einzelne Teilaufgaben zerlegen ist einfacher gesagt als getan) und wie ich auf die manchmal, von Grundsatz und ganz unabhängig von der Programmiersprache her, recht "verworrene" Lösung komme wie ein Problem angegangen wird (als "billiges" Beispiel z.B. ein in Software erstellter Rastschalter) - wenn ich mir eine gute Dokumentation zu z.B. einer Software Rastschalterfunktion anschaue kann ich diese nach mehrmaligen konzentrierten durchlesen und "Simulieren" im Kopf und auf Papier(!) nachvollziehen - aber selbst auf solch eine Lösung zu kommen... (sehr) schwierig - bis unmöglich. Wie erlerne ich so etwas - gibt es mehr Empfehlungen außer Training und Übung? Wie sähe den ein gutes Training aus? Irgendwie ist mir der immer wieder allgemeine gegebene Tipp: "Ausprobieren, Fehler machen und aus den Fehlern lernen" zu wenig und zu Oberflächlich - das "muss" ,-) doch auch gezielter und einfacher gehen?! noch ein Ham
> Wie sähe den ein gutes Training aus? Es gibt jede Menge Bücher mit dem Wort "Patterns" oder "Entwurfsmuster" im Namen, da werden Lösungen für häufige Programmier-Probleme aufgezeigt. Darüber hinaus kommst du aber nicht ums "Learning by Doing" herum. Wenn Du eine Lösung gefunden hast, die Dir elegant vorkommt, dann diskutiere sie mit anderen Entwicklern. Dieser Austausch untereinander ist am Ende der wichtigste Aspekt, besser zu werden. Hier im Forum täglich mit zu lesen ist auch hilfreich. Da werden Probleme diskutiert, die du nicht einmal erahnt hast. Und es werden Lösungen gezeigt, von denen du etwas lernen kannst. > In einzelne Teilaufgaben zerlegen ist einfacher gesagt als getan Und doch ist es die Hauptaufgabe eines jeden Softwarenetwicklers. Eine gewisse Portion Talent gehört sicher auch dazu. Um eine Wald zu roden, muss man viele Bäume umhauen. In diesem Fall besteht das "zerlegen" also, sich auf den einzelnen Baum zu konzentrieren und zu überlegen, wie man den am schnellsten weg haut. Ein unfähiger Entwickler würde sagen "Das kann ich alleine mit meiner Axt nicht schaffen. Der Wald ist viel zu groß." Während der fähige Entwickler längst unterwegs ist, Hilfe oder ein besseres Werkzeug zu beschaffen. Und der dumme aber fleißige hat wenigstens angefangen zu Hacken, obwohl ein Ende nicht in Sicht ist.
Noch ein Ham schrieb: > wenn > ich mir eine gute Dokumentation zu z.B. einer Software > Rastschalterfunktion anschaue kann ich diese nach mehrmaligen > konzentrierten durchlesen und "Simulieren" im Kopf und auf Papier(!) > nachvollziehen - aber selbst auf solch eine Lösung zu kommen... (sehr) > schwierig - bis unmöglich. > Wie erlerne ich so etwas - gibt es mehr Empfehlungen außer Training und > Übung? Das geht am besten wenn man sich dem PROBLEM annähert! Vorne weg mal folgendes: Ich bin ich der Meinung dass es zwei Typen von Menschen gibt was das Lernen anbetrifft. Die eine Hälfte lernt alles auswendig, die verinnerlichen praktisch die Bedienungsanleitung. Die Kurzform ist die Checkliste: wenn LED A rot blinkt dann Taster grün drücken usw. Die 2. Hälfte spielt sich rum und prägt sich die Wege ein die zum Erfolg führen. Das sind die: 'Lerning by doing' oder wie du es ausdrückst 'Ausprobieren, Fehler machen und aus den Fehlern lernen' Diese beiden Typen sind dir bestimmt schon begegnet: Man fragt die ganz simpel: Erklär mal wie das funktioniert. Die Ersteren erklären dir alles wie aus der Pistole geschossen, die brauchen dazu nicht mal ein Anschauungsobjekt. Die Zweite Hälfte schaut dich verdutzt an und erklärt dir, dass sie es nicht können und erzählt dir weiter dass man da nur einmal oder zweimal auf was drückt und dann geht es. Wenn sich aber nun am Gerät was ändert, wenn die LED nicht mehr rot sondern gelb blinkt und dann noch der Taster irgendwo anders platziert ist dann haben die 'Auswendigkönner' richtig Stress. Die 'Ausprobier' Fraktion fangen sofort wieder damit an rum zuspielen bis sie den neuen Weg gefunden haben. Um den Kreis zu schließen, um dir zu erklären wie man zu einer eigenen Lösung kommt ist es von Vorteil wenn man der 2. Fraktion angehört ;-) Bezogen auf deine RastSchalterfunktion könnte das folgender maßen aussehen: Als erstes würde ich an einen freien Port-Pin einen Taster anschließen und eine Entprell-Funktion implementieren. Das Ergebnis davon auf einen weiteren PIN ausgeben, sodass man das am Oszi (oder LA) gut darstellen kann. Dann würde ich das 1. mal 'rumspielen' bis es dann gut funktioniert. Als nächste käme dann eine Flankenerkennung (gedrückt / nicht gedrückt) dazu die genau so getestet wird. Weiter als nächstes käme dann ein flankengetriggertes Flipflop (softwaremäßig) dran, dessen Ausgang wiederum auf den PIN gegeben wird um das Resultat zu überprüfen. Damit das Auge auch was davon hat, kannst du eine LED dranhängen und dann voller Stolz deinem Partner vorführen ;-) Wie du vieleicht erahnen kannst - man lernt sozusagen spielerisch. Wenn es hinhaut kann das sehr motivierend sein. Und sollte das gleiche Problem ein 1/4 Jahr später erneut auf dich zukommen machst du sowas dann mit links.
Achim S. schrieb: > Retro N. schrieb: >> Microsoft? Bill Gates? Ach Du sch... >> >> Das waren doch die, die nur das MS-Basic selbst programmiert haben > > Naja, es waren die, die fast jedem Heimcomputer der damaligen Zeit Leben > eingehaucht haben. Angefangen mit einem Computer, den es noch gar nicht > gab, sondern den Paul Allen nur emuliert hatte. > > Man kann über solche Cracks (wie auch Steve Woszniak) denken, was man > will. Sie gehörten zu den genialsten und fleißigsten Programmierern > ihrer Zeit. Das waren keine Cracks, sondern nur 2 clevere junge Kerle, die es verstanden haben mit wenig Aufwand den größtmöglichen Nutzen zu erzielen. https://en.wikipedia.org/wiki/Altair_BASIC Woz ist da schon ein ganz anderes Kaliber, als die damaligen 3 Mitglieder des MS-Gesangsvereins. Neben genial puristischen Hardware Designs wo jedes Gatter einzeln optimiert war (AppleII Mainboard Refresh Logic+Grafik, DiskII Controller), hatte Steve Wozniak schon für den Apple I mal auf die Schnelle, ohne einen Assembler zu benutzen ein Integer Basic mit OP-Codes auf Papier geschrieben und als Hexdump implementiert. https://de.wikipedia.org/wiki/Apple_Integer_Basic Unbedingt sehenswert: https://www.amazon.de/Silicon-Valley-Story-Noah-Wyle/dp/B006WVESHW
Carsten S. schrieb: > Zudem geht es beim sogenannten "Arduino Bashing" ja noch nicht einmal um > die Arduino Software selbst, sondern darum das ein nicht gerade kleiner > Teil der Arduino Nutzer sich da nett aussehnde Projekte nach Copy & Past > Manier zusammenklickt, dabei nicht mal im Ansatz versteht was sie > wirklich machen, sich aber gleichzeitig für die ultimativen > Superprogrammierer halten. Leider wird Dir der geistige Horizont fehlen, um zu erfassen dass Du gerade mit herunter gelassen Hosen da stehst... Du bist einer der Zweitklässler die zu fünft einen Erstklässler auslachen. Messe Dich stattdessen doch mal mit Dritt- und Viertklässler! Selten so ein Eigentor gesehen wie Du es hier fabriziert hast...
il Conte schrieb: > Die eine Hälfte lernt alles auswendig, die verinnerlichen praktisch > die Bedienungsanleitung. Die Kurzform ist die Checkliste: > wenn LED A rot blinkt dann Taster grün drücken usw. > > Die 2. Hälfte spielt sich rum und prägt sich die Wege ein die zum Erfolg > führen. Das ist aber eine extrem einseitige Sichtweise ;-) Es gibt da die Anderen, die den Anspruch haben, ihre Programmiersprache systemunabhängig beherrschen wollen, ihre IDE verstehen wollen, sich über entsprechende Frameworks informieren und gelernt haben, eine Anforderung analytisch anzugehen. Die vor dem Hands-On ein strukturiertes Lösungskonzept entwickeln um das ganze dann Schritt für Schritt (top-Down oder bottom-up) in Code zu verwirklichen. Man muss dazu kein Profi sein, aber eine solide Ausbildung hilft da ungemein.
Jetzt bin ich ein bisschen verwirrt. C nur für Mikroprozessoren. C++ ist Objektorientiert. Also wenn ich später mal mit Java oder C# was machen sollte bin ich vorerst auf der Gewinnerstrasse. Und die Syntax von C ist in C++ drin. Dann ist das Logische also C++ zu lernen.
Retro N. schrieb: > Das waren keine Cracks, sondern nur 2 clevere junge Kerle, die es > verstanden haben mit wenig Aufwand den größtmöglichen Nutzen zu > erzielen. > https://en.wikipedia.org/wiki/Altair_BASIC Naja, lange ist's her und natürlich steht Woz mir (wie wohl jedem Entwickler) näher. Den beiden sollte man aber zugute halten, dass sie das Basic entwickelten, ohne den Prozessor je gesehen zu haben. Und dass sie die Maßstäbe gesetzt haben, trotz ihrer Jugend (ein paar Jahre jünger also Woz).
jan.F. schrieb: > Und die Syntax von C ist in C++ drin. Dann ist das Logische also C++ zu > lernen. Das ist meiner bescheidenen Meinung nach ein Trugschluss den viele machen (und dem ich selber auch mal aufgesessen bin). Nur weil höhere Mathematik, z.B. das Lösen von Differentialgleichungen auch Multiplikationen einschließt, fängt man nicht in der 2. Klasse mit Differentialgleichungen an, sondern eben mit dem kleinen 1x1. Da C++ per Definition nahezu den gesamten C-Standard einschließt, kannst du niemals ein guter C++-Programmierer werden, wenn du den C-Teil nicht verstehst.
jan.F. schrieb: > jan.F. (Gast) Netter Versuch, wieder mal die alten Streitigkeiten hochkommen zu lassen - Du bist aber einen Tag zu früh, morgen ist Freitag :-) 0 Troll-Punkte :-) Um mal wieder Minus-Punkte zu sammeln: Spanisch, Englisch und Französich habe die größte "Community" (ich hoffe in der richtigen Reihenfolge) :-)
Du willst von dem Arduino Werkzeug weg, weil die Anderen dich auslachen? Meiner Meinung nach, muss ein Werkzeug seinen Zweck erfüllen. Also für mich der beste (wie auch immer man das definiert) Weg zur Lösung eines Problems sein. Ob ich mit einem Besen von Aldi oder von Manufaktum den Hof fege, ist dem Kunen doch egal. Der will nen sauberen Hof! Und wenn auf der Rechnung ein 15% Zuschlag für einen handgeklöppelten Besen auftaucht, darfst du ab sofort andere Höfe fegen. Disclaimer: Ich finde gute Werkzeuge sehr wichtig und bin gerne bereit für Qualität zu zahlen. Auch ist die Eigenart, dass jeder Konzern (aka Kapitalsammelbecken) alles verkaufen muss, was er verkaufen kann verteufele ich zutiefst. Das o.g. Beispiel ist damit nicht mit meiner Moral deckungsgleich.
Dirk schrieb: > Ich finde gute Werkzeuge sehr wichtig und bin gerne bereit für Qualität > zu zahlen. > Auch ist die Eigenart, dass jeder Konzern (aka Kapitalsammelbecken) > alles verkaufen muss, was er verkaufen kann verteufele ich zutiefst. > Das o.g. Beispiel ist damit nicht mit meiner Moral deckungsgleich. Ähm ... GCC ist nicht kommerziell ... hust :-) und kann auch C++ ... (soweit mir bekannt) Aber ich kann auch die eingefleischten Arduino-Jünger verstehen - jeder nach seiner Fasson.
jan.F. schrieb: > Jetzt bin ich ein bisschen verwirrt. C nur für Mikroprozessoren. Schön das wir nach dem ganzen OT wieder beim eigentlichen Thread-Thema sind... ,-) > Jetzt bin ich ein bisschen verwirrt. C nur für Mikroprozessoren. Ich vermute mal, Du hast die bisherigen Antworten nicht verstanden, oder? Nr.1: Alles was Du an Sprachen genannt hast, führt am Ende irgendein µP aus, auch Java und Python und php. > C++ ist Objektorientiert. Also wenn ich später mal mit Java oder C# was > machen sollte bin ich vorerst auf der Gewinnerstrasse. Nr.2: Jede Sprache hat ihre Daseinsberechtigung, aber eben in ihrem eigenen Umfeld und Anwendungsfall. C ist schnell, effizient und hardwarenah und ist für ziemlich jede Plattform verfügbar, bildet die Basis zum Verständnis von C++, was aber etwas dann doch etwas ganz anderes ist. Java ist interpretiert, läuft akzeptabel auf vielen Betriebssystemen mit modernen CPUs, und benötigt immer die installierte JRE von Oracle. > Und die Syntax von C ist in C++ drin. Dann ist das Logische also C++ zu > lernen. Ja das glaubst auch nur Du. Beide Sprachen haben völlig unterschiedliche Paradigmen und damit unterschiedliche Denkweisen, Probleme zu lösen. Für das Grundverständnis musst Du bei beiden Sprachen den Umgang mit Pointern lernen, sonst programmierst Du Basic in der Syntax von C. Grundsätzlich gilt: Schlechter Code läßt sich in jeder Sprache schreiben und konterkariert die Vorteile der jeweiligen Sprache. Tip: Lern erst mal C, auch durchaus zunächst auf dem PC, wenn das Ziel ist, einen Microcontroller zu verstehen und hardwarenah zu programmieren, danach auch gerne C++ wenn Du für ein Betriebssystem programmieren möchtest. (oder C#, wenn es Dir lieber ist: in dem Fall auch mal nach "Mono" googlen) Siehe auch hier: https://www.mikrocontroller.net/articles/C_vs_C%2B%2B Besorg Dir gute Literatur, für C muss man nicht unbedingt den Kernighan-Ritchie nehmen, auch wenn der als Standard-Werk gilt. Das wurde u.a. auch hier schon mal diskutiert: Beitrag "C lernen / suche passendes Buch" Für C++ ist dieses Buch empfehlenswert https://www.amazon.de/Programmierer-lernen-professionell-anwenden-L%C3%B6sungen/dp/3446443460/ref=sr_1_1?ie=UTF8&qid=1506029570&sr=8-1&keywords=c%2B%2B P.S. Das Arduino Framework ist in C/C++ geschrieben, verführt aber den Anwender dazu, nicht selbst denken zu müssen und nur Codeschnipsel aus dem Internet zu kopieren. Der besteht dann oft nur aus dem Aufruf der Library-Funktionen und wird als "Basic in C Syntax" verfasst. Das liegt aber am Programmierer, nicht an der IDE. Als Compiler verwendet sogar die ArduinoIDE den avr-g++ Keiner hindert Dich daher also schon die ganze Zeit daran, sauberen C/C++ Code zu schreiben, oder anstelle der Libraries Deine eigenen Functions oder Objects zu coden, falls Du unbedingt an der ArduinoIDE festhalten willst.
:
Bearbeitet durch User
> Nur weil höhere Mathematik, z.B. das Lösen von Differentialgleichungen > auch Multiplikationen einschließt, fängt man nicht in der 2. Klasse mit > Differentialgleichungen an, sondern eben mit dem kleinen 1x1. Der Vergleich hinkt, denn der TO kennt C++ bereits (wegen Arduino). Zumindest die Grundlagen davon. > Java ist interpretiert Seit Version 1.5 nicht mehr. Der sogenannte JIT Compiler übersetzt den virtuellen Maschinencode zur Laufzeit in echten Maschinencode. > (Java) benötigt immer die installierte JRE von Oracle. Nein, es gibt auch eine JRE aus der Community namens OpenJava, sowei eine von IBM und ich meine, Microsoft hat auch eine im Programm. Für Lego Mindstorms gibt es eine abgespeckte JRE aus einer anderen Community. > Das Arduino Framework ist in C/C++ geschrieben, verführt aber den > Anwender dazu, nicht selbst denken zu müssen und nur Codeschnipsel aus > dem Internet zu kopieren. Das hast du gut auf den Punkt gebracht.
Stefan U. schrieb: >> Nur weil höhere Mathematik, z.B. das Lösen von Differentialgleichungen >> auch Multiplikationen einschließt, fängt man nicht in der 2. Klasse mit >> Differentialgleichungen an, sondern eben mit dem kleinen 1x1. > > Der Vergleich hinkt, denn der TO kennt C++ bereits (wegen Arduino). > Zumindest die Grundlagen davon. Der TO scheint "Arduino" für eine eigene Sprache zu halten. Seine C++-Kenntnisse schätze ich dementsprechend eher dürftig ein. Vermutlich ist er fähig Objekte zu instanziieren und eine Member-Funktion aufzurufen. Bei Leuten die aus der Arduino-Ecke kommen muss man sich manchmal schon fragen ob sie jemals eine eigene Funktion programmiert haben, geschweige denn eine ganze Klasse. Da fehlen meistens elementare Grundlagen, z.B. der sichere Umgang mit Zeigern oder das Verständnis welche Variable eigentlich wo im Speicher landet. Natürlich kann man sich das auch alles mit C++ erarbeiten und solange man im Arduino-Stil lediglich ein bisschen syntaktischen Zucker nutzt macht es die Sache auch nicht unbedingt viel komplizierter aber wer nicht einmal den Unterschied zwischen Stack und Heap kennt wird durch typische (für PC-Programmierung gedachte) C++-Lektüre zu allerlei Dummheiten verleitet. Von daher würde ich einem Anfänger eher zu C als zu C++ raten, einfach weil es überschaubarer ist.
Stefan U. schrieb: >> Java ist interpretiert > Seit Version 1.5 nicht mehr. Der sogenannte JIT Compiler übersetzt den > virtuellen Maschinencode zur Laufzeit in echten Maschinencode. > >> (Java) benötigt immer die installierte JRE von Oracle. > Nein, es gibt auch eine JRE aus der Community namens OpenJava, Echt jetzt? Sorry war mir nicht bekannt, habe mich ehrlich gesagt in letzter Zeit nicht tiefer mit JAVA beschäftigt und demzufolge auch nicht aktuell gehalten. Das sind Gründe, sich die Sache mal näher anzuschauen. Gibt es für JAVA eine Standard IDE, oder nimmt man einen der üblichen Verdächtigen (Eclipse etc.)?
neben Eclipse sind zum beispiel auch NetBeans und IntelliJ bekannt. Auf Mikrocontrollern würde Java allerdings nicht ersthaft einsetzen wollen.
Stefan U. schrieb: > neben Eclipse sind zum beispiel auch NetBeans und IntelliJ > bekannt. Danke für den Hinweis, werde ich mir mal anschauen. > > Auf Mikrocontrollern würde Java allerdings nicht ersthaft einsetzen > wollen. Zumindest nicht auf 8 bit MCUs, bei SBCs mit ARM SoCs schon eher.
Hier noch ein paar Arduino-Wahrheiten zum Wochenendausklang: 1. Arduino ist nicht AVR Arduino Frameworks gibt es für viele Prozessoren. Angefangen vom ESP8266 u.ä. bis zu allen möglichen ARM-Derivaten. Das Arduino Prinzip setzt auf Vereinfachung, wo Komplexität durch Nachlässigkeit der Entwickler unnötig ist. Das Framework stellt eine HAl dar und ist damit in Linie mit moderner Softwareentwicklung für Embedded Systeme. 2. Arduino Software wird nicht nur mit der Arduino-IDE entwickelt. Viele IDEs werden unterstützt. Angefangen von Atmel Studio, Eclipse und viele andere. 3. Auch Profis verwenden Arduinos, wenn es zu den Anforderungen passt. Besonders für Testaufbauten lohnt sich oft die Eigenentwicklung eines speziellen Prozessor Boards nicht. Die Arbeitszeit eines Profis ist zu teuer, um sie zu verschwenden. 4. Echte Arduinospzezialisten kennen den Code des Frameworks und passen dieses entsprechend an, wenn es die Umstände erfordern. 5. Ist für eine Problem keine Library verfügbar, weiß der Profi, wie man selbst eine schreibt und einbindet. Frohes Wochenende an alle Ardunauten ;-)
Ach ja .. hier noch das beste Arduino-Framework für die STM32 MCUs. https://github.com/danieleff/STM32GENERIC
Stefan U. schrieb: > Auf Mikrocontrollern würde Java allerdings nicht ersthaft einsetzen > wollen. Warum nicht? Laeuft doch auch auf deiner Sim-Karte und diversen Smartcards.
Marcus schrieb: > Hier noch ein paar Arduino-Wahrheiten zum Wochenendausklang: Deine Anmerkungen sind ganz schön keck ! :-( Mich würde es nicht wundern wenn sie dich hier durch den Fleischwolf treiben :-( Wenn ich dein Satement Nr.3 anschaue und mir dabei ein 10 fach gestacktes Arduino vorstelle, dann kommt mir das kalte Grausen.
Retro N. schrieb: > Stefan U. schrieb: >> neben Eclipse sind zum beispiel auch NetBeans und IntelliJ >> bekannt. > > Danke für den Hinweis, werde ich mir mal anschauen. > >> >> Auf Mikrocontrollern würde Java allerdings nicht ersthaft einsetzen >> wollen. > Zumindest nicht auf 8 bit MCUs, bei SBCs mit ARM SoCs schon eher. Wobei ein ARM SoC kein MCU mehr ist... Kaj G. schrieb: > Stefan U. schrieb: >> Auf Mikrocontrollern würde Java allerdings nicht ersthaft einsetzen >> wollen. > Warum nicht? Laeuft doch auch auf deiner Sim-Karte und diversen > Smartcards. Wo läuft denn darauf Java? Google spuckte darüber auch nichts aus... Es gibt einen ganz einfachen Grund weshalb Java nicht für MCU-Systeme geeignet ist, Java ist für eine Benutzung mit einer JVM zugeschnitten. Java, also die Sprache selbst, besitzt viele Eigenschaften die man auf diesen Systemen nicht zu gebrauchen sind. Z.B. dass alle außer den Standardtypen wie int Referenztypen sind, ergo einen Heap benötigen. Es gibt keine unsigned Typen. Objekte tragen viele Typinformationen mit -> Overhead. Keinen direkten Zugriff auf Speicher über Adressen. Die Liste lässt sich beliebig weiterführen. Es gibt zwar in der Tat Java Kompiler z.B. für AVR, das ganze ist aber rein akademischer Natur und ehrlich gesagt nicht zu gebrauchen, da Spezialkonstrukte benötigt werden und die Sprache letztenendlich nicht mehr Standardkonform ist.
jan.F. schrieb: > Nach dem ganzen lesen gehe ich davon aus, das C für mich das richtige im > ersten Moment ist. Und falls ich Visualisierungen brauche sollte, könnte > ich mir Java anlächeln. C ist fein, die Basics von C++ mitzunehmen ist auch keine schlechte Idee. Für Visualisierungen ist Java recht aufwändig, da bieten sich eher Skriptsprachen wie Python oder ein kleines Webfrontend mit EcmaScript und so etwas wie flot, jqPlot oder jqWidgets [1,2,3] an. [1] http://www.flotcharts.org/ [2] http://www.jqplot.com/ [3] https://www.jqwidgets.com/
il Conte schrieb: > Marcus schrieb: >> Hier noch ein paar Arduino-Wahrheiten zum Wochenendausklang: > > Deine Anmerkungen sind ganz schön keck ! :-( Nein, nur zutreffend.
Arduino F. schrieb: > Die Arduino Umgebung kann beides. > > AtmelStudio ist dann die falsche Wahl, denn es kann kein ESP und kein > Java. > > Evtl. Eclipse Eigentlich reichen eine ordentliche Shell, ein Build-System wie make und ein vernünftiger Editor wie Kate, UlraEdit, Notepad++, Geany, Sublime, Atom, vi oder Emacs, wobei die letzten beiden extrem leistungsfähig sind, aber nicht unbedingt für Anfänger und Gelegenheitsprogrammierer geeignet. > Eine Eier-Legende-Woll-Milch-Sau. Das ganze hochintegrierte IDE-Gerümpel eint das Problem, daß es, nunja, eben hochintegriert ist. Tausend kleine Fensterchen, in keinem kann man wirklich was sehen, tausend kleine Knöpfchen, die im Hintergrund dann doch nur wieder die guten alten Kommandozeilenwerkzeuge aufrufen, und wenn man mal ein paar Wochen nicht mit der IDE gearbeitet oder ein Update gemacht hat, darf man sich erstmal wieder einarbeiten... Und dann lassen die IDEs nur das komfortabel zu, was ihre Hersteller sich ausgedacht haben und vorstellen können. In einem Nachbarthread will gerade jemand cmake nicht benutzen, obwohl es zwar sein Problem lösen würde, aber nicht mit seiner IDE kompatibel ist. Bestimmt gibt es irgendeinen Weg, das hinzubekommen, aber dazu muß man wieder genau die Arbeit investieren, die man durch die IDE eigentlich sparen wollte und sollte. Deswegen kenne ich außer mir selbst noch eine ganze Reihe anderer Profis, die aus guten Gründen ganz bewußt auf IDEs verzichten. (Und bitte, liebe IDE-Freunde: erspart mir die übliche "aber meine IDE kann XY"-Debatte, die hab ich schon hundertmal geführt und alles, was Ihr mir da anpreist, kann ein vernünftiger Programmiereditor auch. Danke.) In anderen Kontexten wird den Leuten auch immer wieder geraten, unbedingt mit Assembler oder wenigstens in C zu programmieren, damit man seinen uC möglichst gut kennenlernt. Nun, Mikrocontroller werden gemeinhin nach der zu lösenden Aufgabe ausgesucht und sind daher volatil, aber die Werkzeuge, mit denen man seinen Code schreibt, meistens nicht. Wäre es da nicht eine gute Idee, erstmal Basics wie den Kompiler, den Debugger und dann Build-Systeme wie Make und cmake aud der Kommandozeile kennenzulernen, damit man weiß und versteht, was die IDE im Hintergrund macht?
Cyberpunk schrieb: > Wo läuft denn darauf Java? Google spuckte darüber auch nichts aus... 30C3: Java-SIM Infizierte SIM-Karte schickt Position alle fünf Minuten https://www.golem.de/news/java-sim-infizierte-sim-karte-schickt-position-alle-fuenf-minuten-1312-103603.html
1 | ... |
2 | Möglich ist der Angriff durch Sicherheitslücken in den SIM-Karten, |
3 | die sich laut Nohl und Melette selbst auf aktuellen Nano-SIM-Karten |
4 | finden. Meist gibt es eine Java-Anwendung auf einer SIM-Karte, die |
5 | keine Signierung oder Verschlüsselung braucht. |
6 | ... |
7 | Nach der Infektion mit Java-Schadsoftware nutzten die beiden |
8 | Sicherheitsforscher den Umstand aus, dass das iPhone 5S |
9 | ungefragt Kurznachrichten schickt. |
10 | ... |
Smart cards: A primer Develop on the Java platform of the future https://www.javaworld.com/article/2077101/learn-java/smart-cards--a-primer.html
1 | Smart cards have been getting a lot of buzz lately on the Web, |
2 | at the JavaOne conference last April (four sessions dealt with |
3 | the technology), on the big network news stations, and on CNN. |
4 | In this article we'll bring the smart card to life with a real-world |
5 | smart-card example. The techniques presented here will allow you |
6 | to start building Java applications that are smart-card enabled. |
JAVA CARD TECHNOLOGY http://www.oracle.com/technetwork/java/embedded/javacard/overview/index.html
1 | Java Card technology provides a secure environment for applications |
2 | that run on smart cards and other trusted devices with very limited |
3 | memory and processing capabilities. |
JAVA CARD FAQ http://www.oracle.com/technetwork/java/embedded/javacard/documentation/javacard-faq-1970428.html
1 | Java Card technology preserves many of the benefits of the Java |
2 | programming language - productivity, security, robustness, tools, |
3 | and portability - while enabling Java technology for use on smart |
4 | cards. The Virtual Machine (VM), the language definition, and the |
5 | core packages have been made more compact and succinct to bring |
6 | Java technology to the resource - constrained environment of smart |
7 | cards. |
8 | |
9 | Java Card technology also includes specific smart card features, |
10 | such as user authentication classes to manage PINs and passwords, |
11 | as well as specific application isolation features, known as the |
12 | firewall, that allow applications from several providers to |
13 | cohabit securely on the same card. |
Java-Laufzeitumgebung (Plattform) https://de.wikipedia.org/wiki/Java-Technologie#Java-Laufzeitumgebung_.28Plattform.29 Java Card https://de.wikipedia.org/wiki/Java_Card Cyberpunk schrieb: > Es gibt einen ganz einfachen Grund weshalb Java nicht für MCU-Systeme > geeignet ist Falsch. Ganz genau dafuer wurde Java urspruenglich mal entworfen und auch eingesetzt. Embedded Java - Historie https://de.wikipedia.org/wiki/Embedded_Java#Historie
1 | Java wurde ursprünglich für den Einsatz in eingebettete Umgebungen |
2 | konzipiert. In den 90er Jahren waren dies Internet-Browser, Settop |
3 | Boxen und Mobiltelefone der zweiten Generation. Seit Ende der 90er |
4 | Jahre setzte sich Java jedoch vorwiegend für den Einsatz im |
5 | Serverbetrieb durch. Für eingebettete Lösungen war eine optimierten |
6 | Form der Java Virtual Machine, die Java Micro Edition (J2ME), vorgesehen. |
So, mehr suche ich dazu jetzt nicht raus ;) Ich bin so dreisst zu behaupten, dass so ziemlich jeder halbwegs aktuelle Mikrocontroller mehr Rechenleistung und Speicher haben duerfte, als ein Handy aus den 90ern.
@Kaj G. Interessant, da hast du dann natürlich recht. So wie es scheint, wird Java dort aber eben deshalb eingesetzt, weil die Sprachbeschränkungen diesmal nutzlich sind (Sicherheitsbereich, keine Echtzeit), damit man nicht viel kaputt machen kann. Kaj G. schrieb: > Cyberpunk schrieb: >> Es gibt einen ganz einfachen Grund weshalb Java nicht für MCU-Systeme >> geeignet ist > Falsch. Ganz genau dafuer wurde Java urspruenglich mal entworfen und > auch eingesetzt. Nein, denn Embedded =/= MCU-Systeme.
1 | In den 90er Jahren waren dies Internet-Browser, Settop |
2 | Boxen und Mobiltelefone der zweiten Generation. |
Das sind keine Anwendungsfelder für µCs (auch nicht heute). Und hier geht es noch weiter: https://de.wikipedia.org/wiki/Embedded_Java#Historie
1 | Aktuelle eingebettete Lösungen auf Java Basis basieren auf der Java Standard Edition und kommen vorwiegend in Geäteklassen mit 32bit CPUs , 500+MHz und 128+MB Speicher zum Einsatz. Eine entsprechendes Gerät hätte in den 90er Jahre als Industrie PC gegolten. |
MCU-Systeme müssen meistens Echtzeitfähig sein, da hilft es nicht eine abgespeckte JVM zu nehmen und ein RTOS dranzuklatschen.
Wobei J2ME sogar von Sun für Tod erklärt wurde, weil nie µC angepeilt wurden und die Embedded Mikroprozessoren schneller geworden sind. https://de.wikipedia.org/wiki/Java_Platform,_Micro_Edition
1 | Gegenüber CNet hat Sun im Oktober 2007 angekündigt, die Plattform Java ME zugunsten Java Standard Edition aufzugeben. Grund hierfür ist, dass die Geräte, für die Java ME einst geschaffen wurde, immer leistungsfähiger wurden. Die Umstellung soll aber nicht auf einen Schlag passieren, sondern wird sich über die nächsten Jahre vollziehen. |
Wie gesagt Java war nie für MCU-Systeme gedacht...
Sheeva P. schrieb: > Das ganze hochintegrierte IDE-Gerümpel eint das Problem, daß es, nunja, > eben hochintegriert ist. > [...] > Nun, Mikrocontroller werden > gemeinhin nach der zu lösenden Aufgabe ausgesucht und sind daher > volatil, aber die Werkzeuge, mit denen man seinen Code schreibt, > meistens nicht. Wäre es da nicht eine gute Idee, erstmal Basics wie den > Kompiler, den Debugger und dann Build-Systeme wie Make und cmake aud der > Kommandozeile kennenzulernen, damit man weiß und versteht, was die IDE > im Hintergrund macht? Das ist meiner Meinung nach absolut sinnvoll. Es würde unter anderem auch dem, von Arduino ausgehenden, Missverständnis irgendwelche Header seien "Libraries" entgegenwirken. Immer öfter lese ich hier im Forum auch am Ende eines Beitrags in dem eine Frage gestellt wird "Programmiert wird mit Embitz." oder "Programmiert wird mit SW4STM32.", obwohl das Problem nicht im geringsten mit dem Compiler, geschweige denn mit der IDE zusammenhängt. "Programmiert wird mit Cherry-Tastatur" oder "Ich programmiere mit einem Samsung-Monitor" hätten wohl eine ähnliche Aussagekraft und ich frage mich dann ob diese Leute überhaupt die leiseste Ahnung haben, was ihre IDE im Hintergrund eigentlich macht.
Ich bin erstaunt daß Sheeva Plug für seinen kritischen Beitrag zu IDE's so viele -1 bekommen hat. Seine Ausführungen kann ich aus eigener Erfahrung durchaus nachvollziehen. Statt einer schlechten bewertung möchte ich darüber hinaus nun die für mich wichtigsten Vorteile von IDE nennen: - Automatische Eingabeergänzung, hilft sehr, wenn man sich nicht mehr exakt an die Namen von Klassen und Methonden (z.B. subStr) erinnert. Da ich mit vielen wechselnden Programmiersprachen arbeite, passiert mir das sehr häufig. - Hyperlinks auf die Interface, Implementierungen und Dokumentationen. Oder anders gesagt: Blitzschnelle Navigation, hilft vor allem in großen Projekten. - Refactoring. Ich habe mich darangewöhnt, schlechte Funktionsnamen und Variablen namen blitzschnell einfach zu ändern, ohne die ganzen Stellen suchen zu m üssen, wo sie verwendet werden. - Debugging. Arduino Nutzer kennen das nicht, aber von vielen anderen Programmiersprachen bin ich es gewohnt, daß man notfalls mal einen Unterbrechungspunkt setzen kann und dann Schritt für Schritt direkt im Quelltext mitlesen kann, welche Entscheidungen das Programm getroffen hat und welche Zwischen-Ergebnisse bei Berechnungen und Strin-Manipulationen entstanden sind. Ich weiß, daß Debugging zumindest bei C/C++ auch irgendwie auf der Kommandozeile geht, aber mit der Bedienung dieser Variante des Debugger tue ich mich sehr schwer. Ich möchte noch einen Aspekt gegen eine bestimmte Nutzungsart von IDE's ergänzen. Und zwar mag ich es inzwischen nicht mehr, wenn die IDE das Projekt ohne Build Script baut. Gelegentlich nehme ich kleine Entwicklungsaufträge für Geld an. Meistens schreiben mir die Auftrraggeber vor, welche IDE ich zu verwenden habe, wie sie das Projekt später selbst weiter bearbeiten wollen. meistens ist das dann eine ziemlich ale Version der IDE. In einem Fall musste ich dazu eine alte Windows Lizenz kaufen und in einer VM laufen lassen. In anderen Fällen musste ich meine aktuelle Entwicklungsumgebung deinstallieren, um die ältere installieren zu können. Das ist super ätzend. Und trotz der Anpassunf meinerseits sind diese Leute dann später dennoch oft nicht imstande, das Projekt weiter zu bearbeiten, weil sie ihre IDE falsch konfiguriert haben. Teilweise scheitert sowas auch ganz simpel an absoluten Dateipfaden im Projekt, die man leider nicht zu 100% verhindern kann. Für meine eigenen Projekte habe ich daher die Entscheidung getroffen, immer mit einem Build Script zu arbeiten. Bei C wäre das dann zum Beispiel das gute alte make, und bei Java ant. Solche Projekte kann man problemlos auf der Kommandozeile bauen, und zwar sowohl unter Linux als auch unter Mac OS und Windows. Es gibt in der Regel nur eine Abhängigkeit: Die Toolchain, welche man am Stück herunterladen und installieren kann. Manchmal (eher selten), wenn ich dynamische Code-Generierung oder komplexe Sonderlocken im Build Script brauche, setze ich auf Perl Scripte. Damit diese unter Windows laufen, lege ich eine alte Version des Perl Interpreters mit ins Projektverzeichnis (nur eine *.exe und eine DLL). Die anderen beiden Betriebssysteme enthalten Perl bereits normalerweise, so daß hierzu nichts extra installiert werden muss. Diese alten Kamellen sind zwar weniger komfortabel und Zeitaufwändiger für den Entwickler, aber sie sind Deppensicher anzuwenden. Und das scheint mir der wichtigere Aspekt zu sein, wenn man das Projekt veröffentlicht, and andere übergibt oder einfach nur langfristig wartbar halten will. Tools wie Maven in Java sind für mich ein absolutes NoGo, lerider muss ich damit täglich arbeiten. Maven verspricht, alles automazisch zu machen. In Wahrheit muss man dafür aber (zumindest in komplexen Projekten) so viel konfigurieren, daß alleine die projekt-Konfigurationsdatei (pom.xml) schon 20x größer ist, als ein gleichwertiges ant Script oder Shell Script. Außerdem tun die Automatismen oft nicht das, was ich brauche. Zum beispiel fehlen mir häufig Libraries für indirekte Abhängigkeiten, während andere unnütig dazu geladen werden. Klar kann man etwas dagegen unternehmen, aber das macht dann in der Praxis am Ende mehr Arbeit, als alle Libraries einfach komplett manuell zusammen zu sammeln. Außerdem hängt der Build Vorgang bei solchen Tools von Internet Dienstleistern ab. Da kann es schnell passieren, daß der Build bei mir super klappt, aber beim Kunden plötzlich nicht mehr. Denn er hat keine Verbindung zu irgendeinem Repository, oder dort liegen jetzt andere Versionen der Libraries herum. Ein GAU Szenario ist für mich (und das habe ich tatsächlich erleben müssen), wenn ich ein ehemals abgegebenes Projekt nach 6 Jahren wieder bekomme und ändern soll. Dann scheitert der Build, weil einige Libraries gar nicht mehr downloadbar sind oder weil die Abhängigkeiten falsch vorgegeben sind. Wir brauchten einmal zu zweit eine ganze Woche, um ein alten Maven Projekt compilierbar zu machen. Ich bin absolut sicher, daß mir mit ant oder Shell Script viel schneller gewesen wären. Zu viel Auto-Magic ist nicht gut. Aber gerade dazu neigen die IDE's zunehmend. Mein Tip: Nutze die IDE als besseren Texteditor und GUI für den Debugger. Aber der Build Vorgang sollte auf der Kommandozeile ganz unabhängig von der Installtion der IDE laufen. Selbst SAP macht das so bei einigen sehr prominenten Produkten. Ich halte das für eine Weise Entscheidung.
Christopher J. schrieb: > Es würde unter anderem > auch dem, von Arduino ausgehenden, Missverständnis irgendwelche Header > seien "Libraries" entgegenwirken. Ich habe ja nichts dagegen, wenn man die Werkzeuge von der Pike auf kennen lernt. Möchte aber zu bedenken geben, dass ein Anfänger an einem Punkt anfangen muss. Alles gleichzeitig geht nicht. Nicht ohne Grund dauert eine Vollzeitausbildung ca. 3,5 Jahre. Plus ca. ein 1/2 Jahr, pro jede Sprache und pro Spezialgebiet. Alles verbunden, mit viel üben, Erfahrung machen. Es ist also eher ein Prozess über 10 Jahre, oder so, bis man wirklich gut ist. Und selbst dann kann man noch nicht alle Tools, Sprachen und Anwendungen kennen. Christopher J. schrieb: > "Programmiert wird mit Cherry-Tastatur" oder > "Ich programmiere mit einem Samsung-Monitor" hätten wohl eine ähnliche > Aussagekraft und ich frage mich dann ob diese Leute überhaupt die > leiseste Ahnung haben, was ihre IDE im Hintergrund eigentlich macht. Vorsicht Ironie: Ich finde, dass man zuerst sein eigenes Betriebssystem incl. Kompiler und Toolchain schreiben sollte, damit man das, womit man umgeht, auch in der Tiefe verstanden hat. Dann erst sollte man sein erstes eigenes "Hello World" Programm schreiben dürfen.
Arduino F. schrieb: > Vorsicht Ironie: > Ich finde, dass man zuerst sein eigenes Betriebssystem incl. Kompiler > und Toolchain schreiben sollte, damit man das, womit man umgeht, auch in > der Tiefe verstanden hat. Dann erst sollte man sein erstes eigenes > "Hello World" Programm schreiben dürfen. <ironie> Ich plädiere dafür, daß alle Anfänger vor der Nutzung ihres ersten Smartphones, Computers, Tablets usw. erst mal die Basics lernen, und eine CPU aus diskreten Bauteilen zusammenlöten, um darauf dann ihr völlig proprietäres Betriebssystem zu implementieren 8-D, Beitrag "Rechner aus einzelnen BC547 Transistoren" oder gleich mit AVR-Z80-Emulation inkl. CP/M... ;-) https://www.mikrocontroller.net/articles/AVR_CP/M </ironie>
:
Bearbeitet durch User
Wer fragt, wie er vom Arduino "wegkommen" soll, ist nach meiner Meinung noch nicht so weit. jetzt bin ich wieder bei der Picaxe und Arduino. Auf Grund dessen ,das ich mit dem Arduino angefangen habe und so die Klammeraffenprogrammierung erlernen und Nutzen kann, überlege ich ernsthaft zurück zum AVR und Pic zu gehen. Ich habe diese Teile ja noch im umfangreichen Sortiment! Überlege natürlich auch wie ich noch die vielen vorhandenen C-Control/ Pro 32 nutzen kann.
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.