Mikrocontroller - C oder C++

So sieht das hier auch aus, allerdings mehr zusammengebastelt und angepasst als komplett selber gemacht.

Das mach ich allerdings auch in LaTeX, da gibt es ein paar leere Briefvorlagen, in die einfach nur schnell der Text eingetippt wird und fertig :)

Naja, immer noch besser als bei M$ Word ;) Dokumentation wird hier auch in TeX verfasst, nur beim aktuellen Projekt wird das gerade in ein Wiki geschrieben (wobei ich das auch vielleicht doch in TeX mache und es dann per Script exportiere :)

Und ich dachte, ich waere der einzige. Uebrigens auch einer der Gruende warum ich kein OpenOffice benutze. Die gewohnte Bedienung funktioniert einfach nicht. Und im Text versteckte :x bzw. :wq sehen einfach doof aus.

Nett, aber wenn man mit Leuten wettet, die nie gelernt haben mit vi(m) richtig umzugehen, durchaus verstaendlich.

Gruss, Karsten

--=20 In a world without walls and fences, why do we need Windows and Gates?

Reply to
Karsten Langeloh
Loading thread data ...

Informatiker sind allerdings ebensowenig Softwerker wie Architekten Maurer oder E-Technik-Ingenieure Elektroniker oder Germanisten Dichter sind. Die paar Programmierkurse im Studium reißen da nichts raus. Davon wissen sie nur ungefähr, wovon sie eigentlich reden.

Und haben das mathematische Rüstzeug (gehabt), Hasharrays zu analysieren, verwenden im Ernstfall aber lineare Listen. Und man darf schon froh sein, wenn das Anhängen eines neuen Elements nicht O(n) ist.

--
David Kastrup
Reply to
David Kastrup

Das erinnert mich an eine Begebenheit: Ich habe in einer Firma mal einen getroffen, der sich für einen guten Unix Hacker hielt (aber keiner war). In dem Projekt musste in vielen Dateien ein Klassenname ersetzt werden (das war noch zu Zeiten, als es in Eclipse noch nicht all die schönen Java-Refaktoring Möglichkeiten gab). Der wollte das tatsächlich manuell einzeln pro Datei per vi machen. Hat dann nicht schlecht gestaunt, als ich das per Ultraedit mit einem Knopfdruck erledigt habe :-)

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

In der Praxis zahlst du aber auch ein paar Byte für RTTI und Mehrfach- vererbung, auch wenn du sie nicht nutzt.

Der Uni-Softwerker lernt allerdings auch nicht, mit Ressourcenmangel umzugehen. Der lernt vielmehr, dass man keine konkreten Klassen, sondern nur Interfaces zu verwenden habe, und bitteschön alles über abstrakte Factories anlegen solle, und selbstverständliche alle Methoden virtuell und solchen Unfug.

Möglicherweise hilft der Compilerbauer-Kurs. Der ermöglicht es zumindest mir, recht gut abzuschätzen, was der Compiler aus meinem Code machen wird.

IBTD.

Keiner braucht *wirklich* alle Features von iostreams, insbesondere das Locale-Gedöns. Das gibt's zwar bei printf prinzipiell auch, aber da ist der Stand der Technik schlicht so, dass das bei Nichtbenutzung rauszu- optimieren in C einfacher ist als in C++.

Stefan

Reply to
Stefan Reuther

So übel ist der Ultra-Edit nun wirklich nicht, habe da mal ein paar Projekte mit programmiert. Der Support ist hervorragend, ich hatte mal wegen direkten ssh Zugang aus dem Editor heraus angefragt, zum Zugriff auf das Zielsystem. Ich bekam in nicht einmal 36 Stunden eine Version gemailt (ftp war vorher schon drin und ich wette, die verwendeten Libs enthielten schon ssh). Übrigens gibt es davon mittlerweile eine Version für Linux, nach massiven Kundenwunsch. Naja, das müsste ich nicht unbedingt haben.

73 de Tom
--
DL7BJ * DL-QRP-AG #1186 * AGCW-DL #2737 * DARC OV I19 * http://www.dl7bj.de
Reply to
Thomas 'tom' Malkus

Bei WinMobile und andere Konsorten sicherlich. Beim iPhone nicht, die Schriftgrößen sind sauber angepaßt und die Texte sind gestochen scharf. Und die Tasten fürs Wählen sind garantiert mehr 3x so groß wie bei Deinem Telefon.

Ist doch was anderes, wenn die Oberfläche für ein Telefon erstellt wird und nicht einfach vom Desktop zusammengeschrumpft wird ;-).

Übrigens gehen viele Argumente gegen das iPhone in Richtung zu geringe Auflösung, da dort ja nur 480x320px vorhanden sind, während die anderen Geräte bei gleicher Größe mit 800x480px aufwarten. Wo die Standardschriften jetzt kleiner sind, darfst Du mal raten. 73 de Tom
--
DL7BJ * DL-QRP-AG #1186 * AGCW-DL #2737 * DARC OV I19 * http://www.dl7bj.de
Reply to
Thomas 'tom' Malkus

Stefan Reuther schrieb:

Wie sollte ein C-Compiler, der den Aufruf der Funktion printf findet, die Funktion printf selber optimieren, die ja zur Laufzeit den angelieferten Formatstring parst, optimieren? Das geht nur über abgestrippte Funktionen, die nicht den vollen Umfang der Formatierung beherrscht, und die der Entwickler dann von Hand auswählt. Demgegenüber ist es für den optimierenden C++-Compiler sehr viel einfacher, aus den Operatoren nur diejenigen in den generierten Code einzubinden, deren Typen auch wirklich verwendet werden.

Bernd

Reply to
Bernd Laengerich

Am Ende ist es die gesamte Schirmgroesse, die Aufloesung ist beim iPhone IMHO schon ok. Wenn Du lange Emails drauf lesen musst ist es mit jedem dieser Foenchen ein Kreuz, jedenfalls wenn man ueber 40 ist. Da ziehe ich mein Netbook vor.

--
Gruesse, Joerg

http://www.analogconsultants.com/
 Click to see the full signature
Reply to
Joerg

Ich habe mir _DAMALS_ zu Zeiten von Lattice-C, BDS-C und Turbo-C auf Z80/8086 ein gestripptes printf() geschrieben, das nur %d %c %s und %x konnte. Benutze ich heute noch manchmal. Ist etwa eine Seite Programm.

Demnaechst wird der ARM/gcc das auch noch kennenlernen.

Gerhard

Reply to
Gerhard Hoffmann

Nö, kann ich nicht sagen. Ich lese lange E-Mails und auch PDF Dateien. Einfach mit 2 Fingern zoomen und einstellen, die Schrift geht so groß, das man die gut lesen kann. Man kann sich Texte auch vorlesen lassen, das funktioniert sogar ganz gut, hört sich aber manchmal lustig an. Und ja, ich bin auch über 40. Du kannst das auch nicht mit dem Netbook vergleichen, aber um eine Mail schnell zu lesen, eine kurze Antwort zu schreiben oder mal ein Fax zu lesen ist das schon gut gelöst.

73 de Tom
--
DL7BJ * DL-QRP-AG #1186 * AGCW-DL #2737 * DARC OV I19 * http://www.dl7bj.de
Reply to
Thomas 'tom' Malkus

Warum sie das manuell per vi machen weiß wohl niemand. Es wäre auch mit einem einzigen Befehl im vi gegangen.

bufdo! 1,s/NameAlt/NameNeu/g

Aber wie mit jedem Werkzeug... man sollte es schon zu benutzen wissen :-)

Reply to
Klaus Rudolph

Soweit ich das über die Release-Notes quer gelesen habe wird im gcc versucht die Aufrufe mit konstanten Formatstrings schon beim Compilieren zu parsen. Vielleicht machen die dann auch schon eine Vorauswahl der benötigten Lib-Teile. Das ist aber schon ziemlich viel Magie des Compilers um die eingebauten Schwächen von interpretierendem Code zu optimieren. In C++, wie schon geschrieben, ist der Hexentanz nicht erforderlich weil schon in der Sprache an sich die Codeerzeugung nur dann erfolgt, wenn entsprechende Teile auch instantiiert werden.

Und warum nimmst Du dann nicht gleich C++ und verwendest eben genau iostream und wirst feststellen, daß dann genau nur noch das auftaucht, was man auch braucht? Vorausgesetzt, die Lib gibt das auch in dieser Weise her, aber davon würde ich bei modernen Compilern und normal guten Libs eigentlich mal ausgehen.

In C nun das Verhalten "nachzubauen" erscheint mir persönlich zu aufwendig. Ich glaub ich werde mir gleich mal den arm-gcc compilieren und es ausprobieren. Oder morgen oder so :-)

Reply to
Klaus Rudolph

Kannst Du das belegen? Bei Mehrfachvererbung gibt es dann zusätzlichen Code, wenn ich explizit einen Pointer-Cast auf die niedrigere Basisklasse mache. Dann muß der Compiler dafür sorgen, daß ich einen offset auf den anderen "Vater" der Klasse bekomme. Das ist aber in C auch nicht anders, wenn ich relativ in Strukturen navigieren will. Bei einfachen Zugriffen in die Klassen werden die Offset aber in der ersten Optimierungsstufe wieder aufgelöst, so daß direkte Zugriffe wieder ohne Zusatzkosten erfolgen können. Nur wenn das Ergebnis des cast (der Pointer) an eine anderen, nicht lokalen Aufrufer weiter gereicht wird, dann kommt die Berechnung zwingend zum Tragen. Ansonsten habe ich noch keine Fall konstruiert, wo ich die zusätzlichen Bytes bekomme.

Wenn ich RTTI haben will, weil ich dynamische Casts brauche, dann müßte ich auch in Assembler oder C eine entsprechende Information in meine Struktur/Datenfeld packen. Verwende ich aber keine dynamischen casts, so brauche ich auch keine Typ-Id und somit gibts auch keine zusätzichen ID-Bytes in den Objekten und auch keinen Code, der diese Information nutzt. Ob der Compiler nun alle Instanzen mit RTTI Information versieht oder nur die, die potentiell einem dynamischen cast unterworfen werden, hängt vom Compiler/Optimierer ab.

Also gilt doch auch hier: Was ich nicht brauche, bezahle ich auch nicht. RTTI läßt sich bei jeden Compiler abschalten.

Na ja, es hilft vielleicht eine Idee zu bekommen, was passieren könnte. In einem konkreten Projekt wird man sich die Ausgabe seines Compilers doch besser mal selbst ansehen. Denn nichts ist schlimmer als irgendwelche falschen Annahmen über die Qualität des Compilers zu machen. Wenn ich sehe, welche Klimmzüge so mancher (Ex-)Kollege zu "Optimierungszwecken" hinlegt... au weh! Letztlich hilft der Blick in die Object-Files und auf jeden Fall sagt der Profiler am Projektende mehr, als alle Vermutungen vorher gebracht haben.

Ich möchte mal vermuten, daß die wenigsten Linker in der Lage sind unnötigen Library Code zu entfernen. Der Compiler müsste dazu schon mal sammeln, welche Codeteile den aus der Lib gebraucht werden. Da printf zur Laufzeit! parst, erscheint mir da die Aufgabe schwierig, auch wenn z.B. der gcc zumindest aus konstanten Formatstrings einige Informationen zusammen sammelt. Ob es aber reicht um damit final wirklich unnötige Formate/Datentypen zu entfernen, ist mir noch nicht klar. Aber es ist schon massiver Aufwand auf Compilerseite nötig. In C++ ist es Standard unnötige Template-Instanzen gar nicht erst zu bauen. Wie auch, wenn man keine Informationen hat :-)

Reply to
Klaus Rudolph

Das Problem erledigt sich sowieso gerade mit den LED-Micro-Beamern:

formatting link

Dann muß man in der Straßenbahn nicht nur nur Schantalls erotische Erlebnisse mithören, sondern kann an der Decke auch die Videos von Kevin angucken ;-)

Aber damit wäre ein Problem der Miniaturisierung - kleine Geräte sind klein - gelöst. An der Eingabe mittels Gesten und Bewegungen wird auch schon gearbeitet. Es gibt dabei aber ein paar Probleme[0] ;-)

Falk [0]Eine bestimmte Aktion ließ sich nur durch länger dauerndes "Schütteln" des Gerätes mit hohen Beschleunigungswerten auslösen. Bei der Vorführung lag der Sall am Boden vor Lachen und der Vorführende hatte ordentlich rote Ohren.

Reply to
Falk Willberg

Diese Aufgabe kann man vergleichsweise einfach auf den Linker abwälzen. Zum Beispiel über weak symbols. Sowas in C++ zu veranstalten braucht deutlich mehr Aufwand, insbesondere, da die iostreams templatisiert sind, und man somit keine Symbole zum weak machen mehr hat.

Ich weiß ja nicht, wie umfangreich du dir printf vorstellst, aber gegen die 50k wlocale.o, die "unsere" C++-Bibliothek hier ranzieht, ist jedes printf klein.

Natürlich ist es theoretisch einfacher, nur die benötigten Typen einzubinden. Es bringt nur in der (meiner) Praxis nicht den gewünschten Effekt.

Stefan

Reply to
Stefan Reuther

Ja, fuer eine gelegentliche Email geht es. Nur reicht das bei mir unterwegs nicht. Bei manchen bleiben die Augen auch nach 40 so wie sie waren, z.B. konnte mein Uropa die Tageszeitung noch mit 100 ohne Brille lesen. Ich leider kaum noch :-(

--
Gruesse, Joerg

http://www.analogconsultants.com/
 Click to see the full signature
Reply to
Joerg

Vermutlich wird es immer irgendwelche Konstrukte geben, die den Importfilter von lyx auflaufen lassen. Dafür ist latex einfach ein zu weit verzweigtes Projekt. Im Normalfall werden jedoch fast alle Befehle erkannt und die nicht interpretierbare Ausnahmen als ERT ("Evil Red Text") dargestellt.

Zwischendurch gab es im Projekt mal eine Tendenz, latex nur als Ausgangsfilter anzusehen. Das muss wohl um 2003 rum gewesen sein. Davon ist man allerdings schon längere Zeit wieder ab und bedient auch die Sicht das Lyx ein Eingangsfilter für latex ist.

------

--
Kai-Martin Knaak
Öffentlicher PGP-Schlüssel:
 Click to see the full signature
Reply to
Kai-Martin Knaak

Und um das zu tun, macht er (jedenfalls in einigen Architekturen) die vtbl-Einträge für alle Klassen zwei Worte groß (Funktionszeiger plus this-Adjust), obwohl bei Einfachvererbung eins reichen würde.

Da der Compiler nicht weiß, ob du nicht in einem anderen Modul doch einen dynamic_cast machst, baut er diese Informationen in alle Klassen ein.

Mit abgeschaltetem RTTI ist's kein richtiges C++ mehr.

Allerdings kann man typischerweise auch Exception Handling abschalten, und dann generiert das ebenfalls keinen Code mehr.

Das bisschen printf-Formatstring-Parsing ist gegenüber dem Rattenschwanz, der an iostreams anhängt, vernachlässigbar.

Um's mal deutlich zu machen: die Beschreibung der arithmetischen Inserter in C++ lautet [ISO 14482:1998, 27.6.2.5.2p1] | Effects: The classes num_get and num_put handle locale dependent | numeric formatting and parsing. These inserter functions use the | imbued locale value to perform numeric formatting. The formatting | conversion occurs as if it performed the following code fragment: | bool failed = | use_facet(getloc()). | put(*this, *this, fill(), val). failed();

In anderen Worten: hier wird zum einen 'getloc()' aufgerufen, was ein Locale-Objekt abfragt, und zum anderen ist das ganze templatisiert.

Klar, da oben steht "as if", und man muss das nicht machen, sondern kann sich sicherlich auch irgendwie verrenken, um das locale-Zeug außen vor zu lassen, wenn es sonst nirgends benutzt wird. In der Praxis wird das nur eben nicht gemacht. Oder die Library wird andererseits soweit abge- kürzt, dass sie zwar schön klein wird, aber dann wichtige Dinge fehlen (z.B. wcout).

printf macht hingegen im Wesentlichen zum Ausgeben von Zahlen while (n != 0) *--p = table[n % base], n /= base; Fertig.

Stefan

Reply to
Stefan Reuther

Joerg Wunsch :

Gut, bei mir reihen sich auch die Kriterien Qualität und Übersichtlichkeit zur leichten Wartbarkeit neben die Kompaktheit. Das Ding soll funktionieren, und das möglichst nicht nur heute.

Aber dann stelle ich gern dumme Fragen - das schützt manchmal vor Überraschungen, bzw. fällt man nicht so leicht aus allen Wolken bei so den Abgründen, die der schnöde Alltag kaschiert.

Gerade fand ich in dem hier irgendwo verlinkten "C-Hasser in 10 Tagen" von Henning Thielemann die bezeichnende kleine Strophe zur Weiterführung:

| Niklaus Wirth hat im März, 1995, in einem Vortrag an der Universität | Klagenfurt das Phänomen "Software-Chaos" analysiert. Er hat darauf | hingewiesen, dass die immer komplizierter werdende Software gar keine | Notwendigkeit darstellt, vielmehr mit dem Verlust gewisser | ingenieursmäßigen Fähigkeiten - wie etwa das Gefühl für Effizienz und für | Einfachheit - zu tun hat.

15 Jahre später hat sich vielleicht die Gewichtung etwas verschoben, aber vom Prinzip her finde ich das eine korrekte Beobachtung. Und einen Beweis fand ich ausgerechnet mit einem Blick zur IT-Theorie, wo es dann nicht der Verlust von Ingenieursmäßigem, sondern eher von Wirklichkeitswahrnehmung in einem weiterem Sinne ausdrückt.

Wenn eine Geschichte von Software dargestellt wird, mit den Milestones brav über die Jahrzehnte aufgereiht, dann hinterlässt es mir ein flaues Gefühl über ein massives Wirklichkeitsdefizit im Intelligenzturm, wenn ein elementares Maschinenprinzip schon nicht mehr die Rede wert zu sein scheint. Erst mit Einführung des Maschinenelements 'Stack' war es möglich, die notierten Algebrazeilen auch so zu benutzen, wie man das intuitiv erwartet (vor allem re-entrant - wenn ich den Beleg nicht ganz vergessen habe, sollten das Maschinen von Borroughs gewesen sein, Anfang der 1960er, wo man das installierte).

Bei solcher Art von Defizit werden die wichtigen Aspekte einer korrekten Beschreibung zwischen den Fingern zerrinnen. So wird dann eine Nabelschau der Szene draus, wo historische Stationen angekündigt waren.

Diese Art großzügige Geste, das hat etwas Symptomatisches, das ist mein Eindruck dazu.

Es gibt noch ein Beispiel hierzu. So war man in diesem Intelligenzturm wohl kaum je gewillt, die Methoden der Linguistik auch nur peripher zur Kenntnis zu nehmen, die seit den 1930er Jahren eine präzise Beschreibung ermöglichen, wenn immer wieder einmal das Geplänkel losging, wie es denn um die Relation von natürlicher Sprache zu Programmiersprachen bestellt sei. Nachdem mich das interessiert (und ich dazu noch viel mit nicht-algebraischer Notierung hantierte), fiel mir das recht deutlich auf.

Nicht, dass ich nun das Stierlen in der Praxis irgendwie aufhalten hätte wollen, aber diese Art von gravierenden Kategorialfehlern scheinen mir auch bis in die Praxis der wahre Begleiter zu sein - dazu natürlich auch die Bereitschaft, mit spaßigen bis sarkastischen Durchhalteparolen auf dem Planet der Unvollkommenheiten daraus doch das Beste zu machen. Ich finde es nur schräg, wenn so dann ganz aus dem Blick gerät, dass man sich in wichtigen Dingen eigentlich ziemlich massiv etwas vormacht, mit der Art und Weise, wie man sich ans Werkzeug klammert, das eher nur zufällig den Stand der Technik repräsentiert.

Es spielt gewiss die psychische Schiene eine starke Rolle: Produktiv kann man mit dem Werkzeug nur sein, wenn man es elementar verinnerlicht. Wahrscheinlich wird man es dann auch ebenso vehement verteidigen. Nicht dass das nun schlecht wäre, so ist eben der Lauf der Dinge, aber man könnte gelegentlich daran denken, dass dies eher so etwas wie ein zufälliger historischer Stand ist.

Ich hatte noch versucht, knapp ein paar Argumente herauszuziehen, die eben das widerspiegeln, dass die korrekte Sprache über das, was man da wirklich macht, schwierig wird, nämlich, genaugenommen endlos zu tricksen und zu basteln - als da einem ja das neuere, viel ausladendere Werkzeug in strammer kognitiver Dissonanz wiederum als etwas ganz anderes verkauft wird, so etwas wie die ultimative Blüte der rettenden Abstraktion usw.

Es gibt immer wieder zu staunen. Gut, ein andermal ist man dann wieder produktiv, da kommt man dann da nicht dazu. In meinem Fall hatte ich noch den Blick anzubieten gehabt, den eine einst intensive Gewöhnung an ein chamäleonartiges Stack-Monster ermöglicht. Damit fällt mir die Distanz leichter. (Und ich mach auch gerne noch Werbung dafür - aber das ist wie mit dem Fahrradfahren, Spaß macht das erst, wenn man sich ein wenig die Muskeln antrainiert hat.)

Reply to
Ewald Pfau

Das ist ein Euphemismus. I.a. bekommt LyX nicht einmal seine eigenen LaTeX-Exporte verlustfrei reimportiert, und deren Inhalte sollte es ja kennen.

ReLyX ist eine unabhängig gewartete Applikation und hat von den Interna von LyX keine Ahnung.

--
David Kastrup
Reply to
David Kastrup

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.