Kann ich C, wenn ich C++ beherrsche?

3 Antworten

C++ basiert schließlich auf C und erweitert ja lediglich das Feature-Set, oder?

Reise zurück ins Jahr 1985 und du liegst mit der Aussage sicherlich korrekt. C++ ist ursprünglich als Erweiterung gedacht gewesen, doch im laufe der Jahre haben sie die beiden Sprachen unterschiedlich weiterentwickelt. So hat C ein paar Features erhalten, die C++ nicht hat und auch umgekehrt. Heute weisen beide Sprachen noch immer viele Ähnlichkeiten auf, aber es ist nicht mehr das, wie es ursprünglich gedacht war.

Meine Frage ist also eher, ob man, nachdem man C++ einigermaßen durchgelernt hat -- Ist das überhaupt möglich? --, gut in C ist.

Nein. Durch C++ hat man sehr viel Luxus, wie OOP. In C muss man sich komplett umgewöhnen. Auch manche Funktionen oder Keywords sind anders als in C++. Also kannst du dann ein C Programm schreiben? Ja, aber du musst dich umgewöhnen und ein paar andere Dinge dazulernen.

C++ basiert schließlich auf C und erweitert ja lediglich das Feature-Set

Jein...es ist nicht einfach nur eine Erweiterung, es gibt auch etliche Inkompatibilitäten (d.h. nicht jedes C-Programm ist auch ein gültiges C++-Programm). Man könnte sagen, dass heutiges C und C++ einen gemeinsamen Vorfahren haben. C++ hat sich aber wesentlich stärker davon wegentwickelt als C.

Meine Frage ist also eher, ob man, nachdem man C++ einigermaßen durchgelernt hat -- Ist das überhaupt möglich? --, gut in C ist.

C++ ist eigentlich nicht eine Sprache, sondern ungefähr 3 (C, C++ bis in die frühen 2000er, modernes C++). Wenn du modernes C++ verwendest, vermeidest du die C-nahen Konstrukte wann immer es möglich ist. Damit fehlt dir auch die Übung in idiomatischer C-Programmierung.

Also, nein. Du bist als guter C++-Entwickler wahrscheinlich gut genug in C, um nicht dauernd auf die Nase zu fallen, mehr nicht.

Lerne momentan C++ und komme von Java

Java ist ein gutes "Gegenbeispiel", weil es sehr viel konsistenter weiterentwickelt wurde. Ein Java-Entwickler aus 1998 würde sich über viele Konstrukte in modernem Java wundern, aber er würde sie ziemlich rasch kapieren: die Grundprinzipien haben sich nicht verändert. Bei C++ würde ich das nicht annehmen, die Sprache hat sich gewaltig verändert und ist generell unglaublich umfangreich.

KarlRanseierIII  24.01.2024, 19:14
Jein...es ist nicht einfach nur eine Erweiterung, es gibt auch etliche Inkompatibilitäten (d.h. nicht jedes C-Programm ist auch ein gültiges C++-Programm).

Genaugenommen ist es noch schlimmer, da einige Inkompatibilitäten zu unterschiedlichem Verhalten führen können.

1

Ja und Nein, weil du wirst viele Sachen aus C++ wiedererkennen, aber C ist die schwierigere Version von C++. C++ ist die vereinfachte Version von C.

jo135  24.01.2024, 18:13
C++ ist die vereinfachte Version von C.

LOL. Schau dir allein den Umfang der Sprachspezifikationen an. C++ ist ein Monster, und es gibt so gut wie niemanden, der alle Details im Kopf hat.

C ist im Vergleich winzig und rasch zu erlernen, während man bei C++ allein für das "Detail" Move Semantics ganze Bücher schreiben muss, weil sie keiner durchgängig versteht.

0
Unkang  24.01.2024, 18:16
@jo135

Ich habe nicht mal irgendwas darüber gesagt, aber OK. Ich habe nur gesagt, dass es vereinfachert wurde. Ich habe C gelernt bevor ich C++ gelernt hab und habe gemerkt, dass die Logik von C mit C++ ähnelt, da C++ von C kommt. Es war einfacher zu verstehen als die C Sprache

0