C++ Lektüre zum lernen?

Hiho,

ich wollte mal die Programmierer hier im Forum fragen, welche Lektüre man empfehlen könnte um C++ zu lernen. Ich suche ein Buch in dem alles gut und ausführlich beschrieben ist und auch Beispielübungen zu den einzelnen Kapiteln/Themen existieren um das ganze auch praktisch umsetzen zu können.

Vllt liegt dem Buch auch so eine abgespeckte Software bei die einfach nur zum üben dient, da wäre ich auch nicht von abgeneigt.

Desweiteren würde mich dann auch die Quelle und der Preis dieses Buches interessieren wo man das kaufen/bestellen kann. :)

Schreibt einfach mal ein paar, welche ihr gut findet bzw welche auch wirklich empfehlenswert sind. Danke schonmal im Voraus für antworten ^^

EDIT:

Das Buch sollte für Anfänger geeignet sein, nur so als Anmerkung ^^
 

MacX

Light Guard
Zum einen kannst du dir hier: http://eckelbooks.starlinger.org/ Thinking in C++ Volume 1 ( Edition 2 ) und Volume 2 herunterladen. ( HTML Versionen; nach den PDF-Versionen musst du selber schauen )
Ansonsten ist der C++ Primer ( 4te Edition ) für Einsteiger ganz gut geeignet.

Edit: Thinking in C++ Volume 1&2 gibts natürlich auch in gedruckter Form.

Vom Buch Der C++-Programmierer habe ich auch nur positives gehört, habe es aber selber nicht gelesen.
 
Last edited:

GamlerHart

Cyberdemon
Falls du englishe Bücher nicht verabscheust:
Vielleicht findest noch hier was. Es ist ein StackOverflow thread der gratis Programmier-Bücher auflistet. Vielleicht was drunter.
Und in diese StackOverflow thread gibts eine Liste von C++ Bücher. Von Anfänger-Bücher bis Experten-Bücher.
Generell: StackOverflow ist genial für Programmier-Fragen.


Noch aus Neugierde. Welche Programmier-Sprachen kennst du schon?

Auch passend: Teach yourself C++ in 21 Days ;)
Teach-yourself-C++-in-21-days.png
 
Hey, cool, danke schonmal für die ganzen Vorschläge =)

Naja, welche Programmiersprachen kann ich schon, wenn mans genau sieht, garkeine ^^ HTML hab ich mir selbst angeeignet vor ein paar Jahren... Doom 3 scripten is auch kein Problem, aber das is ja net wirklich programmieren ^^
Ich denk mir C++ is so ziemlich die flexibelste von dem was ich bisher über programmiersprachen weis und auch relativ oft verwendet wird.

Eltrollo, welche Sprache würdest du mir erstmal vorschlagen? =)
 

CruSAdeR

Maledict
C++ ist für den Einstieg wirklich ziemlich kompliziert. Ich selbst würde C# oder Java vorschlagen. Je nachdem, ob du eher MS oder Linux "Fan" bist. Die Sprache selbst ist bei beiden aber auch fast gleich, so dass du dich noch umentscheiden kannst. Sowieso sind beide Sprachen auch zu C++ fast gleich. Wenn du eine davon gut kannst, kannst du später auch C++ lernen, wo dann ein paar hardwarenährere Konzepte hinzukommen.

Ich persönlich würde C# empfehlen (was ich auch selbst fast nur noch benutze). Das Microsoft Visual Studio ist für C# einfach der Hammer.
 

MacX

Light Guard
Es ist egal mit welcher Programmiersprache man anfängt. Man fängt bei den meisten Sprachen mit grundlegenden Sachen wie einfachen Datentypen und Kontrollstrukturen an. Die Aneignung von sprachspezifischen Konstrukten nimmt dann die meiste Zeit in Anspruch.
Am besten schaut man sich erstmal an, was es für Programmiersprachen gibt. HTML gehört jedenfalls nicht dazu. Was ist ein Compiler, ein Interpreter etc. und was tun diese?
Ein kleiner Überblick über die Geschichte der jeweiligen Programmiersprache und vor allem deren Einsatzgebiete kann nicht schaden.
@steven_joe: Wenn du mit C++, mit C, mit Java, mit C#, mit Python oder mit einer Assemblersprache anfangen willst, dann tu es. Ich bin etwas überrascht, dass Python nicht als Einstiegssprache vorgeschlagen wurde, dafür aber Java.

C++ Bücher habe ich ja schon vorgeschlagen. Grundsätzlich sind Bücher geeigneter als Online-Tutorials.
 

Eltrollo

Mancubus
Eltrollo, welche Sprache würdest du mir erstmal vorschlagen? =)
-Ansi-C lernen
-die einzelnen APIs kennen lernen
-Übung,Übung,Übung (hab knapp 4 Jahre an Quake 1/2 rumgebastelt bevor ich weitermachte)
-Assembler immer fleißig nebenbei lernen

dann kannst du vieleicht mal überlegen ob du auf C++ wechselst.
 

Rahmschwein

Pain Elemental
Ohne Programmier-Vorerfahrung mit C++ anfangen halte ich auch für ziemlich heftig.
Ich habe meinerzeit auch geglaubt unbedingt gleich in die Vollen langen, und mich sofort auf C++ stürzen zu müssen (alles andere wäre ja "newb-like" gewesen ... so meine damalige Denkweise ;-)), aber das war ein Fehler, denn ohne gefestigtes Grundwissen rund ums Programmieren, Strukturen, Compiler etc. lernt man sich an C++ wirklich zum Krüppel. Ich habe meinen "Pseudostolz" damals dann doch noch überwunden, und mich von der Pike an an die Materie herangearbeitet, und das war wohlbemerkt auch weitaus motivierender als bei jedem neuen Command, Error, Konflikt o.Ä. sofort weitläufige Recherchen anstellen zu müssen, um ihn zumindest einigermassen zu verstehen.
Sicher kriegt man auch auf die überstürzte Art ein paar ganz nette Programme hin, aber die werden dann wohl eher eine recht hölzerne Sache bzw. eher "Tutorial-Steckwerke" als fliessende und effiziente Codes, die wirklich aus dem Verständnis heraus geschrieben wurden.

Anders gesagt: Wenn du dich an C++ ranmachst, und du dich während des Lernens z.B. fragen musst: "Was ist ein Pointer?", dann prescht du definitiv zu schnell vor ;-)

Wünsche dir auf jeden Fall alles Gute.

Rahmschwein.
 

MacX

Light Guard
Wenn es an Zeigern scheitern sollte, dann wird man mit C als Einstiegssprache wohl erst recht nicht glücklich.
C++ und C sind zwei verschiedene Sprachen. Prinzipiell ist es ja egal, womit man anfängt, aber ein Umstieg von C nach C++ ist bekannterweise wesentlich schwieriger als umgekehrt.
Es gibt durchaus C++-Bücher, wo man am Anfang nicht gleich mit Zeigern konfrontiert wird.

Aber wie gesagt, bevor man sich für eine Sprache entscheidet, wäre es hilfreich sich mit ein paar grundlegenden Begriffen auseinanderzusetzen.
Programmieren, was ist das? Wofür braucht man Programmiersprachen? Warum ist HTML keine? Was ist eigentlich ein Programm?
Vorkenntnisse beim Umrechnen von einem Stellenwertsystem in ein Anderes ( z.B. Dezimal -> Binär; Hexadezimal -> Dezimal ... ) können auch nicht schaden.
 

CruSAdeR

Maledict
Rahmschwein hat ja auch nicht gesagt, dass er mit C anfangen soll. Mit C sollte er sowieso auf keinen Fall anfangen, da es einfach veraltet ist und nicht mehr gebraucht wird.
Ansonsten kommt es auf steven_joes Präferenzen an. Wenn er sich sicher ist, dass er Programmieren lernen will und C++ können will, kann er auch damit anfangen. Die ersten Schritte sind dann halt etwas schwieriger. (Übrigens nicht nur wegen der Pointer, auch zb. wegen deutlich schlechteren Fehlermeldungen der Compiler) Wenn er erst mal reinschnuppern will, ist C# (oder meinetwegen Java für Linux-Freaks) deutlich besser geeignet, da man dort viel schneller und leichter schönere Ergebnisse erzielt. Wenn er das beherrscht und dann die bestmögliche Performance braucht, kann er immer noch auf C++ wechseln.
 

MacX

Light Guard
@CruSAdeR: Eltrollo hat C vorgeschlagen.
Und C mag zwar alt sein, ist aber immer noch sehr gefragt auf dem Arbeitsmarkt. Was jetzt keinerlei Wertung sein soll, wenn man es nur interessehalber in der Freizeit lernen will.

Naja, ich denke wir haben ja nun genug Anhaltspunkte gegeben.
Vielleicht sollte steven_joe erstmal sagen, warum er eine Programmiersprache lernen will, bzw. wofür?
Wenn das Interesse bei der Spieleentwicklung liegt, würde ich C++ empfehlen. Wenn es um normale Anwendungen mit einer grafischen Oberfläche geht, dann kommt man vermutlich mit C# schneller zum Ziel. Sollte man sicher aber die Entwicklung eines Betriebssystemes in den Kopf gesetzt haben ( und ja, es gibt durchaus Anfänger die sowas vorhaben ), dann wäre C und die Assemblersprachen ein guter Einstieg ( und ein sehr langer Weg ).

Und wenn es einfach um das Programmieren an sich geht, ohne feste Vorstellungen, was man alles entwickeln könnte, dann bleibe ich dabei: einfach mit irgendeiner Programmiersprache anfangen.

@steven_joe_123:
Wir machen nur Vorschläge. Jeder hat andere Erfahrungen gemacht und manch einer kennt sich in dem oder dem Gebiet besser aus als die Anderen.
 
Last edited:

Rahmschwein

Pain Elemental
Aber wie gesagt, bevor man sich für eine Sprache entscheidet, wäre es hilfreich sich mit ein paar grundlegenden Begriffen auseinanderzusetzen.
Programmieren, was ist das? Wofür braucht man Programmiersprachen? Warum ist HTML keine? Was ist eigentlich ein Programm?

Genau so sehe ich das auch. Wie gesagt: Ohne grundlegende (generelle) Programmierkenntnisse ist das Lernen von C++ ein Krampf der letztendlich zu nix führt.
Mit meinem "Zeiger-Beispiel" wollte ich eigentlich genau das auf einen Nenner bringen. Anders gesagt: Würde man beim Lernen von C++ bereits bei den Zeigern (die ein ja fundamentaler ein Bestandteil u.a. von C++ sind) mangels Verständnis hängen bleiben, wäre das ein gutes Indiz dafür, daß es einfach an grundlegenden Programmierkenntnissen mangelt, die aber gerade in der maschinennahen Programmierung unerlässlich sind.
Statt Zeigern könnte man beispielsweise auch Includes oder Arrays in das Beispiel einsetzen. Es ist halt recht mühsam, wenn man im Zuge des Lernens immer wieder zwischen spezifischen Programmiersprachen und allgemeinen Grundkenntnissen hin- und herspringen muss. Dadurch legt man sich nur selbst Steine in den Weg. Zuerst die Basis, dann die Programmiersprache ... das ist sicher der beste Weg.
 
Also Vorahnung vom Programmieren hab ich wie gesagt so gut wie keine. Ich dachte anfangs da C++ eine der gängigsten Programmiersprachen ist, dass es evtl. am sinnvollsten ist auch diese zu lernen und später dann irgendwann zu beherrschen :D Ich weis was ein Compiler is, ich weis auch was ein Interpreter is, nur hab ich von der Materie an sich noch überhaupt keinen Plan und das will ich ändern :)
Aber wenn C++ für nen kompletten Anfänger zu schwierig ist zu lernen, würd ich schon auf eine leichtere umsteigen und später darauf vllt aufbauen und auf C++ umsteigen. Meines wissens nach von dem was ich bisher im Internet gelesen habe, soll C die Programmiersprache sein die C++ am nähesten liegt, wenn auch veraltet aber trotzdem auch noch häufig in gebrauch.
Grund meines Interesses am Programmieren ist einfach, mir machts Spaß am PC rum zu frickeln, Sachen darauf zu entwickeln und so lange zu testen bis es wirklich läuft und wenn ich Tage lang an sowas sitze. Mir machts auch riesig Spaß mir sowas selbst an zu eignen, wenn auch mit Hilfe von anderen wenn man an gewissen Stellen nicht weiter kommt. Aber wenn man dann mal was auf die Beine gestellt hat, ist man einfach nur stolz sowas selbst geschafft zu haben. Zusätzlich überlege ich eine betriebliche Ausbildung als Fachinformatiker (Anwendungsentwicklung) zu suchen. Bis dorthin würd ich mir gern Vorkenntnisse aneignen um evtl. bessere Chancen auf solch einen Beruf zu haben :)

Was ich nur nicht so ganz verstehe, wo genau liegt der Unterschied zwischen einer Assemblersprache und einer Programmiersprache ^^
 

MacX

Light Guard
Mit Assemblersprachen wollte ich nur verdeutlichen dass ich "Assembler" im Sinne einer Programmiersprache meinte. Normalerweise bezeichnet der Begriff "Assembler" ein Programm, welches eine Assemblersprache in die Maschinensprache übersetzt.

Da ich selber eine Ausbildung zum FIAE hinter mir habe, kann ich dir sagen, dass man dort solche Begrifflichkeiten behandelt. Da fängt man mit den 5 Generationen der Programmiersprachen an, behandelt die Programmierparadigmen und fängt auch mit Standardbegriffen wie "Compiler", "Cross-Compiler", "Linker" etc an. Daraufhin folgen dann für gewöhnlich Softwareentwicklungsprozesse und weitere lustige Sachen. Allerdings ist die Qualität des Unterrichts wohl von Berufsschule zu Berufsschule anders. Ich hatte in 3 Lehrjahren nur Java im Unterricht ( das 3te Lehrjahr schon gar nicht mehr ). Im Prinzip wird vorausgesetzt, dass man irgendeine Programmiersprache zumindest partiell kennt.
Programmieren lernt man nicht in der Schule.
 

Rahmschwein

Pain Elemental
Also Vorahnung vom Programmieren hab ich wie gesagt so gut wie keine. Ich dachte anfangs da C++ eine der gängigsten Programmiersprachen ist, dass es evtl. am sinnvollsten ist auch diese zu lernen und später dann irgendwann zu beherrschen :D Ich weis was ein Compiler is, ich weis auch was ein Interpreter is, nur hab ich von der Materie an sich noch überhaupt keinen Plan und das will ich ändern :)
Aber wenn C++ für nen kompletten Anfänger zu schwierig ist zu lernen, würd ich schon auf eine leichtere umsteigen und später darauf vllt aufbauen und auf C++ umsteigen. Meines wissens nach von dem was ich bisher im Internet gelesen habe, soll C die Programmiersprache sein die C++ am nähesten liegt, wenn auch veraltet aber trotzdem auch noch häufig in gebrauch.
Grund meines Interesses am Programmieren ist einfach, mir machts Spaß am PC rum zu frickeln, Sachen darauf zu entwickeln und so lange zu testen bis es wirklich läuft und wenn ich Tage lang an sowas sitze. Mir machts auch riesig Spaß mir sowas selbst an zu eignen, wenn auch mit Hilfe von anderen wenn man an gewissen Stellen nicht weiter kommt. Aber wenn man dann mal was auf die Beine gestellt hat, ist man einfach nur stolz sowas selbst geschafft zu haben. Zusätzlich überlege ich eine betriebliche Ausbildung als Fachinformatiker (Anwendungsentwicklung) zu suchen. Bis dorthin würd ich mir gern Vorkenntnisse aneignen um evtl. bessere Chancen auf solch einen Beruf zu haben :)

Was ich nur nicht so ganz verstehe, wo genau liegt der Unterschied zwischen einer Assemblersprache und einer Programmiersprache ^^

Motiviert bist du auf jeden Fall schon mal ... beste Voraussetzungen :-) Du wirst sehen, daß es alleine schon eine ziemlich anspruchsvolle Sache ist die Programmiergrundlagen zu erlernen, und wenn du dann mal mit C++ anfangen willst, kanns auf jeden Fall nicht schaden dir das DEV C++ IDE zu holen. Für den Einstieg hats bei mir damals sehr gut funktioniert. Wünsche dir auf jeden Fall alles gute für deine Vorhaben und deinen weiteren Werdegang.

Rahmschwein.
 

e.v.o

Light Guard
eltrolle hatte schon recht: C und ASM sind für das Verständnis beim Coden ENORM wichtig, aber nicht zwingend Voraussetzung.
ASM ist beim Debuggen und für das allgemeine Verständnis wie etwas auf dem PC passiert sehr wichtig. Den wirklich coolen Leuten reicht Inline ASM :D

Ich persönlich würde dir zu C# raten:
Du hast mit Visual Studio, MSSQL, Expression Studio, Silverlight, usw. wirklich enorm leistungsfähige und einfach zu bedienede Tools mit denen du ohne größere Probleme schnell zum Ziel kommst. Den Komfort von Visual Studio in Verbindung mit C# kann dir auf dem Markt wohl keine andere Lösung bieten. Desweiteren ist die Lernkurve enorm hoch. Ein GUI fähiges Programm in C++ (z.B. mit qt) zu schreiben ist im Vergleich zu C# ein enormer Mehraufwand.

Warum kein Java:
So sehr ich Java auch mag, aber es stinkt gegen die AIO Lösung von Microsoft gnadenlos ab. Java ist mittlerweile wirklich sehr reif geworden und man erzielt gute Ergebnisse, jedoch kann man das später immernoch lernen.
 
Top