[...]
Post by Ðlе Ð
trеÑÑhеrPost by Rainer WeikusatPost by Ðlе Ð
trеÑÑhеrPost by Rainer WeikusatMan kann aber keine "typischen Bugs" auswerten. Man kann Statistiken
ueber Fehler in irgendwelchen Code-Mengen anlegen. Damit bekommt man
historische Information darueber, was die Autoren dieses Codes zum
fraglichen Zeitpunkt wie haeufig falsch gemacht haben.
[...]
Post by Ðlе Ð
trеÑÑhеrPost by Rainer WeikusatPost by Ðlе Ð
trеÑÑhеrDas ist also schonmal sehr hilfreich, wenn man historischen Code
wartet, womit wir schon einmal einen Anwendungsfall haben.
Falls jemand eine automatische/ zuverlaessige Methode haette, alle
Fehler in irgendwelchem 'historischen Code', den Du aus sonstwas fuer
Gruenden benutzt, zu finden, waare das offensichtlich hilfreich _fuer
Dich_ (sowie eventuelle andere Nutzer).
Das sagt aber per se nichts ueber anderen Code, den ich benutze (oder
sonstjemand) aus.
Ich verwende sicher nicht ganz besonderen Code, der aufgrund seiner
spezifischen Programmierung ausgewählt wurde. Das gibt Anlass zur
Vermutung, dass mein Code nicht ganz untypisch ist, das Problem also
anderswo ebenso auftritt.
Jeglicher Code, den Du (oder sonstwer) verwendet, ist in jedem Fall ein
sehr spezieller und sehr kleiner Teil der Menge von 'Code' die auf
dieser Welt bereits existiert und in Zukunft existieren wird. Einen
sachlichen Anlass, zu vermuten, das das, was man zufaellig kennt, ein
repraesentatives Beispiel ist, gibt es nicht. Man sollte vielmehr das
Gegenteil annehmen oder vielleicht besser ueberhaupt gar nichts. Wissen
laesst sich nicht durch Spekulation gewinnen.
[...]
Post by Ðlе Ð
trеÑÑhеrPost by Rainer WeikusatPost by Ðlе Ð
trеÑÑhеrPost by Rainer WeikusatPost by Ðlе Ð
trеÑÑhеrIch sehe auch nicht, dass explizite Typwandlungen den Code schlechter
lesbar machen.
Je mehr Text, desto mehr Arbeit ist noetig, um ihn zu lesen, und je mehr
man verstehen muss, desto mehr kann man falsch verstehen.
Steile These. Und sie ist auch nicht logisch konsistent: Natürlich muss
man mehr lesen. Aber man muss nicht "mehr" verstehen, sondern man
bekommt die zum Verständnis erforderliche Information lokal angeboten.
Wenn man mehr Text lesen muss, muss man auch mehr Text verstehen. Oder
zumindestens muesste man :-).
So what? Da die Typumwandlung i.allg. redundant ist, bleibt die Menge
des zu verstehenden Inhalts konstant. Man muss also nicht *mehr* verstehen.
Inhalt ist das, was man bekomment, nachdem eine Nachricht dekodiert
wurde. Falls sich nach Dekodierung, dh, nach 'verstehen' der Nachricht
in ihre gewaehlten Repraesentation heraustellt, dass 80% Wiederholungen
von "Das hier haette nicht dekodiert werden muessen, wenn wir es nicht
mit dem inhaltstragenden Teilen zusammengemengt haetten" waren, hat man
einen Haufen Zeit verschwendet.
Post by Ðlе Ð
trеÑÑhеrMit dem Unterschied, dass man die relevante Information lokal bekommt,
ohne sie erst suchen zu müssen (ein Argument, dass Du beharrlich
ignorierst).
Ich halte technisch sinnfreie Wiederholung eines Typs in prinzipiell
unbegrenzten Zahl von Programmzeilen nicht nur fuer 'nicht relevant'
sondern ausserdem fuer schaedlich: Zu dem bereits im letzten Absatz
erwaehnten kommt noch hinzu, dass man im Falle einer Typaenderungen
einen potentiell massive Menge von redundanten Casts aendern muesste.
Post by Ðlе Ð
trеÑÑhеrPost by Rainer WeikusatPost by Ðlе Ð
trеÑÑhеrUnd Typumwandlungen sind normalerweise relativ selten sind im Vergleich
zu normalen Zuweisungen. Ihre explizite Angabe vergrößert daher nicht
signifikant den Code.
Eine Ameise in der Wohnung ist keine signifikante Belaestigung. Wie
kommt es bloss, dass eine Ameisenstrasse vom Garten zur Speisekammer
eine signifikante Belaestigung ist, obwohl sie duch nur aus Ameisen
besteht, die selber keine sind?
Antwort: Die Masse machts.
Dass es sich bei den durch Warnungen induzierten Codeänderungen um eine
in der Summe signifikante Vergrößerung der Codesize handelt, hätte ich
dann doch gerne mal belegt.
Versuchen wir es mit einem anderen Beispiel: Wenn jemand Waren im Wert
von 1DM klaut, schaedigt er niemanden signifikant.
Sollte man das also erlauben oder sogar gutheissen?
Post by Ðlе Ð
trеÑÑhеrPost by Rainer WeikusatPost by Ðlе Ð
trеÑÑhеrPost by Rainer Weikusat##include <stdio.h>
int main(void)
{
int i = -1;
short c;
c = (unsigned char)i;
printf("%d\n", c);
return 0;
}
---------
Ist obiges ein Voodoo-cast, den jemand versehentlich oder nachlaessig
falsch gemacht hat, oder sollte das passieren?
Dazu muss man den Kontext wissen, den Du leider nicht angegeben
hast. Davon abgesehen, ist ein "c = (unsichned char)i" wohl nicht so
schnell "versehentlich" geschrieben wie ein "c = i".
Beide Zeilen lassen sich gleichschnell von einem Ort A zu einem Ort B
kopieren. Und zusaetzlicher Code, der kein offensichtliches
Fehlverhalten verursacht, wird grundsaetzlich nicht geaendert.
Ich pflege meine Programme nicht zu kopieren, sondern selbst zu
schreiben.
Andere Leute (und zwar ziemliche Massen davon) pflegen existierenden Code
zu kopieren und nur insoweit unbedingt erforderlich zu aendern. Falls
das ein Problem ist, mit dem Du Dich noch nicht auseinandersetzen
musstest, moechte ich das "beneidenswert" nennen, aber sogar in einem
"peer reviewten" Grossprojekt wie Linux findet man Code, der mit samt
Kommentaren woandershin kopiert wurde und woran in Folge nahezu alles
ausser dem Kommentar geaendert wurde (genaue Fundstelle habe ich
vergessen, war "irgendwas-ARM", IXP425 denke ich).
Post by Ðlе Ð
trеÑÑhеrMein Beispiel ist Dir übrigens irgendwie verlorengegangen...
#define FOOBAR
#include "voodoo.h"
#include "foo.h"
#include "bar.h"
#ifndef BARFOO_T
#include "foobar.h"
#endif
void kunkle(int a) {
voobar = a;
}
int lenku(void) {
return voobar;
}
Die Zuweisung kannst Du da auch sicher ohne weiteres von A nach B
kopieren. Ob sie dann noch so funktioniert, wie sie soll, bleibt
fraglich.
Es gibt Gruende, warum solche Verwendung von Variablen mit externer
Bindung fuer schlechten Stil gehalten wird ...