Forum: Mikrocontroller und Digitale Elektronik Systemnahe Programmierung in C (SPiC) Vorlesungsfolien, Übungen und Projekte


von Alexander S. (alesi)


Lesenswert?

Hallo,

unter https://sys.cs.fau.de/lehre/ss22/spic/vorlesung findet man 
Vorlesungsfolien, Übungen und Projekte zur Vorlesung "Systemnahe 
Programmierung in C (SPiC)" der FAU Erlangen-Nürnberg zur Programmierung 
von AVR-Controllern (ATmega328) in C.
Die Seite vom SS22 enthält ein Gesamtskript als pdf. Es gibt auch eine 
Seite zum SS24. Da gibt es die Folien aber nur in einzelnen Teilen.
Einen Schaltplan zum SPiCboard V3 findet man auf der Seite zum WS17 
unter 
https://www4.cs.fau.de/Lehre/WS17/V_GSPIC/Uebungen/Board/spicboard-v3.pdf

Ich habe die Seite auch in der Linksammlung unter 
https://www.mikrocontroller.net/articles/Linksammlung#Tutorials_und_Beispiele 
eingetragen.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

> Es gibt für **jede** Plattform einen C-Compiler.

Ziemlich steile These. (Fettschreibung übernommen aus Folie)

Aus: SpiC, Teil A, SS22, Einführung, Seite 1-5.

von Harald K. (kirnbichler)


Lesenswert?

Johann L. schrieb:
> Ziemlich steile These.

Für welche denn nicht, mit der auch tatsächlich irgendjemand was macht 
(um rein akademische Konstrukte oder sowas wie bo8 auszuschließen)?

von Rbx (rcx)


Lesenswert?

Harald K. schrieb:
> Für welche denn nicht

Na die selbstgestrickten z.B. oder FPGA oder alte Grafikkarten oder 
recht neue Sachen - wobei natürlich so ein Mittelding dann Linux sein 
kann. Indirekt gesehen geht ja dann wieder einiges.
Hier geht z.B. Debian, da kann man nicht meckern:
https://wikidevi.wi-cat.ru/BeagleY-AI

von Harald K. (kirnbichler)


Lesenswert?

Rbx schrieb:
> wobei natürlich so ein Mittelding dann Linux sein
> kann.

Hä? Es ging um C-Compiler. Plattformen, für die es ein Linux gibt, für 
die existiert naturgemäß eine C-Compiler.

Johann hat es als "steile These" bezeichnet, daß das Lehrmaterial meint, 
für jede Plattform gäbe es einen C-Compiler.

von Rbx (rcx)


Lesenswert?

Harald K. schrieb:
> Hä? Es ging um C-Compiler. Plattformen, für die es ein Linux gibt, für
> die existiert naturgemäß eine C-Compiler.

Jaja.. indirekt meint aber auch, dass man z.B. zuwenig Platz haben kann, 
dann hat man keinen C-Compiler, sondern vielleicht etwas 
Platzsparenderes.
Allerdings muss man das Linux natürlich anpassen können, so gesehen 
müsste ja mindestens schon eine C-Runtime vorhanden sein bzw. so ein 
paar C-Grundfunktionen.

Und dann noch: Was ist eigentlich Cygwin? Ist Cygwin eine eigene 
"Plattform"? ;)

von Bruno V. (bruno_v)


Lesenswert?

Rbx schrieb:
> Jaja.. indirekt meint aber auch, dass man z.B. zuwenig Platz haben kann,
> dann hat man keinen C-Compiler, sondern vielleicht etwas
> Platzsparenderes.

Sowohl "Plattform" als auch "C-Compiler" ist missverständlich (hier und 
in den Folien)

In den Folien bezeichnet "Plattform" die µC-Umgebung ("Zielplattform") 
als auch die Entwicklungsplattform ("Betriebssystem-Plattform", mit 
nennung von Linux).

"Es gibt für jede Plattform einen C-Compiler" kann interpretiert werden 
als "also auch auf jeder Zielplattform". Das ist natürlich nicht so.

Für die meisten µC gibt es einen C-Compiler auf Linux, Windows oder 
einem anderen Betriebssystem. Dass brandneue noch keinen haben oder 
Exoten (in irgendeiner Peripherie eines FPGAs in einem Hybridchip) auch 
nicht, geschenkt.

Die Fälle, wo es irgendeine Hochsprache gibt und kein C, dürften noch 
exotischer sein. Fasst man das ein wenig weiter, sind sie es nicht, z.B. 
SPS-Steuerungen oder Taschenrechner.

: Bearbeitet durch User
von Rbx (rcx)


Lesenswert?

Bruno V. schrieb:
> Die Fälle, wo es irgendeine Hochsprache gibt und kein C, dürften noch
> exotischer sein.

Stichworte wären u.a. Assembler, Basic, Cobol, Forth, Fortran, 
JavaScript, Python, irgendeine eigene Steuersprache..
(Lego Mindstorms hat zumindest eine NXC 
https://de.wikipedia.org/wiki/Not_eXactly_C)

von Vanye R. (vanye_rijan)


Lesenswert?

Also C gibt es immer, in der Vergangenheit, in der Zukunft, auf immer. 
Hallejulia!
Deshalb haben die anderen Sprachen (vgl Rust) aus der Sicht der wahren 
Glaeubigen immer sowas sektenartiges.

Vanye :)

von Johannes F. (jofe)


Lesenswert?

Rbx schrieb:
> Bruno V. schrieb:
>> Die Fälle, wo es irgendeine Hochsprache gibt und kein C, dürften noch
>> exotischer sein.
>
> Stichworte wären u.a. Assembler, Basic, Cobol, Forth, Fortran,
> JavaScript, Python, irgendeine eigene Steuersprache..
> (Lego Mindstorms hat zumindest eine NXC

Was soll diese absolut sinnbefreite Aufzählung nun aussagen?

Assembler ist keine Hochsprache.

Python, JavaScript und viele Basic-Dialekte werden durch Interpreter 
ausgeführt, die i.d.R. in C geschrieben sind.

Beitrag #7964478 wurde vom Autor gelöscht.
von Flunder (flunder)


Lesenswert?

Extrem kleine Kröten wie PIC10 oder alte AtTinys vermiesen einem schon 
die Laune etwas wie einen C-Compiler dafür zu portieren.

Wobei ich hier ausdrücklich auch die Cross-Compiler meine, also von der 
Zielplatform des Compilats schreibe. Wenn der eigentliche Compiler auf 
der Platform laufen soll, wird es natürlich noch viel bitterer.

: Bearbeitet durch User
von Rbx (rcx)


Lesenswert?

Johannes F. schrieb:
> Was soll diese absolut sinnbefreite Aufzählung nun aussagen?
>
> Assembler ist keine Hochsprache.

Selber sinnfrei. Assembler können ja auch Dialekte haben. Aber sind es 
nicht Sprachen, die Dialekte haben?
Basic ist auch nicht exotisch, kann auch einen Interpreter haben, kann 
man auch compilieren.
Das Argument ging nur gegen den Hinweis auf "exotisch" - was da 
bestimmte Alternativen eigentlich nicht unbedingt sind.
Die C-Scripts vom Bellard sind da schon eher exotischer.

Johannes F. schrieb:
> und viele Basic-Dialekte werden durch Interpreter
> ausgeführt, die i.d.R. in C geschrieben sind.

Das ist nun kompletter Unfug - kann natürlich sein, war aber früher eher 
gar nicht so. Und JS und andere sind Schlicht Browsersprachen - und 
Browser kann man sehr wohl schon als "Plattform" einordnen.
Freilich nicht Hardware- bzw. Systemprorammier-Nahe.
Nun könnte man sich aber auch Pascal für Systemnahe Programmierung 
vorstellen.
Pascal und Basic wurden früher überall in Europa vermittelt - aber mit 
Sicherheit nicht, weil diese Programmiersprachen so "exotisch" sind.

von Bruno V. (bruno_v)


Lesenswert?

Rbx schrieb:
> Freilich nicht Hardware- bzw. Systemprorammier-Nahe.

Deine Antwort ging am Thema vorbei. Vielleicht hast Du das Papier auch 
gar nicht gelesen und die Antworten deshalb nicht einordnen können.

Es ging darum, dass für eine µC-Plattform "immer" ein C-Compiler 
existiert. Dass es für µC, die älter als C sind, nicht unbedingt 
zutrifft, ist klar und ohne Belang hier. (Wobei man sich fragen kann, ob 
man da von µC statt von µP spreche kann)

Dass es zudem geschlossene Systeme (nicht "µC-Plattformen") gibt, die 
einen µC enthalten aber keinen C-Compiler, habe ich auch geschrieben und 
Beispiele genannt (SPS/Taschenrechner).

Selbst Ausnahmen, wo es echte oder virtuelle µC sind aber ohne 
C-Compiler, habe ich benannt.

Eine µC-Plattform aus diesem Jahrtausend, mit Cobol oder Python aber 
ohne C, dürfte selten sein.

von Johannes F. (jofe)


Lesenswert?

Rbx schrieb:
> Johannes F. schrieb:
>> Was soll diese absolut sinnbefreite Aufzählung nun aussagen?
>>
>> Assembler ist keine Hochsprache.
>
> Selber sinnfrei. Assembler können ja auch Dialekte haben.

Ach? XD

Mich beschleicht das Gefühl, "Rbx (rcx)" ist eine KI, die bereits ihren 
Systemkollaps erlitten hat...

von Christoph M. (mchris)


Lesenswert?

Bruno V. (bruno_v)
11.11.2025 17:16
>Eine µC-Plattform aus diesem Jahrtausend, mit Cobol oder Python aber
>ohne C, dürfte selten sein.

Naja, für Micropython sind es schon einige:

STM32, ESP32, ESP8266, PiPico, Nordic nRF, TI3200, SAMD21

https://docs.micropython.org/en/latest/

von Johannes F. (jofe)


Lesenswert?

Christoph M. schrieb:
> Bruno V. (bruno_v)
> 11.11.2025 17:16
>>Eine µC-Plattform aus diesem Jahrtausend, mit Cobol oder Python aber
>>ohne C, dürfte selten sein.
>
> Naja, für Micropython sind es schon einige:
>
> STM32, ESP32, ESP8266, PiPico, Nordic nRF, TI3200, SAMD21
>
> https://docs.micropython.org/en/latest/

Leute, wann kapiert ihr's endlich?

Es geht um "Plattformen", für die in einer von C verschiedenen 
Hochsprache entwickelt werden kann, NICHT ABER in C.

Was zum Teufel ist daran so schwer zu verstehen?

Für STM32 und Pi Pico gibt es natürlich C-Compiler, und für die übrigen 
der oben zitierten Aufzählung höchstwahrscheinlich auch. Dass es daneben 
Compiler/Interpreter für andere Sprachen gibt, ist für die Aussage, um 
die es geht, völlig egal! Davon abgesehen: In welcher Sprache sind 
Python-Interpreter wohl geschrieben?

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Johannes F. schrieb:
> Leute, wann kapiert ihr's endlich?
>
> Es geht um "Plattformen", für die in einer von C verschiedenen
> Hochsprache entwickelt werden kann, NICHT ABER in C.

Hmm....

Und ich dachte es geht um:
Alexander S. schrieb:
> unter https://sys.cs.fau.de/lehre/ss22/spic/vorlesung findet man
> Vorlesungsfolien, Übungen und Projekte zur Vorlesung "Systemnahe
> Programmierung in C (SPiC)" der FAU Erlangen-Nürnberg zur Programmierung
> von AVR-Controllern (ATmega328) in C.

Wobei mich eher der Einsatz von modernem C++ interessiere würde.

: Bearbeitet durch User
von Christoph M. (mchris)


Lesenswert?

>In welcher Sprache sind Python-Interpreter wohl geschrieben?
Was ist denn ein Python-Interpreter?

von Johannes F. (jofe)


Lesenswert?

Arduino F. schrieb:
> Und ich dachte es geht um:

De facto geht es in diesem Thread seit der ersten Antwort auf den 
Eröffnungsbeitrag um die These, es gebe für jede Plattform einen 
C-Compiler.

Arduino F. schrieb:
> Wobei mich eher der Einsatz von modernem C++ interessiere würde.

Hat sich halt bislang für AVR (und einige andere kleinere 
MCU-Architekturen) nicht wirklich durchgesetzt. Aus Gründen.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Johannes F. schrieb:
> Hat sich halt bislang für AVR (und einige andere kleinere
> MCU-Architekturen) nicht wirklich durchgesetzt.
In der Arduino Welt schon.
Na gut, musst du ja nicht ernst nehmen ....
Allerdings ist da "kleine AVR" und C++ eine übliche Kombination.

Johannes F. schrieb:
> Aus Gründen.
Aus geheimen Gründen?
Geschwindigkeit kanns nicht sein.
Speicherbedarf auch nicht...

Beharrungsvermögen und Codebasis könnten Gründe sein, wobei die 
Codebasis auch meist in C++ nutzbar/linkbar ist.

Johannes F. schrieb:
> De facto geht es in diesem Thread seit der ersten Antwort auf den
> Eröffnungsbeitrag um die These, es gebe für jede Plattform einen
> C-Compiler.
Das ist erstens Unsinn, und zweitens Thread hijacking, zumindest das 
Python gehackel.

: Bearbeitet durch User
von Nemopuk (nemopuk)


Lesenswert?

Johannes F. schrieb:
> (C++) hat sich halt bislang für AVR ... nicht wirklich durchgesetzt.

Du ignorierst Arduino. Das hat sich durch gesetzt.

von Oliver S. (oliverso)


Lesenswert?

Johannes F. schrieb:
> De facto geht es in diesem Thread seit der ersten Antwort auf den
> Eröffnungsbeitrag um die These, es gebe für jede Plattform einen
> C-Compiler.

https://youtu.be/GvIdgExPF7M?si=VFgZ0cP8SBTOql-h

Oliver

von Johannes F. (jofe)


Lesenswert?

Arduino F. schrieb:
> In der Arduino Welt schon.
> Na gut, musst du ja nicht ernst nehmen ...

Tue ich auch nicht. :-)

Arduino F. schrieb:
> Aus geheimen Gründen?

Informiere dich doch selbst, oder ist eigenständige Recherche aus 
öffentlich zugänglichen Quellen des WWW von einem Arduino-Anhänger zu 
viel verlangt?

Arduino F. schrieb:
> Johannes F. schrieb:
>> De facto geht es in diesem Thread seit der ersten Antwort auf den
>> Eröffnungsbeitrag um die These, es gebe für jede Plattform einen
>> C-Compiler.
> Das ist erstens Unsinn, und zweitens Thread hijacking, zumindest das
> Python gehackel.

(1) Dann zitiere mir doch einen Beitrag dieses Threads, der sich auf 
etwas anderes bezieht. (2) Mag sein, aber (a) habe ich damit nicht 
angefangen, (b) ist mir nicht bekannt, dass "Thread hijacking" in diesem 
Forum zumindest generell unerwünscht wäre, und (c) steht es dir frei, 
auf das Ursprungsthema einzugehen, anstatt ein neues anzuschneiden, das 
mit dem des TO rein gar nichts mehr zu tun hat.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Johannes F. schrieb:
> steht es dir frei,
> auf das Ursprungsthema einzugehen,

OK...
Habe mir die Folien durchgelesen... ganz zu Anfang schon.
Nett, aber keine Überraschungen.
Mir fehlt da C++, aber das sagte ich doch schon.

Johannes F. schrieb:
> Informiere dich doch selbst, oder ist eigenständige Recherche aus
> öffentlich zugänglichen Quellen des WWW von einem Arduino-Anhänger zu
> viel verlangt?
Das ist eine der dümmsten Ansagen die mir je unter gekommen ist.
In entnehme deiner Ansage, dass du keine deiner Gründe benennen kannst!

: Bearbeitet durch User
von Johannes F. (jofe)


Lesenswert?

Nemopuk schrieb:
> Du ignorierst Arduino. Das hat sich durch gesetzt.

Ja, unter einer gewissen Teilmenge von Bastlern/Hobbyisten/Makern... Für 
eine generelle Aussage über C vs. C++ bei allen Anwendern einschließlich 
der Industrie kaum relevant.

von Frank D. (Firma: LAPD) (frank_s634)


Lesenswert?

Was hat denn dieser lächerliche VHS-Kurs in einem Stuidum verloren?

von Johannes F. (jofe)


Lesenswert?

Arduino F. schrieb:
> Nett, aber keine Überraschungen.

Möglicherweise ein Grund, weshalb dieser Thread abgedriftet ist.

Arduino F. schrieb:
> Mir fehlt da C++, aber das sagte ich doch schon.

Lies doch nochmals den Titel der eingangs verlinkten Lehrveranstaltung.

Arduino F. schrieb:
> Das ist eine der dümmsten Ansagen die mir je unter gekommen ist.
> In entnehme deiner Ansage, dass du keine deiner Gründe benennen kannst!

Entnimm meiner "Ansage", was auch immer du willst; auf diesem Niveau 
werde ich jedenfalls nicht weiter diskutieren. Wenn du zu faul oder 
anderweitig nicht in der Lage bist, eine schnelle Google-Suche zu 
bemühen, ist das nicht mein Problem.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Johannes F. schrieb:
> Wenn du zu faul oder
> anderweitig nicht in der Lage bist, eine schnelle Google-Suche zu
> bemühen, ist das nicht mein Problem.

Da ich beide Sprachen genügend beherrsche, um das beurteilen zu können, 
brauche ich für deine "Gründe" kein Google!

Zudem ist es deine Behauptung, dass es Gründe gibt.
Somit bist du auch in der Nachweispflicht.

von Johannes F. (jofe)


Lesenswert?

Arduino F. schrieb:
> Da ich beide Sprachen genügend beherrsche, um das beurteilen zu können,
> brauche ich für deine "Gründe" kein Google!

Du widersprichst dir selbst. Beherrschtest du beide Sprachen "genügend", 
dann würdest du die Gründe, die ich meine, kennen.

Oder beschränken sich deine Kenntnisse von C++ auf diese 
Arduino-Sprache?

Arduino F. schrieb:
> Somit bist du auch in der Nachweispflicht.

Hier hat niemand eine Nachweispflicht gegenüber irgendjemandem.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Johannes F. schrieb:
> auf diese Arduino-Sprache?
Es gibt keine ominöse "Arduino Sprache".

Für AVR Arduinos ist C++11 üblich.
Ich nutze C++23, auch in der Arduino IDE

Johannes F. schrieb:
> dann würdest du die Gründe, die ich meine, kennen
Woher soll ich wissen, was sich bei dir zwischen den Ohren abspielt?
Das weiß auch Googlen sicherlich nicht.

Wenn du die Gründe nennst, können wir darüber reden.

von Christoph M. (mchris)


Lesenswert?

Johannes F. (jofe)
12.11.2025 12:01
>In welcher Sprache sind Python-Interpreter wohl geschrieben?

CPython (C), Jython (in Java), IronPython (in C#), PyPy (Python)

ich schrieb:
>Was ist denn ein Python-Interpreter?

Lustigerweise wurde die Frage negativ bewertet. Die wenigsten könnten 
sie aber korrekt beantworten, sie lautet nämlich:

"Python besteht aus einem Compiler und einem Interpreter. Der Compiler 
wandelt den Codetext in Bytecode um und dieser Bytecode wird dann von 
einer virtuellen Maschine ausgeführt. Diese virtuelle Maschine ist der 
Python-Interpreter. Damit besteht Python sowohl einem Compiler als auch 
einem Interpreter. Es kombiniert beide Konzepte"

: Bearbeitet durch User
von Rick (rick)


Lesenswert?

Christoph M. schrieb:
> Python besteht aus einem Compiler und einem Interpreter. Der Compiler
> wandelt den Codetext in Bytecode um und dieser Bytecode wird dann von
> einer virtuellen Maschine ausgeführt.
1
$ python                                                                                                                                                            
2
Python 3.13.7 (main, Aug 15 2025, 12:34:02) [GCC 15.2.1 20250813] on linux
3
Type "help", "copyright", "credits" or "license" for more information.
4
>>> print("Hier auch?")
5
Hier auch?
6
>>>

: Bearbeitet durch User
von Christoph M. (mchris)


Lesenswert?

Ja, hier wird auch zuerst ein Byte-Code-File durch compilieren erzeugt 
und dann von dieser VM ausgeführt:
https://github.com/micropython/micropython/blob/master/py/vm.c

von Ein T. (ein_typ)


Lesenswert?

Johannes F. schrieb:
> Arduino F. schrieb:
>> Aus geheimen Gründen?
>
> Informiere dich doch selbst, oder ist eigenständige Recherche aus
> öffentlich zugänglichen Quellen des WWW von einem Arduino-Anhänger zu
> viel verlangt?

Unter Erwachsenen ist es üblich, die eigenen Behauptungen selbst zu 
belegen, spätestens auf ausdrückliche Nachfrage.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Ein T. schrieb:
> Unter Erwachsenen ist es üblich, die eigenen Behauptungen selbst zu
> belegen,

Das kann er sicherlich nicht.
Habe mal einige seiner Beiträge untersucht.
Er scheint eher ASM zu nutzen.
Und ASM Programmierer scheinen manchmal irgendwas gegen C++ zu haben.
Z.B. Vorurteile oder einfach nur aus Prinzip.
Ein Realitätsbezug ist da nicht immer gegeben.

Ich habe übrigens nichts gegen Assembler und ihre Programmierer!
Allerdings einiges gegen komische Behauptungen.

von Ein T. (ein_typ)


Lesenswert?

Rick schrieb:
> Christoph M. schrieb:
>> Python besteht aus einem Compiler und einem Interpreter. Der Compiler
>> wandelt den Codetext in Bytecode um und dieser Bytecode wird dann von
>> einer virtuellen Maschine ausgeführt.
>
1
> $ python
2
> Python 3.13.7 (main, Aug 15 2025, 12:34:02) [GCC 15.2.1 20250813] on 
3
> linux
4
> Type "help", "copyright", "credits" or "license" for more information.
5
>>>> print("Hier auch?")
6
> Hier auch?
7
>>>>
8
>
1
Python 3.14.0 (main, Nov 18 2025, 05:53:34) [GCC 14.2.0] on linux
2
Type "help", "copyright", "credits" or "license" for more information.
3
>>> import sys; _ = sys.stdout.write("Ja.\n")
4
Ja.
5
>>>

von Ein T. (ein_typ)


Lesenswert?

Arduino F. schrieb:
> Ein T. schrieb:
>> Unter Erwachsenen ist es üblich, die eigenen Behauptungen selbst zu
>> belegen,
>
> Das kann er sicherlich nicht.

Das vermute ich auch -- und wenn, kommen vermutlich nur die altbekannten 
Vorurteile wie Codegröße, Performance und Ähnliches.

> Habe mal einige seiner Beiträge untersucht.
> Er scheint eher ASM zu nutzen.
> Und ASM Programmierer scheinen manchmal irgendwas gegen C++ zu haben.

Ach, manche Menschen haben etwas gegen alles, das sie nicht kennen, und 
auch nicht lernen wollen, weil sie ja was dagegen haben. Ich glaube 
jedoch nicht, daß das an einer bestimmten Sprache liegt, solche Leute 
findet man überall.

von Johannes F. (jofe)


Lesenswert?

Ein T. schrieb:
> Unter Erwachsenen ist es üblich, die eigenen Behauptungen selbst zu
> belegen, spätestens auf ausdrückliche Nachfrage.

Noch einer, der alles auf dem Silbertablett serviert haben will...

Eigentlich sind Vorteile von C doch schon offensichtlich, wenn man die 
Motivation bedenkt, aus der heraus Stroustrup C++ entwickelt hat. Es 
ging im Kern darum, sehr umfangreiche Programme durch Anhebung des 
Abstraktionsniveaus für den Programmierer übersichtlicher zu machen.

Dass die damit einhergehende erhöhte Komplexität der Sprache bzw. deren 
hinzugekommener Features sich nachteilig auswirken kann, wenn es eben 
nicht um sehr große, sondern eher kleinere Programme geht -- die bei 
Mikrocontrollern den Löwenanteil bilden, verglichen mit 
leistungsfähigeren "Plattformen" --, ist für meine Begriffe mindestens 
naheliegend. Binsenweisheit: Wo Licht ist, ist auch Schatten. Hier: 
Höheres Abstraktionsniveau => weniger Hardware-Nähe. Komplexere 
Compiler, die bekanntlich weniger gut optimieren können als fähige 
Programmierer, und auch mehr Potential für Bugs haben, usw.

Siehe z.B. Raspberry Pi Pico C/C++ SDK. Warum wohl sind die Libraries in 
C geschrieben und nicht C++? Man kann das SDK natürlich auch mit C++ 
verwenden, muss allerdings Exceptions und RTTI explizit aktivieren, 
falls man sie verwenden will, per default werden diese C++-Features 
nicht unterstützt.

Es gibt sogar einen Artikel im Forums-Wiki dazu:
https://www.mikrocontroller.net/articles/C_vs_C%2B%2B

Für alle, die ebenfalls zu faul sein sollten, den Text zu überfliegen, 
hier ein paar wesentliche Aussagen davon:

* "Die Sprachsyntax von C++ verschleiert mehr als die von C, womit man 
sich in einem Programm möglicherweise einen hohen, in der Programmierung 
von Mikrocontrollern unerwünschten Overhead ohne konkreten Nutzen 
einhandelt."

* "Die tatsächlichen Implementierungen von C++ bemühen sich weniger als 
die von C, ausführbare Programme (Executables) in der sparsamsten 
möglichen Form zu erzeugen."

* "Mit der Einführung von Exceptions musste in C++ aber auch die 
Leitlinie "You only pay for what you use" verletzt werden. Das heißt es 
entsteht stets etwas Overhead, wenn der C++-Compiler Exceptions 
unterstützt, auch für Programme, die Execptions überhaupt nicht 
benutzen."

Natürlich können bei (sehr) umfangreichen Programmen und insbesondere 
bei High-End-MCUs -- in Mikrocontroller-Verhältnissen gesehen -- auch 
die Vorteile von C++ gegenüber C überwiegen. Dass das der Fall sein 
kann, habe ich auch nie bestritten. Meine ursprüngliche "Behauptung" war 
einzig und allein die Existenz objektiver Gründe dafür, im Bereich der 
Mikrocontroller-Programmierung mit ihren doch verhältnismäßig wesentlich 
kleineren Programmen in C anstatt C++ zu entwickeln.

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.