In C89 zu programmieren...
-
Scherzbold. Stackobjekte mit Heapobjekten vergleichen
. Da weiß man gleich, dass ein kompetenter Programmierer am Werk ist.
Im übrigen werden in C++ auch Heapobjekte nicht initialisiert, wenn's nichts zu initialisieren gibt und in C werden Stackobjekte genau so wie in C++ initiailisiert, wenn es was zu initialisieren gibt. Also nächstes Mal lieber erst mal informieren, worüber man redet, bevor man alte Legenden unreflektiert nachplappert. Was kommt als nächstes? Die Feststellung, dass ein Compiler bei virtueller Vererbung Code erzeugt?
-
Z schrieb:
Lies das: http://www.fefe.de/c++/c%2B%2B-talk.pdf
Inhaltsangabe: Mimimi, es gibt eine Programmiersprache, die ich nicht verstehe!
-
Wupper schrieb:
Wer es nicht glaubt: einfach mal im Debugger durch die Konstruktion und Dekonstruktion eines Objektes mit ein paar Parametern steppen (aber wirklich step-in, so dass auch das letzte Stückchen Code auftaucht, dass dabei intern aufgerufen wird). Diesen ganzen Wasserkopf kann bei knappen Ressourcen keiner gebrauchen - weswegen C auf diesen Systemen auch in 50 Jahren noch nicht ausgestorben sein wird.
Ich glaub du bringst da etwas durcheinander. In den Konstruktor kommt das, was du sowieso machen musst, um etwas ausführen zu können. Als C-Beispiel: fopen, wenn du mit einer Datei arbeiten möchtest.
In den Destruktor kommt dann das, was du sowieso machen musst, um aufzuräumen. Als C-Beispiel: fopen, um nichts zu leaken.
Im Endeffekt wird kein Byte mehr Code generiert. Außer man macht Mist. Ansonsten aber nicht.
-
Z schrieb:
Ich finde, wer auf VLAs angewiesen ist, macht etwas falsch.
Wohl wahr.
-
TyRoXx schrieb:
C ist für Anfänger eher unattraktiv, weil man Hintergrundwissen benötigt, um die Sprachkonzepte zu verstehen und sinnvoll anzuwenden.
C ist von Programmierern für Programmierer oder wenn man so will von Praktikern für Praktiker entwickelt worden und das damals mit einem KONKRETEN Hintergrund, nämlich UNIX. Und weil sie schon dabei waren, haben sie auch gleich noch Compiler selbstentwickelt und ihn sogar eingesetzt, im Gegensatz zu Stroustrup.
Und auch deswegen hat damals niemand Wert auf C als Lernsprache gelegt, wie bei anderen, d.h. C erhebt überhaupt keinen Anspruch, leicht erlernbar, anschaulich, unkryptisch zu sein oder sonst irgendwelchen Ansprüchen zu genügen. Und wenn irgendwelche Lehrer heutzutage, 40 Jahre später, C doch für Lernzwecke einsetzen, ...
Stroustrup hat bei seinem C mit Klassen eben keinen konkreten und vor allem akuten Hintergrund gehabt und lehrt jetzt noch als Professor irgendwo in Texas.TyRoXx schrieb:
Aus Kompatibilitätsgründen verwendet man meist C89 und gut ist.
Ein strikt konformes ANSI C(89) Programm ist maximal portabel.
Keine andere Sprache mit irgendwelchen Ausprägungen bietet das, wenn man sich auf originale Betriebs- und Embeddedsysteme beschränkt und heutige Browserumgebungen mal außen vor lässt.
-
[quote="Steffo"]
Z schrieb:
Stell dir vor, du macht am Anfang des Funktionsrumpfes ein malloc() und am Ende ein free(). Nach dem malloc() kommen jedoch verschiedene switch cases und eins davon macht ein return... Glückwunsch: Du hast ein Memory Leak.
Ich weiß... so etwas passiert DIR natürlich nicht...Selbst wenn: dank der heutigen Verfügbarkeit toller Tools wie Valgrind kann man sowas glücklicherweise meist verdammt schnell erkennen. Wer irgendwelchen Code raushaut, ohne zumindest vorher mal mit Valgrind drübergegangen zu sein, hat es auch nicht anders verdient.
Übrigens finde ich durchaus, dass VLAs eine Berechtigung haben. Was sie aber definitiv nicht tun, ist einen davon zu befreien, sich Gedanken um den verwendeten Speicher zu machen.
-
Horst Hansen schrieb:
Selbst wenn: dank der heutigen Verfügbarkeit toller Tools wie Valgrind kann man sowas glücklicherweise meist verdammt schnell erkennen. Wer irgendwelchen Code raushaut, ohne zumindest vorher mal mit Valgrind drübergegangen zu sein, hat es auch nicht anders verdient.
Übrigens finde ich durchaus, dass VLAs eine Berechtigung haben. Was sie aber definitiv nicht tun, ist einen davon zu befreien, sich Gedanken um den verwendeten Speicher zu machen.
Was, wenn der Memory Leak nur in bestimmten Konstellationen auftaucht? Valgrind alleine hilft dir da nicht weiter. Du müsstest dein Programm sinnvoll mit Parameter füttern, um möglichst viele Konstellationen zu testen.
-
Steffo schrieb:
Was, wenn der Memory Leak nur in bestimmten Konstellationen auftaucht? Valgrind alleine hilft dir da nicht weiter. Du müsstest dein Programm sinnvoll mit Parameter füttern, um möglichst viele Konstellationen zu testen.
Na hier spricht ja der Profi, leider sehr schwammig und vage. Natuerlich haben sich auch andere Gedanken gemacht, du bist nicht der erste. Tools fuer Code Coverage und Testgenerierung existieren auch.
-
C ist alt...
-
nachtfeuer schrieb:
C ist alt...
ROFL
Was ein Argument!
-
nachtfeuer schrieb:
C ist alt...
Die aktuellste Version von C ist gerade mal ein paar Wochen alt: http://gcc.gnu.org/gcc-4.7/
-
Es gibt einen Unterschied zwischen einem C-Compiler und dem C-Standard (dessen letzte Revision im Oktober 2011 verabschiedet wurde). Allerdings ist das eine etwas seltsame Art, das Alter zu messen - wenn du gestern Geburtstag hattest, bist du ja auch nicht unbedingt erst einen Tag alt.
-
seldon schrieb:
Es gibt einen Unterschied zwischen einem C-Compiler und dem C-Standard (dessen letzte Revision im Oktober 2011 verabschiedet wurde). Allerdings ist das eine etwas seltsame Art, das Alter zu messen - wenn du gestern Geburtstag hattest, bist du ja auch nicht unbedingt erst einen Tag alt.
Macht aber schon irgendwie Sinn, schließlich wird C ja weiterentwickelt, d. h. man hat mehr Möglichkeiten, mehr Macht. Wenn du das jetzt auf den Menschen überträgst, kommt nicht unbedingt dasselbe raus...
-
Eigentlich dachte ich die Ironie wäre nicht zu übersehen...
-
Tim schrieb:
nachtfeuer schrieb:
C ist alt...
Die aktuellste Version von C ist gerade mal ein paar Wochen alt: http://gcc.gnu.org/gcc-4.7/
ach, gcc...(
)
http://www.phrack.com/issues.html?issue=67&id=11#article
http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.phpaber...
Fortran ist alt...
-
nachtfeuer schrieb:
C ist alt...
Lisp ist auch alt, aber alle kopieren dieses und jenes aus der Sprache. Darueber hinaus ist Alter ein sehr schwaches Kriterium.
-
knivil schrieb:
nachtfeuer schrieb:
C ist alt...
Lisp ist auch alt, aber alle kopieren dieses und jenes aus der Sprache. Darueber hinaus ist Alter ein sehr schwaches Kriterium.
In diesem Zusammenhang würde ich sagen, C ist zu jung, noch viel zu grün hinter den Ohren.
( http://archive.vector.org.uk/art10500180)