C oder C++ für µController
lima-city → Forum → Programmiersprachen → C/C++ und D
ansatz
assembler
bestimmten assembler
empfehlen
holen
laufbahn
leben
lesbarkeit
mensch
performance
planung
programm
programmierer
programmierung
projekt
reserve
tragen
url
vorteil
wesentlichen vorteil
-
Hallo Community,
Ich habe mal eine kleine Frage, sowohl c als auch c++ werden für die Programmierung von µControllern verwendet?!
Hat der objektorientierte Ansatz von c++ bei der Hardwareprogrammierung einen wesentlichen Vorteil gegenüber c?
Ich persönlich denke dass sich schon ein Vorteil durch die Objektorientierung ergibt, aber dieser erst bei größeren Projekten zu tragen kommt. Oder verstehe ich hier was grundlegend falsch?
PS: Ich bin noch ein blutiger Anfänger im Programmieren
liebe Grüße
Marina -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
marina-b schrieb:
Ich persönlich denke dass sich schon ein Vorteil durch die Objektorientierung ergibt, aber dieser erst bei größeren Projekten zu tragen kommt. Oder verstehe ich hier was grundlegend falsch?
Nein. Das hast du durchaus treffend gesagt. Je nach Anwendungsfall kann es aber auch Ausnahmen geben
Wobei Objektorientierung jetzt ein recht weitläufiger Begriff ist. Es gibt eine Teilaspekte, die verschiedenen Situationen hilfreich sind. Je nach Programmiersprache kann man sich einfach bei diesen Teilaspekten bedienen, ohne gleich alles auf OOP umzustellen.
Von daher: Kommt drauf an, was du vorhast. Wenn du vorher selber merkst, dass dir Objektorientierung bei einem Projekt weiter hilft, dann nimm C++. C und C++ sind zwar miteinander kombinierbar, aber eine Mischform von C und C++ ist meistens nicht so schön zu lesen.
Beitrag zuletzt geändert: 18.1.2015 15:43:28 von bladehunter -
Unabhängig davon bleibt dann noch die Frage zu klären, wie viel Overhead du dir durch C++ mit Objekten usw einfängst, denn das könnte auf einem (schwachen) Microcontroller schon spürbare Folgen haben, sobald es aufs Timing oder den Speicherverbrauch (RAM und ROM) ankommt. Siehe hier.
-
marina-b schrieb:
Hat der objektorientierte Ansatz von c++ bei der Hardwareprogrammierung einen wesentlichen Vorteil gegenüber c?
Das kommt darauf an, ob du als Vorteil einer bessere Übersichtlichkeit für den Programmierer meist oder ein schnelleres bzw. performanteres Programm, das schnell umgesetzt werden kann.
OOP ist meistens übersichtlicher für den Programmierer aber meist auch ein bisschen langsamer als einfache, prozessorientierte Programme. -
Umfang und Einsatzzweck des Projetks würde ich mal als ausschlaggebend bezeichnen.
Ich hatte bisher bsp.-weise einen 8x8x8 LED Cube Projekt gehabt. Dort habe ich allerdings bewusst auf C/C++ verzichtet und auf Assembler zurückgegriffen, um max. Performance aus den ATMega's zu holen.
Die Lesbarkeit (Assembler-Code) für Mensch lässt zu Wünschen übrig. Für Maschine bzw. µC jedoch wunderbar. Daher denke ich, dass man bereits in der Planung abwägen muss, welche Kriterien, in Bezug auf das Projekt, für einen wichtig sind und ob OOP in dem Fall sich lohnen würde. Wenn der µC genug Reserven bietet, wäre C/C++ sicherlich nicht verkehrt, um die erwähnte Übersicht für den Mensch zu gewährleisten. -
b33st schrieb:
Ich hatte bisher bsp.-weise einen 8x8x8 LED Cube Projekt gehabt. Dort habe ich allerdings bewusst auf C/C++ verzichtet und auf Assembler zurückgegriffen, um max. Performance aus den ATMega's zu holen.
Wobei man sich bei der Assembler-Programmierung häufig das Leben auch mit Macros leichter machen kann. Kannst du einen bestimmten Assembler empfehlen? -
Man kann sich das Leben mit so einigem leichter machen
bladehunter schrieb:
[...] Kannst du einen bestimmten Assembler empfehlen?
Also ich habe bisher nur eine Handvoll von Assemblern im Verlaufe meiner Laufbahn gehabt, um jetzt einen konkret hervorheben zu können. U.a. wären da AVR, MIPS und MSP430. Im Grunde ähneln sie sich (würde das mit RISC Architektur erklären?!). Da wären z.B. die "Standard"-Befehle wie "mov", "sub" oder "add" etc.
Obwohl mir persönlich MIPS am besten gefiel, würde ich zu Lernzwecken bzw. als Einstieg MSP430 favorisieren. Aus einfachem Grund, weil er sehr günstig in der Anschaffung ( z.B. MSP430 LaunchPad) ist und man so direkt nah genug an der Hardware arbeiten kann. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage