Einleitung

Willkommen zu unserem C++-Tutorial! Im Laufe dieses Tutorials werdet ihr diese Programmiersprache erlernen, und auch hoffentlich lieben lernen.

Bevor wir uns in das Gefecht stürzen möchte ich noch ein paar Dinge klären. Unter C Programmierern haben sich einige Mythen und Legenden die „mächtige“ Sprache C++ betreffend eingebürgert, von denen nicht alle stimmen.

Ein paar Fragen, die es zu beantworten gilt

Was ist C++?

Für eine kurze Einführung lest euch kurz die Unterschiede zwischen C und C++ durch. Dieser kleine Artikel gibt euch einen guten Einblick darüber, was C++ eigentlich ist.

C++ ist eine hochentwickelte und ausgereifte Mehrzweckprogrammiersprache, die viele wichtige Programmierkonzepte unterstützt.

Durch die ganze Sprache hindurch gibt es ein paar dominierende Paradigmen, die den ganzen Aufbau und viele Entscheidungen erklären:

  • Performance. Die Sprache ist darauf ausgelegt Höchstleistungen zu bringen und sie ist neben C eine der schnellsten Programmiersprachen die es gibt. Das liegt unter anderem daran dass sie sehr hardwarenah ist (so wie C).
  • Features, die man nicht verwendet, muss man nicht bezahlen. In anderen Sprachen bringen Features auch Laufzeitverluste, auch wenn man sie nicht verwendet möchte (z.B. in Java und C#). Das zu vermeiden hat oberste Priorität.
  • Allgemeinheit: C++ ist eine Mehrzweckprogrammiersprache, das bedeutet man kann sie für alles verwenden: Spiele, Hardwareprogrammierung, CGI Programme (Webprogrammierung), wissenschaftliche Programme, usw. Das ist auf den ersten Blick logisch, doch sehr viele andere Sprachen haben sich auf bestimmte Anwendungsbereiche spezialisiert.
  • Effektivität: Durch viele Features, Konzepte und Bibliotheken soll dem Programmierer schnelle und effektive Programmierung ermöglicht werden.
  • Klarheit: Der Programmierer soll durch eindeutige Bezeichnungen, Strukturen und Design dazu angehalten werden sauber zu Programmieren.

Soll ich zuerst C oder C++ lernen?

Die Antwort auf die Frage ist nicht ganz einfach, denn es stimmt schon, C++ ist „nur“ eine Erweiterung zu C.

Wenn ihr C++ auf proggen.org lernen wollt, dann ist die Frage einfach zu beantworten, denn das C++ Tutorial ist „nur“ eine Erweiterung zum C-Tutorial. Die Grundlagen sind nämlich identisch. Das C-Tutorial von proggen.org ist bzw. wird so geschrieben, dass es Dich auf den Weg zum C++-Programmierer bringt. Das C-Tutorial und das C++-Tutorial von proggen.org sind gewissermaßen ein großes C/C++-Tutorial.

Wenn ihr aus Büchern oder anderen Tutorials lernen wollt, dann darf man sich mit der Frage durchaus tiefergehend auseinandersetzen:

Man kann mit C anfangen und dann die Features von C++ „dazulernen“. Wer jetzt also schon C gelernt hat, hat nichts umsonst gemacht, denn (fast) alles was ihr in C gelernt habt werdet ihr in C++ brauchen.

Allerdings ist C ist eine ziemlich alte Sprache und beherbergt auch einige Probleme. Sie fördert einige Fehler, die der richtige Umgang mit C++ verhindern kann. Auch sollte man auf manche Konzepte in C verzichten und stattdessen die verbesserten C++-Konzepte verwenden, sprich: ihr müsst in C++ „denken“, also in den Konzepten, um die C erweitert wurde. Im C-Tutorial von proggen.org wird auf veraltete Konzepte hingewiesen und beschrieben, was man stattdessen machen kann oder sollte.

Es kann durchaus wichtig sein, welche Sprache man zuerst lernt.
Ein Programmierer sollte auf jeden Fall in der Lage sein relativ schnell andere Sprachen zu erlernen. Oft ist es aber so, dass sich das Lernen auf die Syntax und eventuell ein paar Bibliotheken beschränkt. Es fällt oft schwer „die Idee“ einer Programmiersprache zu verinnerlichen.

Umso wichtiger ist es, dass ihr gleich am Anfang eine Programmiersprache lernt, die ziemlich gut den Tatsachen (eben der Hardware) entspricht. Damit wären wir schon mal bei C und C++ ziemlich gut, denn andere Sprachen wie Skriptsprachen oder halbkompilierende Sprachen wie Java und C# täuschen euch Dinge vor, die es so im Computer gar nicht gibt.

Mit der Wahl von C++ rüstet ihr euch aber auch gleich mit effektiven Werkzeugen und einem guten Verständnis einiger interessanter Konzepte.

Fazit: Es ist eure Entscheidung ob ihr zuerst C oder C++ lernt. C++ sollte man grundsätzlich nur dann ausblenden, wenn man wirklich kein C++ programmieren darf.

Wieso soll ich C++ lernen?

  • Als „Bugfix“ zu C

Wahrscheinlich lest ihr diesen Artikel, nachdem ihr mit dem C-Tutorial mehr oder weniger fertig seid. Vielleicht werdet ihr euch an manchen Stellen gedacht haben „Das ist aber seltsam“ oder „Irgendwie nicht ganz logisch“. C ist eine sehr (sehr) alte Programmiersprache die heute noch lebt und häufig verwendet wird. Das soll aber nicht darüber hinwegtäuschen, dass sie einige „Problemchen“ enthält. Dazu zählt gelegentlich fehlende Typsicherheit (davon kann man nie genug haben ;-) ), das recht „gefährliche“ Hantieren mit Zeigern, der Bösewicht „Präprozessor“, mangelnde Wiederverwendbarkeit und viele, viele andere kleine Problemchen.

Mein Paradebeispiel ist der GCC Compiler, einer der größten und wichtigsten der heutigen Zeit. Selbst dieser Compiler - wenn ohne bestimmte Flags aufgerufen - akzeptiert schlimmen, furchtbaren, alten, nicht-standardkonformen Code. Für mich persönlich ist das ein Zeichen für die Altersschwäche von C (Andere Leute sehen das anders). C++ erlaubt euch an vielen Stellen eine sicherere, elegantere Handhabung von Problemen, als es in C möglich wäre.

  • Objektorientierte Programmierung (OOP)

Dieser viel gehörte und populär gewordene Begriff bezeichnet eine Art der Programmierung, in der man das Programm ähnlich wie die Welt betrachtet und zwar als eine Ansammlung von Objekten, die miteinander agieren. Demgegenüber steht die prozedurale Programmierung, die als Folge ablaufender Handlungen zu verstehen ist. Lasst euch nicht täuschen, OOP ist auch in C möglich. Allerdings gibt es in C++ einige Strukturen die euch dabei helfen, eure Objekte zu verwalten. Hier ist die Erweiterung zu C, die das Programmieren deutlich vereinfacht.

  • Generische Programmierung

Die generische Programmierung ist eine Lösung für „eher fortgeschrittene“ Programmierer zum Problem der Wiederverwendbarkeit.
Normalerweise ist ein Algorithmus oder eine Klasse nur für einen bestimmten Datentypen gültig. Was aber, wenn er auch mit anderen Datentypen funktionieren würde? Alles nochmal schreiben? Um das zu verhindern wurden in C++ Templates erfunden, die die Wiederverwendbarkeit von Algorithmen erleichtert.

Ist C++ nicht zu schwer für mich?

Kurz: Nein.
Zugegeben, C++ ist eine große (eigentlich gigantische) Sprache und sie enthält ein paar sehr hoch entwickelte Konzepte, die in anderen Programmiersprachen wie Java oder C# teilweise wieder entfernt wurden. Wenn ich ganz ehrlich bin, glaube ich kaum, dass es überhaupt jemanden gibt, der die Sprache „vollständig“ beherrscht. Es gibt immer wieder Konzepte und Möglichkeiten, die es zu lernen gibt (oder die erst „entdeckt“ werden!). Jetzt kommt das große Aber:
ABER es sind alles Möglichkeiten und keine Zwänge. Wenn ihr nicht wollt, dann müsst ihr sie nicht verwenden. Eine wunderbare Eigenschaft von C++ ist, dass man sich die Sprache auch gut benutzen kann, wenn man noch nicht alle Fähigkeiten kennt. Sie ist darauf ausgelegt, dass Anfänger relativ schnell einen Einstieg finden. Für Fortgeschrittene gibt's auch ein paar nette Sachen, Profis können sich auch austoben und erhalten Werkzeuge an die Hand, die in „moderneren“ Sprachen einfach fehlen. Hier soll noch erwähnt sein, dass es durchaus vorkommen kann, dass ihr am Anfang Fehler macht, die einem Anfänger unlogisch erscheinen. Das wird sich erst klären, wenn ihr ein bisschen weiter seid. Aber lasst euch nicht entmutigen.