C++ lernen

Status
Für weitere Antworten geschlossen.

paulderkeks

Cadet 2nd Year
Registriert
März 2013
Beiträge
27
Hallo,
ich würde gerne C++ lernen doch ich habe in einigen Foren gelesen, dass man, bevor man C++ lernt, erstmal C lernen und dann auf C++ umsteigen sollte. Ich würde gerne ein paar Meinungen, Tipps, etc. dazu hören.
Welche Grundlagen/welches Vorwissen sollte man haben?
Kann mir jemand gute Tutorials vorschlagen?
Danke schonmal ;)
 
Ich lerne seit ein paar Wochen C (mit dem Tutorial auf proggen.org), ansonsten, nein.
 
Lern direkt C++, dann lernst du sofort Klassen, enums, Sichtbarkeiten etc. kennen. C ist heutzutage ein ziemliches Gefrickel, weil es vieles einfach noch zu umständlich macht.
 
C würde ich nur dann lernen wollen wenn ich wüsste dass ich irgendetwas im embedded bereich kreieren möchte. Willst du für den einstieg ein ganz simples game erstellen um damit näher an die Sprache zu rücken, würde ich ganz klar c++ oder java lernen.

Also was in meinen Augen sinn macht ist java zu erlenen und dann auf c++ umsteigen, die ähnlichkeiten sind definitiv gegeben, aber auch mit c. Nur ist c eingeschränkt OO.
 
Habe mir folgendes Buch bei Amazon bestellt:

C++ in Easy steps

Hat glaub schon das C++ 2011 Update...habe es mal mit einem ANDEREN Buch von 2003 probiert und war dann natürlich total enttäuscht als nix geklappt hat wegen den sprachlichen Neuerungen :D

Ist auf englisch, aber viele Bilder, dünn (ca 180Seiten) und das wesentliche ist drin.

Komme damit eigentlich bisher ganz gut zurecht und werde mir, wenn ich das soweit durch habe evtl. was dickeres holen und mich im Internet mit weiteren Themen rumschlagen. So lerne ich erst einmal die absoluten Basics und das komplexere Programmieren kann dann später kommen :)

Mal eine Feage an die Profis:
Mit welchen Themen, kann man sich im Bereich c++ gut beschäftigen, wenn man die Basics soweit "kann" (Üben, Üben, Verstehen,etc ist klar)?
Ist es lohnenswert irgendwas für ein z.B. Spiel zu machen? Wenn ja: was bietet sich an?
Was wäre noch zu empfehlen, um besser zu werden?
Generell würde mich Modding sehr interessieren, aber das ist glaub - so meine aktuelle Vorstellung - verdammt schwer/unmöglich als Newbie, oder irgendwas mit der CE3 zu basteln für eine LAN...

Mir fehlen da aktuell gewisse "Ziele", da es mit solchen einfach leichter fällt, v.a. wenn man sie wie ein Spiel später nutzen kann :)
 
Zuletzt bearbeitet:
Generell würde mich Modding sehr interessieren, aber das ist glaub - so meine aktuelle Vorstellung - verdammt schwer/unmöglich als Newbie, oder irgendwas mit der CE3 zu basteln für eine LAN...

Modding hat in der Regel weniger etwas mit der Programmierung zu tun als mit dem Design. Denn das Grundgerüst die Engine steht ja bereits; meist muss man beim Modding nur den Leveleditor bedienen, und Objekte wie Texturen oder 3D-Meshes in externen Programmen wie Photoshop oder 3D-Studio erzeugen. Das wenige Programmieren was dort anfällt ist es dort ein paar kleinere Skripte in dem Leveleditor zu schreiben.
 
Zuletzt bearbeitet:
Also was sich eigentlich bei jeder Sprache gut zum üben eignet sind so Dinge wie das ausgeben von Zahlenfolgen(z.B. Fibonacci-Folge oder Primzahlen) oder Such- und Sortieralgorithmen.
Bei diesen kann man schon mal ganz gut so Sachen wie Rekursion, Schleifen und Zeiger lernen. Wenn man die grundlegenden Dinge beherscht, dann einfach mal überlegen was für kleine Programme man selber gebrauchen könnte und einfach anfangen mit dem Schreiben.

Auch immer mal wieder alte Programme rauskramen und sich nochmal den Code anschauen. Man wird dann meist feststellen das man Dinge einfacher/besser hätte lösen können. Diese Verbesserungen dann einfach mal implementieren.

EDIT:
Wie Nai schon sagte, Modding hat meistens eher was mit Design zu tun, so wie Spiele Entwicklung eigentlich im allgmeinen. Das Programmierarbeiten die dort anfallen sind in den meisten fällen auch sehr sehr Mathe lastig(Grade wenn es um 3D Grafik geht).
 
Zuletzt bearbeitet:
Also ich würde mich nach Grundkenntnissen in C++ an Qt wagen. Dann kann man kleinere grafische Tools* zusammenzimmern. GUIs sind eine nette Anwendung für Objekte und Vererbung ("QPushButton erbt von QWidget, was wiederum von QObject erbt"). Zwar merkt man Qt den Ursprung aus den 90er an, aber ein besseres grafisches Toolkit kenne ich nicht. Außerdem bringt es noch eigene Klassen z.B. für Strings mit, die deutlich einfacher handzuhaben sind als std::string. Wenn man rein mathematische Probleme löst, lernt man primär Mathe und nicht programmieren, da zum Lösen solcher Probleme man sehr wenig Sprachfeatures von C++ einsetzen muss.


*MP3-Tagger, oder eine Anwendung mehrere Dateien gleichzeitig nach einem bestimmten Muster umbenennen etc. Für so eine Sorte Anwendung bedarf es nämlich nur die Fähigkeit Dokumentationen zu Bibliotheken lesen zu können und keine tiefgreifenden Informatik Kenntnisse o.ä, so das man sich auf's programmieren konzentrieren kann.. Außerdem könnte das Endergebnis tatsächlich einen Nutzen haben, auch eine Form der Motivation.
 
Ich bin der Meinung, man sollte C und C++ umbenennen. Dass die Sprachen so ähnlich heißen, sorgt nur für Verwirrung und
hat überhaupt keinen Nutzen und spiegelt auch die Realität nicht wider, dass C++ aus C gewachsen ist aber mittlerweile eine
völlig unabhängige Sprache ist.

Wenn jemand Deutsch lernen möchte, käme er im Leben nicht auf die Idee, ob es sinnvoll wäre, erst die indogermanische
Ursprache zu lernen. Aber diese abstruse Idee bekommt man bei C und C++ durch die unglückliche Namenswahl geradezu
aufgedrängt. Das geht so weit, dass manche Menschen in völliger Verwirrung solch Hirnakrobatik vollführen, wie von "C/C++"
zu sprechen.

Das darf so nicht weiter gehen! Ich verlange, dass das sofort geklärt wird. Ein Moderator muss für beide Sprachen eine
unmissverständliche und verbindliche neue Bezeichnung einführen. Jetzt!

:3
 
Hier ist eine Bücherliste. Der C++ Primer ist so ziemlich das beste Buch zum Einstieg. Er deckt auch C++11 ab. Mit den älteren Versionen würde ich auch nicht mehr anfangen.

Stelle dich auf viel Arbeit und viele WTFs ein. C++ ist die komplizierteste und komplexeste praxisrelevante Sprache, die es gibt. Mit C brauchst du nicht anzufangen. C++ und C haben so gut wie nichts mehr miteinander zu tun und C ist in der Windows-Welt irrelevant.
 
Zuletzt bearbeitet:
C ist aber eine Untermenge von C++, das heißt, man könnte C-Libs in C++ verwenden, wenn man ein böser Programmierer ist.

Prinzipiell kann man auch mit C anfangen, der Tipp mit Qt ist aber sicher nicht schlecht. Wenngleich (!) man damit als Anfänger schwierig klarkommen dürfte, da man Qt-Projekte nicht so einfach bauen kann, weil die Qt Makros ja noch von dem - wie war das? - Qt eigenen Präprozessor etc. blabla in C Code umgewandelt werden müssen. Lange Rede kurzer Sinn: Man braucht auch noch CMAKE.
 
asdfman schrieb:
Ich bin der Meinung, man sollte C und C++ umbenennen. Dass die Sprachen so ähnlich heißen, sorgt nur für Verwirrung und
hat überhaupt keinen Nutzen und spiegelt auch die Realität nicht wider, dass C++ aus C gewachsen ist aber mittlerweile eine
völlig unabhängige Sprache ist.

Wenn jemand Deutsch lernen möchte, käme er im Leben nicht auf die Idee, ob es sinnvoll wäre, erst die indogermanische
Ursprache zu lernen. Aber diese abstruse Idee bekommt man bei C und C++ durch die unglückliche Namenswahl geradezu
aufgedrängt. Das geht so weit, dass manche Menschen in völliger Verwirrung solch Hirnakrobatik vollführen, wie von "C/C++"
zu sprechen.

Das darf so nicht weiter gehen! Ich verlange, dass das sofort geklärt wird. Ein Moderator muss für beide Sprachen eine
unmissverständliche und verbindliche neue Bezeichnung einführen. Jetzt!

:3

*unterschreib* :D
Ergänzung ()

F_GXdx schrieb:
Prinzipiell kann man auch mit C anfangen, der Tipp mit Qt ist aber sicher nicht schlecht. Wenngleich (!) man damit als Anfänger schwierig klarkommen dürfte, da man Qt-Projekte nicht so einfach bauen kann, weil die Qt Makros ja noch von dem - wie war das? - Qt eigenen Präprozessor etc. blabla in C Code umgewandelt werden müssen. Lange Rede kurzer Sinn: Man braucht auch noch CMAKE.

Oder man spielt zum Anfang ein bißchen mit dem QtCreator herum und verschiebt das Makefile-Zeugs auf später.
 
F_GXdx schrieb:
C ist aber eine Untermenge von C++
Das stimmt nicht. C und C++ überschneiden sich lediglich an einigen Stellen.

Oder anders: Es gibt eine Teilmenge von C, die auch auch eine Teilmenge von C++ ist, aber selbst dann gibt es noch Stellen mit unterschiedlichem Verhalten bei gleicher Syntax.

Man kann einem C++-Compiler nicht einfach C-Code geben und erwarten, dass alles funktioniert (weder syntaktisch noch semantisch).

Edits: Formulierung und so...
 
Zuletzt bearbeitet:
Sorry, du hast Recht! Boah, ich hasse die C-Sprachen. Man muss sich einfach zu viel merken.

C / C++ / Objective C -> *boom*
 
C++ ist die komplizierteste und komplexeste praxisrelevante Sprache, die es gibt
Komplex? Auf jeden Fall. Aufwändig zu erlernen? Ebenfalls ja. Kompliziert? Geht.

C++ hat enorm viele Tricks in Sachen OOP und Templates auf Lager, deren Nutzen man letztenendes nur durch Ausprobieren wirklich versteht. Ich will nur mal zwei Sachen nennen:
- cv-Qualifier für Methoden und Objekte (const und volatile). Ersteres ist komplizierter als man zunächst einmal denkt (const kann man auf Methoden von Klassen anwenden, nur die funktionieren dann eben bei als konstant deklarierten Objekten, während "normale" Methoden nicht mit const-Objekten funktionieren), für volatile gilt zunächst einmal das gleiche, nur dass man volatile ganz gut dazu verwenden kann, die Erkennung von möglichen Race Conditions dem Compiler zu überlassen, wenn man in einer Multithread-Umgebung ist.
- Variadic Templates, also solche mit einer variablen Anzahl an Parametern. Wirst du lieben lernen, wenn du zum Beispiel Funktionsaufrufe puffern möchtest.

Tolle, mächtige Sprache, leider mit einer größtenteils furchtbaren Standardbibliothek, merkwürdigem Compilersupport (gibts für Windows einen Compiler, der in Sachen C++11-Unterstützung ungefähr auf dem Level von GCC 4.7 ist? Ich würde da gerne mal ein Projekt drauf portieren...) und einer langen Lernphase, auch wenn man von anderen Programmiersprachen kommt.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben