C++ lernen, womit zuerst anfangen?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wenn ich mir deine Fragen aus den letzten Tagen so ansehe, habe ich das Gefühl, dass du das größte Problem an C++ schon am eigenen Leib erfahren hast: die flache Lernkurve.

Du scheinst schon ein paar Tage dranzusitzen, vielleicht mit Tutorials, vielleicht hast du sogar ein Buch, und du tippst fleißig deine Befehle ab und spielst damit rum, aber irgendwie sind die Ergebnisse unbefriedigend. Du hast nur diese schwarze Textbox, nur ganz simple Ein- und Ausgabewerkzeuge, und irgendwie ist das alles nicht das, was du dir vorgestellt hast, schließlich willst du doch schicke Fenster, so, wie du es von deinem Windows gewohnt bist.

Aber so langsam dämmert dir vielleicht, dass das so simpel alles gar nicht ist.

Nun, es ist so: Programmieren ist ein schönes, interessantes und spannendes Hobby, aber leider auch eine komplexe Angelegenheit. In dem Stadium, in dem du jetzt bist, kannst du das ganz gut mit dem Lernen einer natürlichen Sprache vergleichen. Stell dir vor, du lernst eine Fremdsprache, beispielsweise Italienisch.

Natürlich würdest du gern politische Diskussionen oder anregende Gespräche über aktuelle Kinofilme oder auch Fachsimpelei über Kochrezepte mit einer schicken Italienerin führen. Und das wirst du auch irgendwann können - aber der Weg dahin ist weit. Du wirst viele, viele Monate lang ganz simple Dialoge üben, die man im normalen Leben nie führen würde. Du übst, dich vorzustellen, deine Hobbys auf Italienisch auszudrücken, nach dem Weg zum Bahnhof zu fragen, und so weiter und so weiter.

Das ist trivial und langweilig und überhaupt nicht das, was du dir vorgestellt hast, als du dir deinen nächsten Italienurlaub vorgestellt hast. Aber es ist notwendig, um die Grammatik und die Eigenheiten der italienischen Sprache zu lernen, um deinen Wortschatz zu erweitern und um all das nicht nur zu "verstehen", sondern zu verinnerlichen. Erst, wenn bestimmte Dinge so sitzen, dass sie auch in deinem Unterbewusstsein jederzeit abrufbar sind und du ein Gefühl für die Sprache hast, bist du bereit, dich mit fortgeschritteneren Aspekten wie echten Gesprächen zu beschäftigen.

Nun gibt es sicherlich auch Programmiersprachen, die dir alles etwas vereinfachen und dich schneller ans Ziel kommen lassen. Unter Windows könntest du zum Beispiel Visual Basic lernen. Auch da musst du viel lernen, aber du arbeitest von Anfang an mit deinen Fenstern, die du auch nicht programmieren musst, sondern die du dir "zusammenklickst" und dann "nur noch" die Funktionalität selbst schreibst. Aber diese Sprachen schränken dich nunmal auch sehr ein. Du möchtest vermutlich kein "Reisewörterbuch", aus dem du vorgefertigte Sätze vorliest und dann hoffen musst, dass das Gespräch mit der Italienerin keine unvorhergesehene Wendung nimmt. Du möchtest vermutlich Italienisch lernen und dich frei mit deiner Italienerin unterhalten.

C++ ist eine der komplexesten Programmiersprachen überhaupt, und die Grundlagen müssen definitiv fest sitzen, bis du die Sprache wirklich zu etwas Sinnvollem benutzt. Das ist erstmal enttäuschend und frustrierend, aber du hast nunmal nur zwei Möglichkeiten: Entweder arrangierst du dich damit, dass du für mindestens ein Jahr lang keine schicken bunten Fenster mit Buttons und Menüs verwirklichen kannst, oder du verabschiedest dich von deinem Traum von der Italienerin und fährst in den Schwarzwald.

Pischi 
Fragesteller
 02.07.2013, 11:46

Sehr gute Antwort! Top! Ich werde es dann wohl einstecken müssen, dass ich noch 1 Jahr in der Konsole arbeiten muss, aber ich möchte aufjeden Fall am Ball bleiben, da ich diesen Weg auch beruflich einschlagen möchte. 2 Jahre habe ich ja noch Zeit bishin zur Ausbildung.

1
ceevee  02.07.2013, 19:47
@Pischi

Was noch gar keiner gefragt hat: warum eigentlich ausgerechnet C++ und keine andere Programmiersprache. Und um die üblichen Klischees auszuräumen:

  • nein, C++ ist nicht die beste Programmiersprache, es ist für den Anfang auch egal, ob damit viele Spiele programmiert werden - diese kann man auch mit anderen Programmiersprachen machen und
  • nein, man landet nicht zwangsläufig irgendwann bei C++. Java / Web / .NET / ... - Programmierer werden genauso gesucht.

Vielleicht gibt es ja einen besonderen Grund für C++, aber wenns nur als Vorbereitung für die Ausbildung sein soll (was dein zukünftiger Arbeitgeber fordert, weisst du heute noch nicht und die Algorithmen und Datenstrukturen in den Programmiersprachen sind recht ähnlich), dann wäre eine Programmiersprache mit einer steileren Lernkurve vielleicht besser.

1
Roadrunner2  02.07.2013, 20:28
@ceevee

Aber mit C++ kann man eigentlich nichts falsch machen. C#/Java/... haben sehr viele Elemente davon übernommen, weshalb der Umstieg dann nicht schwer fallen sollte.

Außerdem ist C++ (nach C und Assembler) eine der schnellsten Programmiersprachen, man hat immer noch relativ viele Freiheiten (Zeiger etc.) und C++ ist auch sehr gut für Anwendungsprogrammierung geeignet. C# ist da evtl. noch weiter vorn, aber dafür ist C++ deutlich plattformunabhängiger als C#, welches heute praktisch nur auf Windows vernünftig einsetzbar ist.

C würde für all meine genannten Vorteile noch besser passen, ist aber offensichtlich ungeeignet, wenn man Objektorientierung lernen will.

2
ceevee  03.07.2013, 18:35
@Roadrunner2

Nunja, wie schon Spiderman sagte: "Große Macht bringt auch große Verantwortung mit sich". Pointer sind für Anfänger nur unnötig kryptisch und können auch dafür sorgen, dass der Rechner nach ein paar "Segmentation Faults" aus dem Fenster fliegt. Und die Geschwindigkeitsunterschiede zwischen C/C++ und Java/C# sind heutzutage auch minimal, wir haben nicht mehr 1995 (und für einen Anfänger ist es eh egal, wie schnell das Programm läuft). Mit der Plattformunabhängigkeit isses das Gleiche, wenn Pischi vorerst nur auf Windows programmiert, dann kann er auch C# nehmen. Dafür sind Assembler/C/C++ in der Komplexität viel schwerer, was sich etwa schon zeigt, wenn man ein Programm mit grafischer Oberfläche zaubern will, das ist bei Java und C# deutlich einfacher. C++ ist eine tolle Sprache, aber nicht für jeden und sie ist auch kein Allheilmittel.

0
Pischi 
Fragesteller
 04.07.2013, 01:05
@ceevee

Auch wenn es mit der Arbeit nicht klappen sollte, würde ich dann C++ als Hobby nebenbei machen. Ich gehe 2 Jahre zur Berufsschule, wenn man aktiv lernt sollte man doch relativ gut C++ beherrschen können, oder etwa nicht? Und da müsste der Umstieg auf C# oder Java usw. nicht alt zu schwer, oder sehe ich das etwa falsch?

0

Ich bin Programmierer von Beruf. Mein Rat wäre, egal welche Programmiersprache Du lernen möchtest, lerne erstmal das Programmieren selbst! Struktogramme, PAPs, usw. Das ist alles wichtig um überhaupt im Kopf zu verstehen, was im Computer abläuft. Dann, und auch hier ist es Dir wieder frei welche Sprache Du lernen möchtest, such Dir ne schöne Doku zu der Sprache ( ja, es sind idR dicke Welzer, aber wenn Du die wirklich Schritt für Schritt durcharbeitest läuft es ganz schnell wie von alleine ) und arbeite das Buch durch. Dann bist Du schon bald in der Lage eigene Programme zu schreiben.

Es gibt m.E. nicht "die ideale Sprache" für den Einstieg. Überleg Dir einfach, welche Sprache Du lernen möchtest. Dies ist zum Großteil ja auch davon abhängig, was Du machen möchtest. Du kannst zB. ja nicht mit jeder Sprache ein Spiel programmieren oder eben nicht mit jeder Sprache die ideale Datenbankanwendung.

Vorteil an C++ und auch an C# ist eben, dass sie sehr individuell einsetzbar sind, anders als einige "kleine" Sprachen, die nur für einen sehr bestimmten Bereich einsetzbar sind.

Ich denke das Problem bei C++ alleine wird die grafische Ausgabe sein. Du kannst zwar lauter tolle Dinge programmieren aber irgendwie sieht alles nur wie Bockmist aus. Du kannst ja nicht mal nen Kreis oder Rechteck am Fenster ausgeben.

Was mir zu C++ sehr geholfen hat war OpenGL. OpenGL kann man eigentlich mit den meisten Sprachen verwenden so dass du dort gelerntes also auch wo anders brauchen kannst.

OpenGL heißt Open Graphics Library bzw. Offene Grafik Bibliothek auf Deutsch.

Du machst quasi wie bei

#include <iostream>

bei dem du deine IN und OUT Befehle (IO) importierst einfach

#include "glut.h" 

wobei glut die OpenGL Datei ist die du dir runterladen musst und in das Verzeichnis mit der .exe Datei kopierst.

Danach kannst du genau wie cout und cin auch, ohne viel Aufwand lauter tolle Grafikbefehle benutzen was auf jeden Fall wesentlich mehr Spaß macht als die normale Konsole.

man muss allerdings ein paar Dinge dabei beachten (wie überall). Es reichen aber schon ein paar Tutorials im Netz und du kannst Pyramiden und all sonen Kram zeichnen lassen.

Fang am Anfang auf jeden Fall mit 2D an. Stürz dich nicht direkt auf 3D, das ist vielleicht noch ein wenig zu kompliziert für den Anfang gerade wenn man noch nicht so den schimmer von höherer Mathematik hat.

Mit mathematischem Know-How kannst du dann später mit OpenGL deine eigene kleine Game-Engine bauen oder - falls es bei der Ausbildung bleibt - eine fertige Engine benutzen. Wenn dich sowas interessiert würde ich aber auf jeden Fall ein Informatikstudium nach deiner Ausbildung empfehlen. Gewöhn dich also besser nicht zu sehr ans Geld :-) Leg dir ordentlich was zur Seite!


Tutorial: http://www.youtube.com/watch?v=zIVioEZJSmk

Bujin  02.07.2013, 12:08

Von OpenGL kann man auch wunderbar zum Browsernachfolger WebGL wechseln. Mit WebGL Fähigkeiten kannst du richtig Geld verdienen! Google setzt darauf und in Zukunft wird sich das wohl durchsetzen da man keine Plugins mehr braucht um zB. ein 3D Spiel im Browser zu spielen. Mittlerweile unterstützen (bzw. planen es) es auch schon die meisten Browser.

0

Der beste Einstieg um C++ zu lernen ist C++ zu lernen. Immer dieser quatsch eine andere Sprache als Sprungbrett zu lernen. Die Sprachen haben nunmal ihre Eigenheiten, lernst du was anderes musst du dich umgewöhnen, gerade bei sowas wie C#, was wohl eher an Java erinnert, als an C++.

Fang einfach mit C++ an, bleib erstmal in der Konsole und lern die Grundlagen. Anfangsthemen wären wohl Ausgabe, Variablen, Eingaben, Verzweigungen, dann weiter mit Schleifen, Funktionen und Arrays, etwas Stringverarbeitung, Klassen, ggf. Filehandling und danach kommen schon speziellere Sachen wie Pointer und co, die in dieser Form eher C/C++ spezifisch sind.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012

Das würde mich auch mal interessieren,

Selber habe ich bisher nur Pascal und Fortran gelernt (also die normalen proceduralen Sprachen)...das ist aber schon lange her.

Jetzt will ich was was auch leicht in Richtung objektorientiert geht,

Ich dachte C++ ist die ideale Sprache sogar auch für Anfänger. C# ist ja auch nicht soo viel anders.

Bin da selber bischen ratlos.

Pischi 
Fragesteller
 02.07.2013, 02:34

Also ich habe jetzt bisschen mit C++ angefangen, eigenen Taschenrechner und so geschrieben, aber wollte halt auch wissen wies noch einfacher geht.

0
TUrabbIT  02.07.2013, 03:09
@Pischi

Am einfachsten und typischer Einstieg "Hello World!"?

Lern Java mit Java ist auch eine Insel. Java ist noch etwas netter für den Einstieg ins objektorientierte als C++ , Java ist auch einfacher als Einstieg.

0