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.
> 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.
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)?
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
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.
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"? ;)
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
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)
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 :)
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.
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
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.
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.
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...
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/
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?
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
>In welcher Sprache sind Python-Interpreter wohl geschrieben?
Was ist denn ein Python-Interpreter?
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.
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
Johannes F. schrieb: > (C++) hat sich halt bislang für AVR ... nicht wirklich durchgesetzt. Du ignorierst Arduino. Das hat sich durch gesetzt.
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
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.
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
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.
Was hat denn dieser lächerliche VHS-Kurs in einem Stuidum verloren?
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.
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.
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.
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.
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
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
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
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.
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.
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 | >>> |
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.