Wofür C++ und C?
-
Hi, ich bin gerade dabei C++ zu lernen. Nur hab ich jetzt ne Frage, was ist eigentlich der Unterschied zwischen C und C++?
Ist es möglich mit C++ große Programme oder sogar Spiele zu programmieren (Photoshop, Nero...)?
Ich arbeite im Moment mit dem Buch: C++. Lernen und professionell anwenden. Ich finde es persönlich eigentlich ganz gut, nur was dannach, oder sagt ihr das Buch is nix?
mfg Oliver
-
Photoshop ist denke ich mal in C++ programmiert:)
C++ ist Objektorientiert, C nicht... das ist der fundamentae unterschied! Denke ich:)
-
C wird sehr oft für hardwarenahes Zeugs verwendet
-
Alvarez schrieb:
Nur hab ich jetzt ne Frage, was ist eigentlich der Unterschied zwischen C und C++?
was das C in C++ angeht: http://david.tribble.com/text/cdiffs.htm
ansonsten, C++ hat klassen und kann vererbung. das gibt es in C in der form nicht.

-
BorisDieKlinge schrieb:
C++ ist Objektorientiert, C nicht... das ist der fundamentae unterschied! Denke ich:)
C++ begünstig die objektorientierte Programmierung.
@ Alvarez
C++ ist wohl eine der geeignetsten Sprachen für wirklich große Projekte und überhaupt eine sehr gute Wahl.Dass C sehr oft für hardwarenahes Zeugs verwendet wird, heisst nicht, dass C++ dazu nicht auch geeignet wäre. C ist da halt schlicht beliebter.
-
Alvarez schrieb:
Ist es möglich mit C++ große Programme oder sogar Spiele zu programmieren (Photoshop, Nero...)?
Vermutlich sollte selbst bei dir zu Hause ein Großteil oder zumindest ein großer Anteil aller Software die du benutzt in C++ (ggf. auch C) geschrieben sein. Neben vielen regulären Anwendungsprogrammen ist C++ auch im Spielesektor weit verbreitet (Nach meiner Schätzung dürften bei üblichen Spielen mindestens 75% aus dem C++ Umfeld stammen).
cu André
-
Vielen Dank, das hat mir schon alles sehr geholfen.
Wie mache ich aber nach dem Buch am besten weiter?
-
Learning by doing..
Mini Programm schreiben a'la "Hello World" , und das am bestn schon beim lesen diese buches..
Was du danach macht wissen wir nicht....

-
Tim schrieb:
C++ ist wohl eine der geeignetsten Sprachen für wirklich große Projekte und überhaupt eine sehr gute Wahl.
Tim, du als embedded-spezi kannst das nicht beurteilen

...sagt ein bekannter von mir über seine alten C++ projekte, an denen er noch manchmal wartungsarbeiten ausführen muss: 'am besten alles löschen und nochmal neu in *pieeeps* machen'.

-
naja man denkt doch oft "Am besten löschen und nochmal neu schreiben" egal in welcher sprache man es geschrieben hat...:) Sollte halt von Anfang an konequent "gut" programmieren um wartungsarbeiten zu meiden:)
-
Ein C Compiler muss ja weniger abdecken als ein standardkonformer C++ Compiler. Das führt nachvollziehbar dazu, dass ein reiner C Compiler da zu finden ist, wo ein C++ (noch) nicht reinpasst. C++ ist also nicht per se weniger geeignet für Mikrokontrollerprogrammierung etc. -- es ist manchmal schlicht und einfach nicht unterzubringen. Sowohl vom Compiler als auch von den Runtimelibraries her.
Es ist ein wenig so wie mit VI und Emacs. Der VI ist irgendwie bei jedem *n*x selbst bei einer Minimalinstallation dabei. Weil er so schön klein ist und kaum weitere Abhängigkeiten hat. Dass deswegen EMACS weniger geeignet ist, reine ASCII Dateien einzutippen, ist aber deshalb nicht richtig.
Mein persönliches Fazit:
Wenn man ein kleines Projekt schreiben will für rudimentäre Aufgaben auf anderen System als dem eigenen, fährt man mit C manchmal besser weil die Chance größer ist, nur einen C Compiler zu finden als einen C und einen C++ Compiler. Ein C Compiler ist auf vielen Systemen schon fast Standardausrüstung, während C++ oft nur bei Entwicklungssystemen zu finden ist.
(Das bezieht sich jetzt auf Verteilung in Quellcodeform.) Windows z.B. hat ja die MSVC++ Runtime auch standardmäßig dabei, so dass das für Binaries hier natürlich egal ist.
-
BorisDieKlinge schrieb:
Sollte halt von Anfang an konequent "gut" programmieren um wartungsarbeiten zu meiden:)
Ne, guter Code erleichtert Wartung. Wartung durch Coding generell zu vermeiden klappt nur selten

-
Alvarez schrieb:
Vielen Dank, das hat mir schon alles sehr geholfen.
Wie mache ich aber nach dem Buch am besten weiter?Kommt darauf an was du mit C++ anfangen willst. Vermutlich sollte als nächstes entweder eine C++ Vertiefung anstehen, oder erste Schritte Richtung irgendeiner graphischen Oberfläche (GUI). Mit graphischen Spielen (wenn das dein Interesse ist) würde ich mich frühestens dann auseinander setzen wenn ich Kenntnisse habe wie die jeweilige Oberfläche funktioniert...
Wenn du ein paar Anfängerfehler vermeiden willst würde ich dir raten möglichst nicht zu spät "Effektiv C++" (Autor: Scott Meyer) zu lesen, wobei du nicht zwingend mit deinen Kenntnissen alles darin verstehen solltest.
cu André
-
SeppSchrot schrieb:
Ein C Compiler muss ja weniger abdecken als ein standardkonformer C++ Compiler. Das führt nachvollziehbar dazu, dass ein reiner C Compiler da zu finden ist, wo ein C++ (noch) nicht reinpasst. C++ ist also nicht per se weniger geeignet für Mikrokontrollerprogrammierung etc. -- es ist manchmal schlicht und einfach nicht unterzubringen. Sowohl vom Compiler als auch von den Runtimelibraries her.
Das hört sich jetzt so an, als ob du glaubst, der Compiler liefe auf dem Microcontroller. EDIT:

-
Nein, so war es nicht gemeint Bashar.
Aber für weniger verbreitete Systeme kann ich mir vorstellen, dass eher ein reiner C Compiler zur Verfügung steht. Und selbst der nur mit beschnittener Runtimelib.
-
Undertaker schrieb:
Tim schrieb:
C++ ist wohl eine der geeignetsten Sprachen für wirklich große Projekte und überhaupt eine sehr gute Wahl.
Tim, du als embedded-spezi kannst das nicht beurteilen

Beurteilen kann ich alles. Es liegt am Leser meine Urteilsfähigkeit kritisch zu hinterfragen

-
SeppSchrot schrieb:
Aber für weniger verbreitete Systeme kann ich mir vorstellen, dass eher ein reiner C Compiler zur Verfügung steht. Und selbst der nur mit beschnittener Runtimelib.
Das stimmt. Die "beschnittene Runtimelib" ist auch sinnvoll und durchaus auch von den Standards unterstützt ("freestanding environments"). Macht ja auch wenig Sinn auf 8-Bittern mit 384 Byte RAM mit dynamischer Speicherverwaltung anzufangen

(abgesehen davon, dass es recht restriktive Richtlinien gibt die das sogar verbieten -> MISRA C)
-
Um nochmal auf die ursprüngliche Frage nach dem Unterschied zu sprechen zu kommen.
Viel wichtiger als die Unterscheidung „C++ ist objektorientiert und C ist das nicht“ finde ich etwas ganz anderes. Der Grund ist, dass es neben C++ auch andere objektorientierte Sprachen gibt, die das teilweise auch viel besser machen. C++ hingegen ist die einzige echte multi-paradigmale Sprache, die ich kenne. Im speziellen ist C++ aber eine der wenigen Sprachen, mit denen man wirklich generisch programmieren kann (damit meine ich jetzt das Paradigma der Generischen Programmierung). *Das* ist (zumindest für mich bzw. mein Anwendungsgebiet) der wichtigste Unterschied.
-
Undertaker schrieb:
Tim schrieb:
C++ ist wohl eine der geeignetsten Sprachen für wirklich große Projekte und überhaupt eine sehr gute Wahl.
Tim, du als embedded-spezi kannst das nicht beurteilen

...sagt ein bekannter von mir über seine alten C++ projekte, an denen er noch manchmal wartungsarbeiten ausführen muss: 'am besten alles löschen und nochmal neu in *pieeeps* machen'.

Dein Bekannter ist ja auch nicht kompetent.
-
Mr. N schrieb:
Dein Bekannter ist ja auch nicht kompetent.
es gibt viele, die was ähnliches behaupten. ...wie z.b. dieser typ: http://www.mistybeach.com/articles/WhyIDontLikeCPlusPlusForLargeProjects.html
