C/C++ - Muss ein C++ programmierer C können? :D
-
asc schrieb:
Dem widerspreche ich komplett. Was C++ mit C gemeinsam hat sind im wesentlichen Syntax und Sprachelemente, weniger das Konzept - zumindest von der Umsetzung her gesehen.
Was meinst du mit dem Nachsatz?
Natürlich ist das Konzept in Teilen dasselbe, man müsste sich schon ziemlich dummstellen, um das nicht zu sehen. C++ ist genauso wie C auf der Ebene einzelner Bytes im Speicher definiert, man KANN lediglich durch geeignete Abstraktionen sich auf ein Level aufschwingen, auf dem man das manchmal ignorieren kann. In Sprachen wie Java ist das überhaupt nicht der Fall.
Mein Sempf zum Thema: Ein C++-Programmierer sollte C ohne Probleme lesen können. C schreiben zu können kommt nicht automatisch, zumindest kein gutes C, es sollte aber relativ leicht zu lernen sein.
-
Bashar schrieb:
Ein C++-Programmierer sollte C ohne Probleme lesen können.
Okay, dann kann ich auch nach über 10 Jahren kein C++. Den mit C-Code habe ich meine Probleme (oder bislang einfach nur die falschen C-Projekte gesehen).
-
Bashar schrieb:
Natürlich ist das Konzept in Teilen dasselbe, man müsste sich schon ziemlich dummstellen, um das nicht zu sehen.
Na dann sag mal, welche Konzepte Gemeinsamkeiten sind... Oder ob man vll doch nach grundsätzlich verschiedenen Paradigmen programmiert...
Bashar schrieb:
C++ ist genauso wie C auf der Ebene einzelner Bytes im Speicher definiert
ist kein Konzept - und allg. ist jede Sprache (bzw der Code den der Compiler generiert) eine Folge einzelner Bytes im Speicher .
bb
-
unskilled schrieb:
Oder ob man vll doch nach grundsätzlich verschiedenen Paradigmen programmiert...
Und nach welchem Paradigma programmiert man mit c++? Falls jetzt "Objektorientierung" kommt, dann überleg mal ob das wirklich wahr ist?
-
Mitleid schrieb:
Und nach welchem Paradigma programmiert man mit c++? Falls jetzt "Objektorientierung" kommt, dann überleg mal ob das wirklich wahr ist?
Selbst wenn ich Prozedural unter C++ programmieren würde, sähe der Code bei mir anders aus als unter C (alleine schon dank Referenzen, der Verwendung der Standardbibliothek, ggf. Templates usw.)... Man kümmert sich seltener selbst um Speicherallokationen, tendiert zu Typsichereren Code...
-
asc schrieb:
Okay, dann kann ich auch nach über 10 Jahren kein C++. Den mit C-Code habe ich meine Probleme (oder bislang einfach nur die falschen C-Projekte gesehen).
Tja, dann bist du wohl eine Ausnahme.
-
Lassen wir diese Diskussion sein. Die Meinungen und Ansichten bleiben immer die gleichen, sie werden nur wiederholt. Wichtig ist doch nur, dass man einige Grundschritte der Programmierung beherrschst. C bietet nur diese Grundschritte, C++ bietet mehr.
Zurück zur Analogie Mountainbike/Velo: Strampeln muss man mit beiden, um fahren zu können. Kette, Klingel, Bremse usw. bleiben auch gleich.
-
berniebutt schrieb:
Lassen wir diese Diskussion sein.
Dann führ sie selbst auch nicht vor.
berniebutt schrieb:
Wichtig ist doch nur, dass man einige Grundschritte der Programmierung beherrschst. C bietet nur diese Grundschritte, C++ bietet mehr.
C bietet mehr als diese Grundschritte, da einiges was in C üblich ist, in C++ unüblich ist. C bietet zwar das Fahrradgestell, die C-Klingel wird aber üblicherweise durch die C++ Klingel ausgetauscht usw.
Die Grundmenge an C die üblicherweise unter C++ verwendet wird ist kleiner als C. Und die Teile die unter C++ unüblich sind, muss ein Programmierer der nur C++ gelernt hat auch nicht kennen (Daher ist ein C-Code nicht unbedingt für ein C++ Programmierer zwangsweise komplett lesbar).
-
Und die Teile die unter C++ unüblich sind
Fuer mich ist nichts in C++ unueblich. Es gibt nur guenstige und unguenstige Loesungen.
-
asc schrieb:
Den mit C-Code habe ich meine Probleme (oder bislang einfach nur die falschen C-Projekte gesehen).
Welche Schwierigkeiten hast Du denn mit C? Pointer, C-Strings oder was?
-
Und die Teile die unter C++ unüblich sind, muss ein Programmierer der nur C++ gelernt hat auch nicht kennen
Wenn mir ein programmierer nur C++ programme vorsetzt, wo er keinen Speicher manipuliert, keine C-Schnittstelle bedient, nur immer schoen die standardlibraries verwendet und paar geangige framworks fuer Grafik und DB zgriff vielleicht, wuerd ich Ihn schon fragen, warum er c++ entwickelt, und ned VB oder Java oder was anderes ?
Warum sollte jemand c++ Lernen wollen, wenn er nicht die Möglichkeiten nutzen will die Ihm die Ursprünge von C bieten ? Das können doch andere Sprachen besser oder ?Ciao ...
-
C++Fan 2009 schrieb:
Welche Schwierigkeiten hast Du denn mit C?
1. Große Teile der C-Bibliothek (Ich glaube <cmath> ist bei mir die einzige Ausnahme, die ich wirklich aus C verwende).
2. Schwierig zu lesen: Alle Mehrfachzeiger
3. void* wo man erst einmal recherchieren muss wofür dies eingesetzt wird
...Ist ja nicht so das man unter C keine Zeiger etc. verwendet, aber alleine der Programmstil durch unterschiedliche Bibliotheksansätze unterscheidet sich merklich (Auch der Umgang mit Daten etc.).
-
Ihr solltet unterscheiden lernen, was kann die Compilersprache und was machen die dazugehörigen Standard-Bibliotheken. Da geht vieles hier lustig durcheinander.
Natürlich braucht ein C++ Programmierer keinen vollständigen Überblick über ANSI-C, doch grundlegende Dinge von C sind unverzichtbar, da einfach übernommen. Was schadet es den C++ Fragesteller, wenn er sich auch mit C auseinandersetzt? Er kann nur hinzu lernen und sein nächstes Detailproblem ohne weitere Anfrage hier im Forum selbst lösen.
Klei mi anne feut - bossza meg - ich klinke mich aus dieser Diskussion jetzt aus!
-
berniebutt schrieb:
Ihr solltet unterscheiden lernen, was kann die Compilersprache und was machen die dazugehörigen Standard-Bibliotheken.
Doch, die gehört dazu wenn man die Frage stellt "Muss ein C++ programmierer C können?" den C++ umfasst selbst die Grundlagen die du hier bei C ansprichst. Und du wirst diese auch in einem reinen C++ Buch finden.
Wenn ich aber C lerne, lerne ich nicht nur das, sondern auch Befehle wie printf & Co die nunmal die Standard-Bibliotheken betrifft UND teil der Sprache sind (Die Standardbibliotheken gehören zum jeweiligen Sprachstandard. Und C++ hat zwar die C-Header aber bezeichnet diese auch als C-Kompatibilitätsheader).
-
RHBaum schrieb:
Wenn mir ein programmierer nur C++ programme vorsetzt, wo er keinen Speicher manipuliert, keine C-Schnittstelle bedient, nur immer schoen die standardlibraries verwendet und paar geangige framworks fuer Grafik und DB zgriff vielleicht, wuerd ich Ihn schon fragen, warum er c++ entwickelt, und ned VB oder Java oder was anderes ?
Mindestens mit Speicherverwaltung werden sich wohl die meisten Programmierer beschäftigen. Wenn auch nicht primär auf dem Level von C - warum sollte man auch? Man darf das hohe Abstraktionslevel nutzen. Zusätzlich hat man in C++ aber auch die Möglichkeit, nahe an der Maschine zu programmieren.
RHBaum schrieb:
Warum sollte jemand c++ Lernen wollen, wenn er nicht die Möglichkeiten nutzen will die Ihm die Ursprünge von C bieten ? Das können doch andere Sprachen besser oder ?
Das ist genau diese "C++ == C mit Klassen"-Sichtweise. Wieso sollte man C++ lernen, um C zu nutzen?
C++ bietet viel mehr, darunter auch Dinge, die andere Sprache nicht können. Genannt seien hier nur mal Templates.
berniebutt schrieb:
Was schadet es den C++ Fragesteller, wenn er sich auch mit C auseinandersetzt?
Du scheinst es immer noch nicht verstanden zu haben.
Es ging um die Frage "Muss ein C++ programmierer C können?" , welche an sich schon nicht ganz klar ist (inwiefern muss man überhaupt eine Programmiersprache können, wer sollte dies festlegen?). Aber falls es darum geht, dass man C als separate Sprache - nicht als Bestandteil von C++ - mit den entsprechend anderen Paradigmen und Herangehensweisen an Probleme können muss (d.h. ohne sie nicht vernünftig programmieren kann), um in C++ zu programmieren, lautet die Antwort wohl nein.