Welche Vorteile hat C, was kann man an C loben?
-
groovemaster schrieb:
Daniel E. schrieb:
Doch, natürlich, aber die haben als Argument in einer Diskussion über das C-C++-Subset, worum es hier die ganze Zeit geht
In welcher Höhle lebst du denn? Darum geht es überhaupt nicht.
Aber um es nochmal verständlich für _dich_ zu schreiben, es geht um die Vorteile von C und mein Statement dazu, dass ich bis auf den besseren Support keinen sehe, weil C++ ua eine striktere Typisierung hat. Und selbst wenn das nur void* wäre, dann ist das immer noch strikter.Richtig, diese Ausnahme habe ich genannt. Sonst gibt es keine.
Das gesamte Zeigerhandling, der Umgang mit Integerausdrücken, Const-Correctness &cet. ist ist C++ genau so steng oder nicht streng wir in C. Warum Du immer einen *_cast anschleppst um zu zeigen, daß C++ strenger ist, bleibt der geneigten Leserschaft leider verborgen.
Daniel E. schrieb:
Netter Versuch, aber 'int (*a)()' ist in C leider syntaktisch was anderes als in C++
Es ist syntaktisch das Gleiche, der Unterschied ist semantischer Natur. Und darum ging es ja. C++ kennt keine "Funktionen mit unbestimmten Parametern".
Also hat es in der Diskussion nichts verloren, weil es gleiche Syntax mit unterschiedlicher Semantik belegt ist, also andere Typen anders heißen, nicht, gleiche Typen unterschiedlich behandelt werden.
Dehalb
strikter.
Nein, ein Unterschied in der Schreibweise um etwas zu sagen: Der C-Code ist korrekt und sagt etwas vollständig anderes als der C++-Code, genau wie 'int new = 23' oder "sizeof 'a' == sizeof 3"auch nicht als Beispiel dafür herhält, daß C strenger oder weniger streng ist als C++. Scheint schwierig zu verstehen zu sein.
Dass das kein gültiges C ist, ist mir schon klar. Das war ja gerade der Witz an der Geschichte. C++ ist in der Lage, einen konstanten integralen Ausdruck, was 0 ist, in einer Variable zu speichern, und diesen entsprechend, zB für die Evaluierung zu einem Nullzeiger, verwenden. C kann das nicht, und macht daraus 'ne "normale" Konstante. Und wiedderum
strikter, da in C++ hier keine Informationen zum Typ des Ausdrucks verloren gehen, auch wenn sich das syntaktisch nicht äussert.
Aha, mal sehen, ob ich das richtig verstehe:
Wenn 'const int a = 3; char *p = a' in C ginge und in C++ nicht, dann wäre C natürlich weniger streng als C++, wenn C++ 'const int a = 0; char *p = a;' nimmt, dann ist es strenger? Was'n Quark. EOD meinerseits, mit Merkbefreiten ohne Diskussionsinteresse, die nur damit beschäftigt sind, mit Arroganz zu unterstellen, brauche ich nicht zu diskutieren.
-
ich finde c ist gut geeignet zur lösung für überschaubare probleme. man kann mal eben schnell mit ein paar zeilen executables produzieren, die viel tun und 20kb klein sind. c ist schnell und maschinennah, auch finde ich persönlich die syntax sehr intuitiv und überschaubar. dies kann je nach empfinden genauso für andere sprachen zutreffen. manche stehen halt auf basic, andere auf java - im endeffekt bei 1-mann-projekten doch fast nur geschmackssache oder?
möglicherweise sind meine erfahrungswerte zu gering, um das wirklich treffend bewerten zu können, aber ich kann mir nicht vorstellen, dass treiber in java realisiert werden. und was wirklich große projekte (mehrköpfiges team, mehrjärige entwiklungszeit) angeht, kann ich mir vorstellen, dass dort c nicht mehr die erste wahl ist.
ich denke auch, dass man c nicht mehr im reinen konsolenkontext sehen sollte. für mich als windows user bietet die WINAPI super möglichkeiten umfassende windowsapplikationen zu erstellen. somit ist c trotz der jahre die es auf dem buckel hat, immernoch ein modernes werkzeug das hervorragend funktioniert. und im endeffekt haben sich doch fast alle modernen sprachen bei c was abgeguckt, so dass man c kenntnisse doch als gute programmier-basics bezeichnen kann, oder nicht?also: c lernen -> auf jedenfall, ausschließlich in c programmieren -> geschmackssache
ich finde c kann wirklich spass machen
-
Daniel E. schrieb:
Das gesamte Zeigerhandling, der Umgang mit Integerausdrücken, Const-Correctness &cet. ist ist C++ genau so steng oder nicht streng wir in C. Warum Du immer einen *_cast anschleppst um zu zeigen, daß C++ strenger ist, bleibt der geneigten Leserschaft leider verborgen.
Und wo mach ich das? Das war lediglich ein Beispiel. Dass du das natürlich nicht verstehen wollen können tust, ist mir schon klar. Das ändert aber nichts an der Tatsache, dass es zum Typsystem von C++ gehört.
Daniel E. schrieb:
Nein, ein Unterschied in der Schreibweise um etwas zu sagen: Der C-Code ist korrekt und sagt etwas vollständig anderes als der C++-Code, genau wie 'int new = 23' oder "sizeof 'a' == sizeof 3"auch nicht als Beispiel dafür herhält, daß C strenger oder weniger streng ist als C++. Scheint schwierig zu verstehen zu sein.
Du kapierst es echt nicht, oder? Ich dachte ja erst, du stellst dich so dumm, aber mittlerweile bin ich mir da nicht mehr so sicher.
Ich sage doch nicht, dass aufgrund gleicher Syntax bei unterschiedlicher Semantik C++ strikter ist. C++ ist deshalb strikter, weil es keine Funktionen mit unbestimmten Parametern zulässt. Syntax spielt hier überhaupt keine Rolle.Daniel E. schrieb:
Wenn 'const int a = 3; char *p = a' in C ginge und in C++ nicht, dann wäre C natürlich weniger streng als C++, wenn C++ 'const int a = 0; char *p = a;' nimmt, dann ist es strenger?
Du hast echt eine seltsame Vorstellung von strikterer Typisierung. Das hat nicht zwangsläufig was damit zu tun, dass etwas hier geht, was woanders nicht geht.
C++ behandelt 0 und a gleichwertig. C macht das nicht. Deshalb bindet C++ Typen strenger.Daniel E. schrieb:
Was'n Quark. EOD meinerseits, mit Merkbefreiten ohne Diskussionsinteresse, die nur damit beschäftigt sind, mit Arroganz zu unterstellen, brauche ich nicht zu diskutieren.
Dass ich dir Arroganz unterstelle (bzw. auch Ignoranz), wundert dich? Dann solltest du dir vllt. nochmal deinen ersten Beitrag anschauen. Aber keine Sorge, ich bin nicht nachtragend. Ansonsten kann ich EOD nur begrüssen, da ich auch keine Lust mehr auf diesen Käse habe.
Fakt bleibt für mich, um wieder auf das eigentliche Thema zurückzukommen, dass es im C und C++ Typsystem mehr Unterschiede als nur void* gibt. Und dass C++ dabei auf striktere Konventionen baut.
-
Amen.
als folgerung aus diesem rumgezanke werde ich in zukunft threads dieser art sofort loeschen.