C vs. C++

Terrance & Philipp

Erfahrenes Mitglied
Hallo!

C ist doch eine Untermenge von C++, also jedes C Programm läuft als C++ kompiliert.

Für was braucht man also dann noch C? Ist es in gewissen Dingen schneller?

Grüsse
Michael
 
AFAIK ist C noch nicht OOP, d. h. Klassen etc. gibt es nur in C++.
Ja, C++ baut auf C auf, wobei natürlich auch einige alte C-Elemente missbilligt werden.
 
C ist doch eine Untermenge von C++, also jedes C Programm läuft als C++ kompiliert
Das stimmt nur bedingt! Zwar haben sich die Entwickler von C++ um Kompatiblität bemüht, jedoch nicht jedes C-Programm mit einem C-Comiler übersetzbar! Da diese Fälle aber verschwindend selten sind, kann man sagen "C ist einen Teilmenge von C++", oder auch "ein C-Programm ist ein C++-Programm, wenn auch kein gutes".
C++ bietet vom Problem zur Lösung einen neuen Weg! Aber ich finde, es ist eine Frage des eigenen Geschmacks (und des zu lösenden Problems), ob man die Erweiterungen von C++ nutzt oder nicht!

Gruß
Johannes
 
Im Prinzip braucht man C nicht. C++-Code wird grundsätzlich ebenso schnell und effizient kompiliert wie C-Code (wobei ich natürlich nicht alle erhältlichen Compiler getestet habe). Eigentlich programmiert heute fast jeder in C++, sogar dann, wenn objektorientierte Elemente gar nicht benötigt werden, weil C++ die Programmierung an manchen Stellen rein syntaktisch angenehmer macht.

Sollte es tatsächlich Unterschiede in der Codeerzeugung geben, so würde ich sie als rein akademisch -- will heißen in der Praxis irrelevant -- bezeichnen.

Gawayn
 
Danke für eure Antworten.

Wenn es von der Performance her und auch sonst keinen Grund für C gibt, wieso dann wohl sowas?

http://www.neomo.de/intern/jobs.php

Ihr Pensum an Objekt-orientierter Programmierung haben Sie bereits an der Uni erfüllt und sind nun froh, von Java und C++ nicht weiter belästigt zu werden.

...

Die gewünschten Fähigkeiten, geordnet nach absteigender Wichtigkeit:
Programmierung mit C

...
 
Offensichtlich haben sich die Kameraden von Neomo den Grundsatz gefasst, auf objektorientierten Code gänzlich zu verzichten. Ob das wohl fanatische OOP-Hasser sind? Soll's ja geben. Wie dem auch sei: Sie stehen nicht auf OOP und nehmen deswegen nur C. Wenngleich ich das nicht für sonderlich sinnvoll halte -- schließlich kann man auch in C++ ganz klassisch prozedural programmieren.

Gawayn
 
Es gibt auch Platformen wo es einfach nur C Compiler gibt und keine C++ Compiler, weil die verständlicherweise auch viel komplizierter sind zu entwickeln als C Compiler
 
Im Prinzip braucht man C nicht. Eigentlich programmiert heute fast jeder in C++, sogar dann, wenn objektorientierte Elemente gar nicht benötigt werden, weil C++ die Programmierung an manchen Stellen rein syntaktisch angenehmer macht.
Sorry, aber das halte ich für Blödsinn. ;)
Natürlich laufen C++-Anwendungen genauso schnell wie in C geschriebene. Aber dass man C++ braucht, auch wenn man keine OOP-Schemata benötigt, stimmt nicht. Beispielsweise bei der Programmierung von Betriebssystemen ist C++ eher hinderlich, weil man sämtliche Merkmale der Objektorientierung selbst implementieren muss, beispielsweise der new-Operator.
schließlich kann man auch in C++ ganz klassisch prozedural programmieren.
Was man aber nach Möglichkeit vermeiden sollte, da das schlechter Stil ist.
Und wenn man nur Funktionen wie printf/scanf nimmt, um prozedural zu programmieren, wird das Programm ein C-Programm sein und kein C++-Programm.
Wie dem auch sei: Sie stehen nicht auf OOP und nehmen deswegen nur C.
Nur weil man auf C++ verzichtet und stattdessen "nur" C nimmt, heisst das nicht, dass man auch auf OOP verzichten muss. Ein gutes Beispiel dafür wird wohl das Gtk+-Framework sein, das trotz C objektorientiert aufgebaut ist.
Welche Gründe man dafür haben sollte, kann ich Dir nicht sagen, aber es wird wohl welche geben. ;)
 
Natürlich laufen C++-Anwendungen genauso schnell wie in C geschriebene. Aber dass man C++ braucht, auch wenn man keine OOP-Schemata benötigt, stimmt nicht.
Das habe ich ja auch nicht behauptet. BRAUCHEN tut C++ niemand -- ich finde seine Syntax nur weniger umständlich als die von C.
Beispielsweise bei der Programmierung von Betriebssystemen ist C++ eher hinderlich, weil man sämtliche Merkmale der Objektorientierung selbst implementieren muss, beispielsweise der new-Operator.
Was hat der new-Operator mit einem Betriebssystem zu tun? Der new-Operator ist letzten Endes eine intrinsische Funktion der C++-Sprachdefinition, wird also von Compiler und Linker aufgelöst. Das Betriebssystem muss lediglich eine Funktion bereitstellen, mit der ein Programm Speicher reservieren kann. Das gehört zum Grundumfang jedes OS. Hier ist kein Nachteil bei der OS-Entwicklung.

OOP kann den Code langsamer machen. Das ist aber kein Problem von C++, sondern ein Problem der OOP, untern dem alle objektorientierten Sprachen zu leiden haben.
Und wenn man nur Funktionen wie printf/scanf nimmt, um prozedural zu programmieren, wird das Programm ein C-Programm sein und kein C++-Programm.
Das stimmt nicht. Wie ich in meinem vorherigen Posting schrieb, implementiert C++ eine von C an manchen Punkten verschiedene Syntax. Ein Programm, das nur printf und scanf verwendet, mag auf den ersten Blick wie ein antikes C-Programm anmuten, jedoch kann es durchweg C++-spezifisch sein.
Nur weil man auf C++ verzichtet und stattdessen "nur" C nimmt, heisst das nicht, dass man auch auf OOP verzichten muss. Ein gutes Beispiel dafür wird wohl das Gtk+-Framework sein, das trotz C objektorientiert aufgebaut ist.
Selbstverständlich kann man eine objektorientierte Struktur mit einer prozeduralen Sprache aufbauen. Das ist aber lediglich eine logische Struktur. Physisch ist das Programm prozedural, und entsprechend wird es vom Compiler behandelt.

Gawayn
 
Zurück