Re: Microcontroller-Programmierung, wo bekomme ich Resourcen her



Helmut Sennewald wrote:
"Stefan Reuther" <stefan.news@xxxxxxxx> schrieb im Newsbeitrag
C++ macht es einem sehr einfach, Bloat zu erzeugen. Wenn man aber beim
Programmieren sein Hirn zusammennimmt, und die Compilerdoku mit offenen
Augen liest, ist C++ nicht ineffizienter als C. Das einzige Feature, was
auch dann was kostet, wenn man's nicht benutzt, sind Exceptions. Die
kann man bei jedem mir bekannten Compiler abschalten. Übrig bleibt, wenn
man anständig programmiert hat, Code, der äquivalent zum entsprechenden
C-Code ist, aber kompakter zu schreiben und einfacher zu pflegen ist.

nach all der vielen Theorie hier mal eine Erfahrung aus dem
wahren Leben.

Keine Sorge, ich praktiziere ebenfalls. Unter anderem baue ich
Gerätetreiber. Einige davon ersetzen welche, die früher in C geschrieben
waren. Meine Versionen sind bisher eigentlich immer mit 20-50% kürzerem
Quellcode ausgekommen, waren aber als Kompilat nicht größer als die
Originale.

Oder (weil ich mir die Codegröße gerade gestern angeschaut habe) ein
kompletter Dateisystem-Stack, mit ISO9660 Level 3, Joliet, UDF 2.0 sowie
FAT12-FAT32 mit Schreibunterstützung und langen Dateinamen, alles mit
Unicode-Unterstützung, und (unbeabsichtigterweise) neuerdings sogar
Unterstützung für Loopback-Mount: sind 40k Code zuviel dafür?

Wir hatten ein Gerät dessen Firmware in C geschrieben war.
Das Prozessorsystem mit MC68xxx hatte 512kFlash und 1MB RAM.
Das nachfolgende Gerät mit ähnlicher Funktionalität wurde
dann von einem größeren Team von Grund auf in C++ entwickelt.
Am Ende hatten wir doppelten Speicherbedarf bei Flash und RAM.
Dabei hatten die ihre SW-Architektur sogar optimiert(reduziert)
um nicht noch mehr Speicher zu verbrauchen.

Kann passieren. Ich sagte ja, C++ macht es sehr einfach, Bloat zu
erzeugen. Allerdings gibt es sprachunabhängig auch den Second-System-
Effekt. Wenn man ein Feature mal eben in die quasi fertige Firmware
reinhackt (globale Variable + hier und dort noch ein 'if') ist das
natürlich hässlich, aber weniger Code, als wenn man sich beim nächsten
Entwurf gleich vornimmt, Raum für Features dieser Art zu lassen. Ich
würde wetten, dass die neue Firmware auch dann größer geworden wäre als
die alte, wenn sie in C geschrieben worden wäre.

Fazit: Wer wirklich C++ ausnutzt in seiner SW-Architektur,
der sollte auch gleich zum nächst schnelleren Prozessor greifen
und bei RAM und FLASH nicht sparen.

Definiere "ausnutzen". Es gibt genug Features, die nichts kosten:
- Referenzen
- Klassen
- Namensräume
- syntaktischer Zucker, wie Laufvariable im 'for' deklarieren
- Operatorüberladung


Stefan

.



Relevant Pages

  • Re: Microcontroller-Programmierung, wo bekomme ich Resourcen her
    ... und die Compilerdoku mit offenen ... Am Ende hatten wir doppelten Speicherbedarf bei Flash und RAM. ... Inzwischen programmieren sie Firmware nur noch in C++. ...
    (de.sci.electronics)
  • Re: Caching control
    ... |> A feature that would be useful is one where the level of caching can be ... The problem it solves is to avoid flooding RAM with a large number of pages ... of data that are merely going to be written to disk. ...
    (comp.os.linux.development.system)
  • [TOOL] RamSurf for Windows
    ... Explorer cache, cookies, URL history, and typed URLs are stored in RAM and ... written to disk in the first place. ... The package can also be used to assign your temporary files, ... Keep in mind that this feature defeats the auto-save feature in Office and ...
    (Securiteam)
  • Re: Samsung x20 - zurückgeschickt
    ... dient zum Programmieren. ... Genau für diesen Zweck habe ich mir einen HP nx8220 geholt. ... Auf 2 GB RAM ... Next by Date: ...
    (de.comp.sys.notebooks)
  • Re: Since OSX will be moving to Intels...
    ... function is software bound? ... I mean, all it takes for it to function is for RAM to be written to disk at shutdown and if a RAM file exists, load it at startup. ... Strangely enough, it's not a software feature, it's a hardware one, a feature enabled on certain motherboards, to be exact. ... When we had people connected to a VAX and had a power failure, and then when the power came back, all they had to do was log back in and type "EDIT/RECOVER filename" and not one keystroke during an edit session was ever lost. ...
    (comp.sys.mac.advocacy)