06.06.2012, 21:34
Der große Unterschied zwischen C und C++ ist, dass C++ eine (relativ) High-Level-Sprache ist und sich, da auch Objektorientierung möglich ist, auch kompliziertere Programme recht gut und einsichtig programmieren lassen.
C ist hingegen schon eher low-Level und kann Programme annähernd so schnell laufen lassen, als wären sie in Assembler geschrieben (was das eindeutig Schnellste, aber auch das eindeutig Unübersichtlichste wäre). Da aber keine Objektorientierung möglich ist, sind komplexere Programme nur sehr schwer zu realisieren.
Was beide C-Sprachen eint, ist eine sehr gute Effizienzoptimierbarkeit, aber auchdie Wichtigkeit sauber zu programmieren. Wo man in Java einfach eine Variable übergibt, muss man in C/C++ zwischen Variable, Referenz und Pointer unterscheiden, was dafür schnelleren Zugriff erlaubt. Ein weiteres Beispiel ist die Nullpointer-Exception: Wenn in Java ein Programm auf einen nicht existenten Speicherbereich eines Arrays/einer Liste zugreifen möchte, fängt java das ab und schmeißt eine NullPointerException. Derartige Abfragen kosten natürlich Zeit. Diese Zeit wird bei C/C++ gespart, unter dem Risiko, dass man bei unsauberer Programmierung in Bereiche reinschreibt, die einem nicht zugänglich sein dürften. Zwar gibt es Compiler, die das abfangen, aber wenn du da nicht sauber programmierst, kommst du nicht dort an, wo du sein willst.
C ist hingegen schon eher low-Level und kann Programme annähernd so schnell laufen lassen, als wären sie in Assembler geschrieben (was das eindeutig Schnellste, aber auch das eindeutig Unübersichtlichste wäre). Da aber keine Objektorientierung möglich ist, sind komplexere Programme nur sehr schwer zu realisieren.
Was beide C-Sprachen eint, ist eine sehr gute Effizienzoptimierbarkeit, aber auchdie Wichtigkeit sauber zu programmieren. Wo man in Java einfach eine Variable übergibt, muss man in C/C++ zwischen Variable, Referenz und Pointer unterscheiden, was dafür schnelleren Zugriff erlaubt. Ein weiteres Beispiel ist die Nullpointer-Exception: Wenn in Java ein Programm auf einen nicht existenten Speicherbereich eines Arrays/einer Liste zugreifen möchte, fängt java das ab und schmeißt eine NullPointerException. Derartige Abfragen kosten natürlich Zeit. Diese Zeit wird bei C/C++ gespart, unter dem Risiko, dass man bei unsauberer Programmierung in Bereiche reinschreibt, die einem nicht zugänglich sein dürften. Zwar gibt es Compiler, die das abfangen, aber wenn du da nicht sauber programmierst, kommst du nicht dort an, wo du sein willst.
"Mögen eure Wurzeln die Tiefe durchdringen
und eure Äste den Himmel umarmen" (Arborandra in GS1)
Allgemein sehr selten da.
und eure Äste den Himmel umarmen" (Arborandra in GS1)
Allgemein sehr selten da.