Oder sollte der Daubert das ernst meinen ?
Geizhals » Forum » Programmierung » Richtige Programmierer meiden "C" (46 Beiträge, 610 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.  Re: Richtige Programmierer meiden "C"  (*wolfman* am 22.03.2005, 15:32:44)
.  Re: Richtige Programmierer meiden "C"  (thE am 22.03.2005, 15:44:24)
..  Re(2): Richtige Programmierer meiden "C"  (Speising am 22.03.2005, 16:05:47)
...  Re(3): Richtige Programmierer meiden "C"  (thE am 22.03.2005, 16:08:44)
.  Re: Richtige Programmierer meiden "C"  (adhoc am 22.03.2005, 15:45:26)
.  Das ist der Output  (Wizard51 am 22.03.2005, 17:27:10)
.  Re: Richtige Programmierer meiden "C"  (Sir Hondo am 22.03.2005, 20:17:50)
..  *ergänz*  (gepeinigter_aon_neukunde am 22.03.2005, 20:24:26)
..
Oder sollte der Daubert das ernst meinen ?
22.03.2005, 20:47:58
seht mal seinem Pascal/c-Vergleich...

Das Lustige dabei ist, daß sein C-Programm schlichtweg falsch geschrieben ist.
Man kann ja noch verstehen, daß er extra
static char temp [256];


einführt - damit sein C-Programm genauso limitiert ist wie Vanilla-Pascal (das erlaubt nur Strings bis 255 Zeichen, weil als erstes im String die Länge gespeichert wird - und das ist eben ein Byte). [das richtige wäre wohl ein strdup() gewesen: Das fordert gleich viel Bytes an wie übergeben wurden, belastet den Stack net, ...]

Viel seltsamer find' ich seine Fehler im Source:

  1. Sein dämliches C-Beispiel ist net Locale-Aware. toupper() [ANSI C] hätt' ihm die Hacke erspart und könnte je nach Encoding deutsche Umlaute, Kyrillischen Text umwandeln, ... und wär' einfacher gewesen. Wahrscheinlich hat er's extra so gemacht, damit's in Pascal einfacher aussieht obwohl man in Wirklichkeit _WEIT_ mehr Aufwand investieren müßte.
  2. sein temp[i]=0 hätt' er sich sparen können, indem er die Schleife anders baut.
  3. return temp; ist nun aber wirklich net nur ein Schönheitsfehler sondern _BUG_. Niemals ein return aus lokalen Variablen. Er hat sich mit einem static geholfen, damit das trotzdem klappt - nur verhaut er damit den Stack und hält sinnlos Speicher belegt. Kurzum: Er hat's _net_ überrissen.



mein Vorschlag für das C-Programm wäre


char *mein_upper(char *s)
{
        char *p, *temp;
        p=temp=strdup(s);

        while ( *p != '\0' ) {
                *p=toupper(*p);
                p++;
        }
        return temp;
}


-> Und das kann dann mit jeder bekannten Locale umgehen, wirft nicht sinnlos den ganzen String zur Parameterübergabe und return (wie Pascal es macht), ...

BTW, sogar seni Pascal-Programm ist Schrott.

Denn bei seiner for-Schleife die bis Length(zeile) geht... wird Length(zeile) jedesmal neu ausgewertet. _SEEEHR_ clever und effizient. Boaaaah.

Ich kenn' mich ja auch bei wirklich viel net aus - aber ich bau aus meinem Unwissen keine Webseiten ;-)

[ Dieser Beitrag wurde inzwischen editiert. Die aktuelle Version befindet sich hier. ]
Antworten PM Alle Chronologisch Zum Vorgänger
 
Melden nicht möglich
.  Re: Richtige Programmierer meiden "C"  (West am 23.03.2005, 08:48:50)
..  Re(2): Richtige Programmierer meiden "C"  (ashley77 am 24.03.2005, 13:42:16)
...  Re(3): Richtige Programmierer meiden "C"  (West am 25.03.2005, 07:28:57)
...  Re(3): Richtige Programmierer meiden "C"  (West am 25.03.2005, 07:31:54)
.  Re: Richtige Programmierer meiden "C"  (shodan am 23.03.2005, 14:33:35)
.  Re: Richtige Programmierer meiden "C"  (ashley77 am 24.03.2005, 13:50:14)
.  Re: Richtige Programmierer meiden "C"  (MidiFan am 24.03.2005, 19:28:40)
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung