Kann ein Programmierer der C++ kann auch C?

Barmen

Lt. Commander
Registriert
Feb. 2012
Beiträge
1.661
Hi @ all,

hab eine kleine Frage die sich durch googeln nicht ganz klären lassen konnte ...

Ein befreundetes Unternehmen sucht einen Softwareentwickler der Sprache C und jetzt stellt sich die Frage ob ein Softwareentwickler mit C++ auch C können muss, da es sich bei C++ ja um die Weiterentwicklung handelt.

Thx
Bar
 
ja is ne ganze andere sprache oO
 
Ein C++-Entwickler, der sich lange nur mit den Features von C++ abgegeben hat und dabei völlig verdrängt hat, wie manche Dinge in reinem C angegangen werden, muss sich wahrscheinlich nur etwas umgewöhnen.
 
Die Fehler, die der C++ Programmierer in C machen würde, lassen sich allesamt innerhalb sehr kurzer Zeit mit den Fehlermeldungen des Compilers beheben.
 
c++ ist objektorientiert, c ist impertativ.
die chancen stehen aber nicht schlecht, dass ein c++ programmierer schon programmteile in c gemacht hat, weil der compiler eben beides übersetzen kann und sowas oft die praxis ist.
wobei... inline assembler können die compiler auch, aber die wenigstens c++ programmierer.
 
C++ baut auf C auf, aber ein C++ Programmierer kennt auch komfortable Features wie templates oder Referenzen. Dies gibt es im ANSI C nicht. Aber das ist nur umgewöhnungssache, auf jeden fall kommt man damit klar.

Allerdings würde heute wohl keiner auf die Idee kommen komplexe Programme in C zu schreiben. C verwendet man eher bei Controllerprogrammierung oder allg. Sachen wo es laufzeitkritisch abgeht.
 
Vielen Dank für die vielen Rückmeldungen, dann kann ich meine Suche jetzt etwas offener gestalten und dann bei den passenden Kandidaten eruieren ob Sie sich auch den Schritt zurück auf C zutrauen würden.

Habt einen schönen Tag!

Thx
Bar
 
C ist eine rein prozedurale Sprache. C++ hingegen sollte objektorientiert programmiert werden.
Das sind 2 vollkommen unterschiedliche Programmierparadigmen.
Damit wird es dir mit dem objektorientierten Ansatz schwer fallen dich in C hineindenken zu können.

Die Syntax der zwei Sprachen ähnelt sich sehr, da C++ aus C entstanden ist.
Jedoch bist du kein guter C-Programmierer, wenn du C++ beherrscht.
 
Mag schon sein das der Syntax "irgendwie ähnlich" ist, der wesentliche Unterschied ist aber nunmal das gesamte Design, in der Regel sind die c++-Leute für c absolut nicht zu gebrauchen, zumindest wenn man Wert auf einigermassen wartbaren Code legt und nicht nur einmal schnell ein Gebastel will das für fünf Minuten funktionieren soll und niemals erweitert wird.
 
die syntax ist nicht ähnlich, sie ist identisch!

c++ ist c PLUS einen objektorienteirten aufsatz/erweiterung.

von c++ sich in guten c-code hineinzudenken ist sehr einfach und ich würde wetten, jeder halbwegs gute c++ entwickler wird mehr oder weniger sofort acuh guten c-code schreiben.

der grund ist ganz einfach: alles was du für guten c-coce brauchst bruchst du auch in der objektorienteirten programmierung. nur umgekehrt gilt das nicht.

das einzige was einem c++ entwickler fehlt bzw für ihn neu ist, ist die speicherallokation und das speichermanagement. aber das ist insbesondere für die allermeisten anwendungsfälle in 1 min gelernt.
 
Yuuri schrieb:
Nein ist sie nicht.

Nenn in C++ eine Variable class oder bool. Der C-Compiler akzeptiert das.

mit verlaub, aber das widerspricht nicht der syntax. es gibt mit c++ ein paar neue keywords und damit erweiterungen. die syntax selbst ist dieselbe. da die syntaktischen regeln auf einen pool von keywörtern zugreifen ist es egal welche da drinn sind.

allerdings bin ich druch deinen post tatsächlich auf einen utnerschied gestossen, der syntaktischer natur ist: new und delete haben eine syntax, die (ich glaube) kein anderes keyword in C hat.

was man allerdings sagen kann ist, das die C syntax eine echte teilmenge der C++ syntax ist.
 
Dese schrieb:
mit verlaub, aber das widerspricht nicht der syntax. es gibt mit c++ ein paar neue keywords und damit erweiterungen. die syntax selbst ist dieselbe. da die syntaktischen regeln auf einen pool von keywörtern zugreifen ist es egal welche da drinn sind.

allerdings bin ich druch deinen post tatsächlich auf einen utnerschied gestossen, der syntaktischer natur ist: new und delete haben eine syntax, die (ich glaube) kein anderes keyword in C hat.
Was denn nun?

Code:
int class, bool;
gilt nicht, aber
Code:
int new, delete;
gilt wiederum?

edit: Weiteres Beispiel:
Code:
int public, private, protected;
gehen durch den C-Compiler.
Dese schrieb:
was man allerdings sagen kann ist, das die C syntax eine echte teilmenge der C++ syntax ist.
Teilmenge != identisch
Dese schrieb:
mit verlaub, aber das widerspricht nicht der syntax. es gibt mit c++ ein paar neue keywords und damit erweiterungen. die syntax selbst ist dieselbe.
Du widersprichst dir. :)

PS: Für mich gehören Keywords zur Syntax.
 
Zuletzt bearbeitet: (Code gekürzt, neues C-Beispiel)
Also dass man Variablen nicht nach belegten Schlüsselwörtern benennen kann hat eher wenig mit der Syntax zu tun...
 
Yuuri schrieb:
Was denn nun?

Code:
int class = 5, bool = 8
gilt nicht, aber
Code:
int new = 10, delete = 15
gilt wiederum?
das ist kein syntaktischer unterschied!

die syntax definiert wie keywörter und symbole verbunden werden. sie definiert NICHT was keywörter sind. sie kann aber unterschiedliche syntaktische beziehung defineren abhängig von keyword-klassen.

Teilmenge != identisch

Du widersprichst dir. :)
lesen! ich habe mich doch mit dem letzten absatz korrigiert und zugegeben, dass sie nicht identisch sind, mit der aussage, dass mir tatsächlich ein syntaktischer unterschied eingefallen ist.

PS: Für mich gehören Keywords zur Syntax.
wen interessiert wie du syntax definierst? die syntax einer formalen sprache ist die formale beschreibung der gramatik, die zum parsen benötigt wird. in einer kontextfreien grammatik könnte man keywörter zur syntax zählen, da sie durch die grammatik direkt definiert werden.

das ist aber weder bei c noch c++ der fall. es gibt eine syntax wie keywörter verbunden gehören, dabei sind diese in klassen aufgeteilt. sie definert NICHT die keywörter selbst. sie definiert abre sehr wohl welche klasse von keywörter wo vorkommen kann etc.
 
Fazit: Ein C++ Programmierer kennt auf jeden Fall den Umfang der C Syntax. Allerdings kann es passieren dass man aufgrund fehlender Spracherweiterungen teils unsauberen Code schreibt bzw. sich die Arbeit schwer macht.
Bisher sind mir aber wenig Fälle bekannt wo man nicht vor C++ mal mit C angefangen hat....

Den größten Unterschied sehe ich eben in der Anforderung an das Einsatzgebiet. Während man bei C++ stets versucht so weit wie nötig zu abstrahieren und modularisieren um die Lesbarkeit und wiederverwendbarkeit des codes zu erhöhen, wählt man C eben dort wo es auf performance ankommt.
 
DaZpoon schrieb:
Den größten Unterschied sehe ich eben in der Anforderung an das Einsatzgebiet. Während man bei C++ stets versucht so weit wie nötig zu abstrahieren und modularisieren um die Lesbarkeit und wiederverwendbarkeit des codes zu erhöhen, wählt man C eben dort wo es auf performance ankommt.

dem möchte ich widersprächen: man wählt C so gut wie nie wegen performance (das wäre auch quatsch) sondern wegen den beschränkten compilern für die zielplatformen. es gibt nur ganz wenige ausnahmen hier von und die beschränken sich auf die optimierung des speicheroverheads in einigen situation, wobei auch hier wieder zum großteil bedingt durch die compiler.

ansonsten ist weder c oder c++ performanter als das andere. völlig egal ob du objektorientiert arbeitest oder nicht, kannst du mikrooptimierungen wie shift-operatoren und und und nutzen.

das komplette objektorientirte gerüst fällt eh wieder flach beim compilieren. ja sogar die this->field geschichten werden bei guten compilern wegopitmiert wenn sinnvoll.


davon abgesehen, da C eine teilmenge ist von C++ kannst du fröhlihc objektorienteirt arbeiten und teile C-mäßig umsetzten.
 
Hier sei noch erwähnt, dass z.B. der ganze Visual-Studio-Kram nicht mal C99 unterstützt, C++11 aber schon (Komplett? Bin nicht sicher). Allein daran schon sieht man, dass es bei aller Ähnlichkeit signifikante Unterschiede gibt. Die Sprachen werden unabhängig voneinander weiterentwickelt.

Ich bin der Meinung, dass ein C++-Profi nicht automatisch guten C-Code schreibt und umgekehrt. Der Lernaufwand wird allerdings sicher geringer sein als wenn man von weniger alten oder "manuellen" Sprachen kommt.
 
Zurück
Oben