| Autor |
Nachricht |
TyRoXx
Mitglied
Benutzerprofil
Anmeldungsdatum: 30.06.2009
Beiträge: 1034
|
TyRoXx Mitglied
08:01:13 12.04.2012 Titel: |
Re: In C89 zu programmieren... |
Zitieren |
| cooky451 schrieb: |
Und ja, C hat definitiv ein Problem was Resource-Management angeht. Und ja, du hast recht. Warum sollte man in C Programmieren? Es gibt aus sprachlicher Sicht eigentlich keine Gründe dafür. Selbst wenn man keine Exceptions und keine Polymorphie will, Destruktoren sind etwas, das C einfach fehlt. (Obwohl es natürlich nicht zur Sprache passen würde.)
Allerdings stellt sich die Frage, was du mit diesem Thread bezwecken willst. Die meisten User hier werden wohl C++ bevorzugen, und niemand hier wird den Lehrplan deiner Uni ändern können. Wenn du diese Diskussion führen willst, dann bitte gleich mit dem MOC (Master Of C) persönlich: Linus. ;) |
Der Blödmann ist gegen C++, weil man damit viel leichter Scheiße produzieren kann. C++ ist "in", jeder Vollidiot kopiert sich aus dem Internet etwas zusammen. C ist für Anfänger eher unattraktiv, weil man Hintergrundwissen benötigt, um die Sprachkonzepte zu verstehen und sinnvoll anzuwenden.
C++ hat eine lange Entwicklung von C mit Klassen zu C++11 erlebt. Compiler kommen langsam hinterher, Literatur wird nicht jünger und die Nähe zu C verleitet zu scheußlichen Hacks. C++ ist also ein großes Durcheinander und nur erfahrene Programmierer können damit guten Code bauen, weil sie schon viele Fehler kennen, die man machen kann.
C ist viel schlanker, es gibt nicht zig Möglichkeiten, etwas zu lösen. Zum Beispiel gibt es keine Methoden, Lambdas, Konstruktoren, überladbare Operatoren, sondern einfach nur Funktionen, die man nicht einmal überladen kann. C hat sich auch nicht stark verändert. Aus Kompatibilitätsgründen verwendet man meist C89 und gut ist.
C++ ist als Sprache überlegen, aber das ist in der Praxis nicht das einzige Kriterium. Bei Linux reicht C eben aus und man vermeidet die Probleme von C++. |
_________________ .. aber dann wäre C++ uneinheitlich und nicht mehr so anfängergerecht.
|
|
 |
Kenner der Wichtigtuer
Unregistrierter
|
Kenner der Wichtigtuer Unregistrierter
10:06:17 12.04.2012 Titel: |
Re: In C89 zu programmieren... |
Zitieren |
|
 |
Unregistrierter
|
Unregistrierter
10:57:12 12.04.2012 Titel: |
Re: In C89 zu programmieren... |
Zitieren |
| Kenner der Wichtigtuer schrieb: |
Ich sehe da kein VLA. |
OK, ich nehme alles zurück und behaupte das Gegenteil. |
|
|
|
 |
Unregistrierter
|
Unregistrierter
11:46:05 12.04.2012 Titel: |
|
Zitieren |
Man muss mit VLAs tatsächlich vorsichtig umgehen:
| Code: | One problem that may be hidden by a language's support for VLAs is that of the underlying memory allocation: in environments where there is a clear distinction between a heap and a stack, it may not be clear which, if any, of those will store the VLA.
For example, the GNU C Compiler allocates memory for VLAs on the stack. If a VLA is too large, no error occurs immediately; instead, attempts to use the VLA may lead to segmentation faults later in the execution of the program. | |
http://en.wikipedia.org/wiki/Variable-length_array |
|
|
|
 |
seldon
Unregistrierter
|
seldon Unregistrierter
15:49:07 12.04.2012 Titel: |
|
Zitieren |
Dieses spezielle Problem besteht allerdings auch bei Arrays fester Länge. |
|
|
|
 |
Unregistrierter
|
Unregistrierter
15:56:27 12.04.2012 Titel: |
|
Zitieren |
Allerdings kannst du das dann besser kontrollieren, weil dir die Größe bekannt ist. |
|
|
|
 |
Bashar
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.05.2001
Beiträge: 17760
|
Bashar Mitglied
16:05:47 12.04.2012 Titel: |
|
Zitieren |
Wie denn? |
_________________ OSL♥
|
|
 |
Unregistrierter
|
Unregistrierter
16:46:28 12.04.2012 Titel: |
|
Zitieren |
Wenn ich weiß, ich brauch einen Puffer von 1 MB, dann würde ich nicht auf die Idee kommen den Puffer auf dem Stack zu alloziieren. :P |
|
|
|
 |
Bashar
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.05.2001
Beiträge: 17760
|
Bashar Mitglied
16:51:51 12.04.2012 Titel: |
|
Zitieren |
Und wenn du einen Puffer von 128 Bytes brauchst? Woher weißt du dann, ob der Stack ausreicht?
Rhetorische Frage, kürzen wirs ab: Du weißt es nicht. |
_________________ OSL♥
|
|
 |
knivil
Mitglied
Benutzerprofil
Anmeldungsdatum: 11.02.2009
Beiträge: 5872
|
knivil Mitglied
16:57:01 12.04.2012 Titel: |
|
Zitieren |
| Zitat: | | VLAs sind sehr praktisch: Man braucht keinen Malloc-Funktionsaufruf, die Ausnahmebehandlung entfällt, das free() und der Gedanke, wann man Speicher wieder frei gibt, ebenso. | Benutze bitte keine Messer, du koenntest dich sehr oft schneiden. Nimm bitte Java und ueberlasse C den echten Programmierern.
| Zitat: | 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... | Genau. Auch gibt es "Lint"-Tools, die das ueberpruefen. Und nochmal: Bitte benutze kein Messer.
Das musste mal gesagt werden! Ach ja, ich distanziere mich sofort wieder davon. |
_________________ If it were not for laughter, there would be no Tao.
Sie können einen Beitrag nicht so schnell nach Ihrem letzten absenden, bitte warten Sie einen Augenblick.
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|