|
|
Up |
|
|
  |
Author: Oliver VoßOliver Voß Date: Jul 6, 2007 09:33
Am Thu, 05 Jul 2007 17:32:50 +0000 schrieb Felix von Leitner:
> Für einen demnächst zu haltenden Vortrag suche ich noch schlagkräftige
> Argumente, wieso C++ Scheiße ist.
Tja, ist eigentlich ganz einfach: Es gab schon vor 20 bis 30 Jahren gute
Entwicklungslösungen, und seitdem ist eigentlich nur noch das Rad immer
wieder neu erfunden worden (mal besser, mal schlechter)...
|
| Show full article (1.35Kb) |
|
| | 44 Comments |
|
  |
Author: Joseph TernerJoseph Terner Date: Jul 6, 2007 10:39
Oliver Voß wrote:
> Ein großer Schwachpunkt von C (und auch C++) ist, daß
> ein Datentyp für Strings fehlt und man sich daher irgendwie behelfen muß.
> Das führt dann häufig zu den bekannten Buffer-Overflows. Wer noch weitere
> Argumente braucht: < http://www.bernd-leitenberger.de/pascal-und-c.shtml>
Ein großer Schwachpunkt von Leuten, die ihre Lieblingssprache mit C
vergleichen, ist, daß sie C nicht verstanden haben. An dieser Stelle
habe ich aufgehört zu lesen:
|
| Show full article (1.05Kb) |
|
| | no comments |
|
  |
Author: Lothar KimmeringerLothar Kimmeringer Date: Jul 6, 2007 11:12
Joseph Terner wrote:
[C-Beispiel]
> Vom grausamen Stil abgesehen (niemand, der C kann, programmiert so),
> produziert dieser Code einen netten Off-By-One-Buffer-Overflow.
Das ist das Problem von Leuten, die Programmiersprachen verwenden,
wo man sich nicht so nah auf Speicherebene herumtreibt. Geht mir
aehnlich, wenn ich wieder etwas in C machen muss, weil ich auf
Systemressourcen von Java aus zugreifen "darf".
> Ein Bernd Leitenberger, der schon bei so trivialen Codebeispielen
> versagt, sollte sich tatsächlich von C fernhalten.
Es gibt da noch andere Beispiele:
| Warum man mit == und != vergleicht anstatt
| mit = und <> habe ich auch nie verstanden.
Ich habe es lange Zeit genau anders herum nicht verstanden, warum
<> als ungleich verwendet wird, da man das als "kleiner und groesser"
lesen kann und damit nie zutreffen wird.
Und dann noch:
|
| Show full article (1.61Kb) |
| no comments |
|
  |
Author: Stefan ReutherStefan Reuther Date: Jul 6, 2007 12:23
Oliver Voß wrote:
> Im Fall von Pascal gibt es
> Freepascal (relativ mächtiger Compiler, Delphi-kompatibel, läuft auf
> vielen Plattformen). Ein großer Schwachpunkt von C (und auch C++) ist, daß
> ein Datentyp für Strings fehlt und man sich daher irgendwie behelfen muß.
Ich weiß ja nicht, welchen C++-Compiler du so verwendest, aber bei
allen, die ich in den letzten 10 Jahren benutzt habe, war eine sehr
brauchbare Stringklasse dabei.
Die erweiterten Pascals sind zwar schön, aber leider in der Praxis
einfach nicht portabel: wenn man dann schon mal einen Compiler für den
gewählten Dialekt gefunden hat, gibt's den unter Garantie nicht für die
Zielplattform.
Stefan
|
| |
| no comments |
|
  |
Author: Oliver VoßOliver Voß Date: Jul 6, 2007 14:21
Am Fri, 06 Jul 2007 21:23:47 +0200 schrieb Stefan Reuther:
> Ich weiß ja nicht, welchen C++-Compiler du so verwendest, aber bei
> allen, die ich in den letzten 10 Jahren benutzt habe, war eine sehr
> brauchbare Stringklasse dabei.
>
Tja, nur die Frage ist, ob diese Klassen zum Standard gehören. Es wird
zwar immer gesagt, C und C++ wären äußerst portabel, aber das gilt nur für
relativ wenige Programme. Sobald es ein wenig komplexer wird, mit Grafik,
GUI etc. ist es mit der Portabilität schon vorbei. Selbst so vermeintlich
triviale Sachen wie die Abfrage der Tastatur sind schon nicht mehr
betriebssystemunabhängig.
|
| Show full article (1.27Kb) |
| 3 Comments |
|
  |
Author: Joseph TernerJoseph Terner Date: Jul 6, 2007 15:40
Lothar Kimmeringer wrote:
> Joseph Terner wrote:
>
> [C-Beispiel]
>
>> Vom grausamen Stil abgesehen (niemand, der C kann, programmiert so),
>> produziert dieser Code einen netten Off-By-One-Buffer-Overflow.
>
> Das ist das Problem von Leuten, die Programmiersprachen verwenden,
> wo man sich nicht so nah auf Speicherebene herumtreibt. Geht mir
> aehnlich, wenn ich wieder etwas in C machen muss, weil ich auf
> Systemressourcen von Java aus zugreifen "darf".
Das ist kein Grund, den Rückgabewert von malloc() zu casten. ;-)
|
| Show full article (1.46Kb) |
| no comments |
|
  |
Author: Carsten KruegerCarsten Krueger Date: Jul 6, 2007 16:44
Am Fri, 6 Jul 2007 23:21:55 +0200 schrieb Oliver Voß:
> Tja, nur die Frage ist, ob diese Klassen zum Standard gehören. Es wird
> zwar immer gesagt, C und C++ wären äußerst portabel, aber das gilt nur für
> relativ wenige Programme.
Ach was,
Boost, Qt & Smartheap gibt's fast überall :)
> FreePascal läuft mittlerweile auf einer recht großen Anzahl von
> Plattformen, siehe < http://www.freepascal.org>, von GNU Pascal mal ganz zu
> schweigen.
Wie war das mit der GUI nochmal?
Gruß Carsten
|
| |
| no comments |
|
  |
Author: Lothar KimmeringerLothar Kimmeringer Date: Jul 7, 2007 02:16
Joseph Terner wrote:
>>| int x;
>>| x=5;
>>| --x=(++x)--;
>>|
>>| Nein, das Ergebnis ist nicht 4 sondern 6.
>
> Nein, das kompiliert schlicht nicht:
>
>|test.c:5: error: invalid lvalue in decrement
Inzwischen. Fruehere gcc-Versionen haben sowas gefressen.
Daher findet man manchmal auch so etwas wie
(jbyte *)jap = env->GetByteArrayElements(ja, 0);
das man dann entsprechend umbauen darf (hatte ich erst
kuerzlich, das Beispiel ist aus der vorigen Revision kopiert).
Gruesse, Lothar
--
Lothar Kimmeringer E-Mail: spamfang@kimmeringer.de
PGP-encrypted mails preferred (Key-ID: 0x8BC3CD81)
|
| Show full article (0.73Kb) |
| no comments |
|
  |
Author: Stefan ReutherStefan Reuther Date: Jul 7, 2007 03:02
Oliver Voß wrote:
> Am Fri, 06 Jul 2007 21:23:47 +0200 schrieb Stefan Reuther:
>>Ich weiß ja nicht, welchen C++-Compiler du so verwendest, aber bei
>>allen, die ich in den letzten 10 Jahren benutzt habe, war eine sehr
>>brauchbare Stringklasse dabei.
>
> Tja, nur die Frage ist, ob diese Klassen zum Standard gehören.
Selbstverständlich.
> Es wird zwar immer gesagt, C und C++ wären äußerst portabel, aber das
> gilt nur für relativ wenige Programme.
Interessanterweise kann man damit aber noch sehr viel machen. Einen
C-Compiler schreiben zum Beispiel. Oder einen MPEG-Decoder. Oder einen
großen Teil der Unix-Kommandozeilentools (grep, cat, ...). Und die kann
man dann mit den verschiedensten Compilern übersetzen. Meine Hobby-
Projekte übersetze ich routinemäßig mit drei verschiedenen Compilern
(GNU, Turbo C, Borland C++). Die, mit denen ich Geld verdiene, mit vier
verschiedenen (GNU, MSVC, sowie zwei für Embedded-Plattformen).
|
| Show full article (1.55Kb) |
| no comments |
|
  |
|
|
  |
Author: Bodo EggertBodo Eggert Date: Jul 7, 2007 07:25
Lothar Kimmeringer wrote:
> Joseph Terner wrote:
> | Warum man mit == und != vergleicht anstatt
> | mit = und <> habe ich auch nie verstanden.
>
> Ich habe es lange Zeit genau anders herum nicht verstanden, warum
> <> als ungleich verwendet wird, da man das als "kleiner und groesser"
> lesen kann und damit nie zutreffen wird.
Und "=" kann man als Minus-Minus lesen, also als Plus. == ist damit ++, also
ein Inkrement!!! Und "!=" ist besonders plus.
|
| |
| no comments |
|
RELATED THREADS |
  |
|
|
|
|
|