FORTH 1: (was Re: (Atmel-) Mikrocontroller: Interrupts und "lange" ISRs
Aug 15, 2019 Last reply: vor 7 Jahren 129 Replies
H
Hanno Foest
Am 22.08.19 um 00:34 schrieb Johannes Bauer:
Nein. Wenn du Assembler schreibst, dann schreibst du Assembler. Wenn du einen Compiler Assembler schreiben läßt, dann kompilierst du. Das Kompilat handzuoptimieren ist dann noch mal was anderes.
Am Ende kommt zwar immer Assembler raus, aber der Vorgang ist ein anderer. Jedenfalls, wenn man die Bedeutung von "etwas schreiben" nicht zur Unkenntlichkeit verbiegen möchte.
Sicher. Und wie wurde der im Einzelfall erzeugt?
Hanno
Didn't find your answer? Ask the community — no account required.
Du hast leider nicht richtig von Anfang an gelesen/verstanden. Alles in ...
J
Johannes Bauer
Naja, das glaube ich nicht so ganz. Im Business-Umfeld, wenn man mal von embedded absieht, wird ja wohl auf der einen Seite .net gemacht und auf
Ich bitte dich.
Sind denn dann folgerichtig eigentlich nicht alle Programmiersprachen, in denen man bugbehafteten Code schreiben kann, deiner Argumentation folgend, defekt?
Die Argumentation ist mir ein bisschen zu hilflos. Jedes Werkzeug hat
Anwendungsfall das geeignetere Werkzeug ist. Beides hat seine Daseinsberechtigung.
Microsoft hat mit Windows einige Sachen echt richtig gemacht: Zum
ist nicht von der Hand zu weisen.
Programmiersprache eben eine Wahl ist, bei der mehrere Dimensionen eine Rolle spielen. Google-Ingenieure wissen sehr gut, dass korrektes C viel schwieriger zu schreiben ist, als andere Programmiersprachen. Und
anderen Security-Bug in Kauf nehmen -- wohlweislich, dass Google ihre Security sehr gut im Griff hat und extrem flott Patches ausrollen kann
Vergleiche anzustellen, aber die Zahlen sind gefaked, die da angezeigt werden. Ist mir bei Stepstone und jobs.de passiert dass "Java Entwickler" und ".net Entwickler" diesebe Anzahl an Treffern haben (irgendwas hohes Vierstelliges), da ist was faul. Und die Seite von der Arbeitsagentur macht bei 200 Ergebnissen dicht.
Also kann ich's nciht objektiv belegen, aber im Enterprise-Umfeld spielt C so gut wie keine Rolle.
Ah, ja den kannte ich schon. Ist ein guter Talk.
Senkel. Dass man z.B. Altium Designer nicht mehr kaufen kann, sondern mieten muss. Ekelhaft.
Nein, da hast du mein Argument definitiv in den falschen Hals gekriegt.
entscheiden sollte, was das geeignete Werkzeug ist. Damit es halt nicht immer der Hammer ist, den man verwendet. Auf genau solche dogmatische,
her, da finde ich Rust teilweise schon sehr anstrengend.
Neue Programmiersprachen sind in den letzten 10 Jahren wirklich
mal vor Jahren D programmiert und fand das wirklich gut, aber wenn da
schwebt, will ich das nicht machen. Mono sieht auch schick aus, aber wer
Lizenzstreit lostritt, wie es bei Oracle/Java der Fall war.
Man muss aber schon auch dazusagen, dass selbst bei der ganz normalen alten C-Programmierung sowohl die Werkzeuge extrem viel besser geworden sind als vor 10-20 Jahren und damit auch die Bugvermeidung deutlich
EXTREM gut.
Aber man muss sie halt nutzen und zu nutzen wissen. Und zwar idealerweise von Anfang an, weil wenn du erst drauflosentwickelst und nach 50kLOC dann den ASAN anwirfst, wirst du vermutlich nicht mehr froh.
Johannes
H
Hergen Lehmann
In der Praxis: Nein. Zum einen ist der von einem optimierenden Compiler erzeugte Code oft nur sehr mühsam menschenlesbar. Zu anderen besitzt ein guter Compiler derart viel Wissen über den internen Aufbau der Ziel-CPU und die optimale Befehlsreihenfolge zur optimalen Ausnutzung der Parallelverarbeitung, das ein Mensch da nur noch mit Versuch-und-Irrtum mithalten kann.
Man sich das für kurze, ganz besonders performancekritische Codeabschnitte antun, aber nicht für ein vollständiges, nicht-triviales Programm.
Hergen
J
Johannes Bauer
C ist keine Entwicklungsumgebung.
C ist eine Programmiersprache.
Von jemandem, der Arduino für eine Programmiersprache hält, kann man wohl nicht erwarten, den Unterschied zwischen den Zweien zu kennen.
Viele Grüße, Johannes
J
Johannes Bauer
Hmmm. Naja, wie würdest du das denn machen? Hier hat das mal jemand gefragt:
formatting link
Bei Linux wüsste ich gar nicht, wo man anfängt. Also dir fehlen ja alle Language Bindings. Die konnte man glaube ich irgendwie kompatibel deklarieren, wenn ich mich recht errinere. Ich hab mal Win32-API Programmierung gemacht in Delphi und das ging auch irgendwie. Aber das ist echt zu lange her.
Puh, in der Tat. Habe gerade mal nachgesehen, die Professional-Version fängt bei 1.5kEUR an. Die nehmen's aber auch von den Lebenden. Als ich Delphi programmiert habe, das war erst Delphi 1 bis Delphi 3 und später irgendwann glaube ich Delphi 6, da hat das nie mehr als 300. Hm ja Mark oder EUR? Weiß nicht mehr. Die Delphi 6 Personal glaube ich sogar 100, ja EUR bestimmt oder.
Dass sich das so krass im Preis erhöht hat, ist echt schade. Kann eh nicht verstehen dass Borland so verscherbelt wurde.
Viele Grüße, Johannes
J
Johannes Bauer
Hm, ich sehe einen Compiler durchaus als Werkzeug, sich Tipps und Ideen zu holen.
Es ist jedenfalls nicht abzustreiten, dass ich selbst in händisch geschriebenem Assembler zumindest theoretisch die Möglichkeit hätte, jeden Compiler zu outperformen. Dass /ich/ das nicht kann und vermutlich die allermeisten Programmierer ebensowenig, ist schon ein separates Thema.
Händisch geschrieben, wenn du dir den anschaust. Bzw bei OpenSSL schreiben die händisch ein perl-Skript dass dann ASM erzeugt. Also nutzen quasi perl als Makroassembler. Der Curve25519 Code sah auch nach handgeschriebenem Zeug aus. Ich finde jetzt djb's Sachen nicht, aber hier ist ein Beispiel:
formatting link
Viele Grüße, Johannes
H
Hans-Peter Diettrich
C ist nicht *eine* Programmiersprache, sondern gleich mehrere. Neben der klassischen Precompiler-Sprache kommen heute aus der Toolchain noch make und M4 hinzu, mit nochmal eigener Syntax. Zumindest haben mir das eingefleischte C Programmierer so erklärt, als ich sie auf eine mögliche Verbesserung der Toolchain angesprochen habe.
DoDi
A
Alfred Gemsa
Ok, Standardmäßig geht's wohl nicht, but:
formatting link
Zugegebenermaßen, ein Hack, ob's funktioniert?
Verstehe ich auch nicht, ich habe Delphi 7 Prof, das ist zwar schon antik, aber dazu gab's auch noch einige Komponenten für digitale Signalverarbeitung, mehr brauchte ich nicht. (siehe z.B.
formatting link
) Alfred.
H
Hanno Foest
Am 22.08.19 um 01:04 schrieb Johannes Bauer:
Allerdings erwähntest du oben konkret Linux, Android, das ganze Rückgrat des Internet, insofern ist das ein anderes Thema.
Nicht alles, was hinkt, ist ein Vergleich. Wenn du schneiden willst, wirst du wohl ein Werkzeug zum Schneiden brauchen. Aber wer braucht eine Programmiersprache zur Erzeugung von Bufferoverflows? - Wenn du unbedingt einen physischen Vergleich braucht, würde ich eine Schußwaffe ohne Sicherung, aber dafür mit besonders nervösem Abzug nennen: Mag für irgendwen nützlich sein, ist aber im Allgemeinen keine gute Idee. Auch wenn sie billig ist, und Django damit noch eine hundertstel Sekunde schneller.
Aber nur deswegen, weil die Erzeuger der Software nicht die Nebenwirkung der hunderten Milliarden Schäden, die ich im Vorvorposting ansprach, tragen muß. Privatwirtschaftlich ist das natürlich super: Die Schäden trägt die Allgemeinheit, die Gewinne streicht das Softwarehaus ein. Volkswirtschaftlich dürfte das anders aussehen. Erinnert mich an Umweltverschmutzung: Ist nicht eingepreist, interessiert uns nicht, scheiß was drauf.
Wären die Schäden durch Sicherheitsprobleme besser eingepreist, wären Programmiersprachen, die die weitaus größte Kategorie von Bugs ermöglichen, kein Thema mehr. Software dreimal so langsam (und danach sieht es nicht aus)? - Egal! Die Patches gegen Meltdown, Spectre, und der Virenscanner auf dem Rechner schaffen das auch, und das stört keine Sau.
Insofern bin ich mir bezüglich der Daseinsberechtigung, jedenfalls außerhalb von Nischen, nicht mehr so wirklich sicher.
Hanno
H
Hans-Peter Diettrich
Wenn man die Upgrade-Angebote annimmt, bekommt man heute RAD Studio Pro immer noch für 500€. Oder man nimmt Free Pascal und Lazarus für lau, wenn man nur OPL braucht.
Mit Delphi 7 war der Höhepunkt erreicht, danach kam 10 Jahre lang nichts nach. Das Produkt wurde mehrmals verkauft, und die Chefentwickler wurden von Microsoft abgeworben. Seitdem weiß ich nicht so richtig, weshalb sich ein Upgrade für mich noch lohnen würde. Die Inhaber wissen das wohl auch nicht, aber solange sich noch Programmierer und Projekte finden, die niemand auf andere Sprachen umstellen möchte...
DoDi
J
Johannes Bauer
Na dann zerpflücke mal nach Herzenslust. Freepascal liegt im Bestcase etwa 50% hinter dem gcc-Kompilat zurück, bei den Keyschedules sogar etwa
350%.
formatting link
Und jetzt, ja jetzt kommt garantiert nur heiße Luft von dir. Na, wer hat das vorausgesagt, das Ergebnis? Kannst dich noch errinern? Tipp: Es warst nicht du.
Echt so typisch. Immer die Leute die nix liefern können reißen das Maul am weitesten auf und tönen groß rum. Der Allinger und du, ihr seid schon echt vom selben Schlag. Pure Schwätzer, ekelhaft.
Alles Liebe, Dein Johannes
J
Johannes Bauer
Ja aber du schriebst doch, dass man keine Programmierer für was anderes als C findet, und das stimmt doch nicht, weil die ganzen Business-Informatiker eben Java und .net können. Oder hab ich dich da falsch verstanden?
Das ist ein interessanter und richtiger Punkt. Der ist meines Erachtens allerdings nicht nur für sicherheitsrelevante Bugs zutreffend, sondern für alle Arten von Softwarefehlern. Es gibt bei allen Produkten, die ich kaufen kann, eine Gewährleistung nur bei Software ist es gang und gebe, dass der größte dysfunktionale Rotz an den Konsumenten vertickt wird und alle finden das okay. Ich bin da 100%ig bei dir, dass wir eben auch Produkthaftung bräuchten für Software. Im Prinzip gibt es die ja schon in Deutschland, aber in der Praxis ist mir kein Fall bekannt, wo mal jemand zur Rechenschaft gezogen würde.
Allerdings, meine ich, kriegt man eben auch C sicher hin, wenn man das Geld investiert: Zeitaufwand, Testaufwand, Testwerkzeug. Aber klar, wenn Cisco einfach nur ganz schnell den neusten Router auf den Markt wirft, dann ist da halt Softwarequalität offenbar nur sekundär. Wenn überhaupt. Das ist wiederum der Gier der Konzerne geschuldet, Kapitalismus im Endstadium eben.
Virenscanner sind ja eh die größte Verarsche, die ich je gesehen habe. So ein totaler Müll. Die haben es echt geschafft, die Verantwortung den NUTZERN in die Schuhe zu schieben und können dieses ekelhafte "Produkt" Virenscanner sogar noch VERKAUFEN. Das ist echt eine Meisterleistung.
Ja naja, ich mag manche Aspekte von C und andere weniger. Wenn es geht, programmiere ich mittlerweile am liebsten Python. Ganz ohne C könnte ich glaube ich aber nicht, gerade dass es so ubiquitär ist über alle Architekturen und Platformen hinweg, das macht es schon quasi zu einem extrem guten Makroassembler.
Viele Grüße, Johannes
J
Johannes Bauer
BWAAAAAAAAHAHAHAHAHAHA!
Und Make und Automake ist also für dich "C", ja? Spoiler Alert: Das hat beides rein GAR NICHTS miteinander zu tun.
Make funktioniert ohne Autotools. C kompilieren kann ich mit meinem Compiler. Nur weil viele Leute Makefiles benutzen, um C zu kompilieren ist Make noch lange kein C. Genau wie viele Leute einen Editor verwenden, um C zu schreiben, aber der Editor deswegen trotzdem nicht zum Sprachumfang gehört. Das Letztere hast du ja schon bei Arduino nie wirklich verstanden, weil da für dich IDE, Compiler und Flash-Tool alles dasselbe war.
Mein Gott, aber muss man dir das echt erklären? Das ist ja entsetzlich. Ich bin ehrlich einigermaßen schockiert über das schiere Verhältnis zwischen dem deinem Unwissen und deiner Selbsteinschätzung über deinen Wissensstand. Das sind locker 70, 80 vielleicht sogar 90 dB.
Ahahahaha oh Mann, ich fall fast vom Stuhl. Wäre ich da gerne dabei gewesen, wie du deine "Verbessungsvorschläge" garantiert unaufgefordert zum Besten gibst. Wie gerne hätte ich die Gesicheter der eingefleischten C-Programmierer gesehen, wenn der König der Ahnungslosen seine Perlen der Weisheit unter's Fußvolk bringt.
Hast du noch mehr so gute Tipps von unschätzbarem Wert? Rechnet der KdA den vim jetzt auch zu C hinzu? Fragen über Fragen!
Viele Grüße, Johannes
H
Hans-Peter Diettrich
Am 22.08.2019 um 03:14 schrieb Johannes Bauer:
Ja, ich finde Deine Einstellung auch entsetzlich :-(
DoDi
O
Ole Jansen
Am 21.08.2019 um 23:14 schrieb Hans-Peter Diettrich:
In Plain Pascal?
Dort könnte es schon eher sein. Es wäre eine zu vermutende Eigenschaft von Compilern welche objektorientiertes Programmieren unterstützen.
Konstrukte bei denen Programme mit Object Pascal Code zur Laufzeit generiert gibt es z.B. in Delphi Web Script und Innerfuse Pascal Script. Evtl. ist sowas gemeint?
O.J.
V
Volker Bartheld
Welche Programmiersprache bevorzugt denn der C-Hasser? Das war mir bei all dem Geifer jetzt nicht so gleich augenfällig geworden. "Es gibt etliche Sprachen, die sich als Fortführung von C verstehen oder die auf wesentlichen Schwächen von C aufbauen: C++, Java, C# usw. Diese eignen sich allein aufgrund ihrer Syntax gut zum Hassen." brachte mich leider auch nicht weiter.
formatting link
- ah: "Haskell". OK, keine weiteren Fragen.
Allein die Strichpunkte in Delphi fand ich schon immer niedlich. Eigentlich schon immer nach jedem Statement. Nach end. aber nicht. Und beim letzten Statement vor dem end., da darf man, muß aber nicht. Und bei if-then-else (warum eigentlich "then"?) nur nach dem else-Teil. Aber das sind Marginalien.
Vol"Kaum, da ich einen Hammer besitze, sieht für mich alles wie ein Nagel aus"ker
H
Hans-Peter Diettrich
Am 22.08.2019 um 02:46 schrieb Johannes Bauer:
Auf den ersten Blick fällt auf, daß in dem Pascal Code ein UND durch Modulo ersetzt wurde. Vermutlich bügelt der Compiler das aus, es bestätigt aber meine Meinung: Traue keinem Benchmark, den Du nicht selbst gefälscht hast. Vielleicht werfe ich gelegentlich einen näheren Blick auf den Code, was da sonst noch an Bremsen versteckt wurde.
Ja, und nicht so hinterfotzig wie Du :-]
DoDi
A
Alfred Gemsa
Am 22.08.2019 um 11:21 schrieb Volker Bartheld:
Du hast die If-Anweisung nicht durchdacht, sie lautet
IF bedingung THEN anweisung1;
oder
IF bedingung THEN anweisung1 ELSE anweisung2;
sonst nichts.
Falls anweisung1/2 aus mehreren Teilen bestehen, sind diese mit BEGIN und END zu kapseln, also z.B.:
IF bedingung THEN BEGIN anweisungen1 ... END;
oder
IF bedingung THEN BEGIN anweisungen1 ... END ELSE BEGIN anweisungen2 ... END;
Jedes Konstrukt wird am Ende wie üblich mit einem Strichpunkt terminiert, also nicht nur der ELSE-Teil.
Da gips nix kryptisches.
Die einzige Ungereimtheit hast du richtigerweise genannt: Vor dem end. braucht man keinen abschließenden Strichpunkt, aber wenn das alles ist...
Alfred.
J
Johannes Bauer
Wenn du auch nur die geringste Ahnung von Compilern hättest, wüsstest du, dass das zu äquivalentem Code führt. Sogar bei Freepascal:
Wäre dir auch aufgefallen, wenn du es ausprobiert hättest. Aber dafür bist du schlicht nicht in der Lage. Traurig.
LOL, deine Meinung wird von einer falschen Vermutung also bestätigt. Widdewidde wieeeeee sie mir gefällt...
Ja, mach das doch mal, du Spezialexperte. Ich hab mir im Übrigen das erzeugte Assembler von sowohl C als auch Pascal angeschaut. Etwas, zu dem du nicht mal ansatzweise in der Lage wärst.
Schon peinlich, wie einfach es ist, dir immer und immer und immer wieder hochgradige Inkompetenz nachzuweisen. Mach dich nur noch weiter zum Brot, damit auch noch der Letzte merkt, was für ein erbärmlicher Schwätzer du bist.
<3 Johannes
W
Wolfgang Allinger
Da tut sich bei mir nix, PING gemsa-online.de rund 250ms aber ansonsten kütt nix :( Auch nicht von gemsa-online.de, nur leerer screen.
Gruß an den fast neuen Unruheständler :)
Saludos (an alle Vernünftigen, Rest sh. sig) Wolfgang
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.