C++ Ein Anfänger sucht Rat. (C++)

DaRealPanDa

Newbie
Registriert
Sep. 2018
Beiträge
5
Guten Tag liebe User,

ein Frischling sucht Rat.

Ich möchte nun mit dem Programmieren beginnen und demnach zu Anfangs möglichst wenig falsch machen.
Ich habe keinerlei Erfahrung in jeglicher Sprache, dies einmal vorweg.
Nach reiflicher Überlegung kam ich zu dem Schluss, mir als erstes C++ anzueignen.
Mir persönlich geht es darum, einen guten und verständlichen Einstieg in diese ganze Thematik zu bekommen.

Dazu habe ich zwei grundlegende Fragen:

Welche Bücher würdet ihr einem blutigen Anfänger empfehlen?

- Ich selber besitze aktuell das Buch "Grundkurs C++ " von Jürgen Wolf/Galileo Computing sowie "Programmieren mit einfachen Beispielen" von Dirk Louis/Markt Technik Verlag.
Natürlich habe ich bereits die SuFu in diesem tollen Forum genutzt, viele Münder meinen gerade Galileo Computing bzw Dinge von dem Herren Jürgen Wolf seien nicht zu empfehlen, deshalb stöberte ich weiter und stieß auf diesen tollen Thread:
https://www.computerbase.de/forum/t...en-von-anfang-an-cpp17.1811369/#post-21486542
Allerdings hat der Threadersteller bereits Fortgeschrittene Erfahrung mit Java und somit werden ihm bereits andere Werke empfohlen.
Außerdem möchte ich natürlich auf dem aktuellen Stand der Dinge sein, weswegen mir Beispielsweise ein Buch aus dem Jahre 1996 weniger weiterhelfen würde, oder etwa doch?
Was ist also eure Meinung?

Wie würdet ihr den Einstieg in C++ generell gestalten?

Ich selber habe angefangen die Videos von "OrangeOnBlack" zu schauen, genauer gesagt seinen Crashkurs: C++ in 2 Stunden.
Selbstverständlich werden in diesem nur sehr sehr grundlegende Dinge erklärt.
Wie steht ihr zu Onlinerecherchen wenn es ums Programmieren geht, eher reine graue Theorie oder doch nebenbei selber probieren, das gezeigte Programm nachzubauen?

Ich danke jedem der bis hierhin alles aufmerksam gelesen hat und für eure Tipps und Hilfestellungen.

Gruß
 
DaRealPanDa schrieb:
Nach reiflicher Überlegung kam ich zu dem Schluss, mir als erstes C++ anzueignen.
Ich war da auch mal - hab das dann schleifen lassen (C++ ist nicht die angenehmste Sprache zum Lernen) und bin über C->C# dann wieder auf C++ zurück.
Daher kann ich dir leider speziell für C++ keine konkreten Materialien empfehlen.

DaRealPanDa schrieb:
Wie steht ihr zu Onlinerecherchen wenn es ums Programmieren geht, eher reine graue Theorie oder doch nebenbei selber probieren, das gezeigte Programm nachzubauen?
Anfangs vorallem letzteres. Je mehr du mit den Grundlagen vertraut bist kannst du dein Wissen auf theoretische Konzepte (Design Pattterns, Architekturen) ausweiten. Wichtig ist aber mit den Grundlagen der Sprache vertraut zu sein - und davon gibts bei C++ reichlich viele (weshalb sich Anfänger mit C++ auch schwer tun -> es ist schwierig die Motivation zu halten).
 
  • Gefällt mir
Reaktionen: DaRealPanDa
Gerade weil C++ so komplex scheint ( verbessert mich falls andere gängige Sprachen weitaus komplexer sind ) hab ich mir diese ausgesucht, da ich mir dachte wenn du diese " meisterst " sind andere Sprachen leichter zu erlernen, das Problem der Motivation ist natürlich gerade da dann ein großes Thema, aber ich denke das wird schon :D Aber danke dir schon einmal für diese konkrete Stellungsnahme! :)
 
Gleich mit C++ zu beginnen, kann etwas Anspruchsvoll sein, da sich der Programmierer auch um das Speichermanagement kümmern muss. Ich selbst habe mit C# angefangen und erst danach C++ gelernt - da war der Umstieg dann nicht mehr so schwierig. Andere Sprachen wie Java oder einfach nur C wären ebenfalls ein sanfterer Einstieg.

Onlinerecherche ist in Ordnung, aber mache dir auch Gedanken darüber, wie und wo du das Gelernte noch einsetzen kannst. Suche dir auch Übungsaufgaben im Internet. Verwende einen Texteditor und schalte die Autovervollständigung, aber nicht das Syntax-Highlighting ab (z.B. Notepad++) und installiere dir Msys2. Wenn du gleich mit einer IDE wie Visual Studio oder Dev-Cpp anfängst, ist der Lerneffekt nicht so groß.

Weitere notwendige Skills sind rudimentäre Linuxkenntnisse (für Msys) und das Erstellen von Makefiles oder buildscripts. Wenn du dich damit auseinandersetzt, lernst du auch wie Compiler, Assembler und Linker zusammenarbeiten, um daraus ein Programm zu machen.

Eigne dir auch gleich von Anfang an einen übersichtlichen und einheitlichen Stil bei der Formatierung deines Codes an.

Eine Website kann ich dir noch empfehlen - dort kannst du jederzeit die Syntax und Grammatik von C++ nachschlagen, und wie man die Elemente der Standardbibliothek (z.B.: Vector) verwendet:
Cppreference DE

Wenn du weitere Literatur brauchst, kommst du nicht an den Büchern von Bjarne Stroustrup (C++ Erfinder) vorbei.
Eine weitere Möglichkeit ist das Belegen eines C++ Grundkurses bei einer Universität in deiner Nähe - das macht den Anfang ebenfalls leichter und du hättest einen kompetenten Ansprechpartner bei Fragen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: DaRealPanDa
Oh durch die Videos von oob bin ich direkt zu DEV-CPP gelangt, also doch lieber umswitchen zu Notepad++ um es von beginn an zu erlernen?
Dir danke ich ebenfalls für deine Hilfestellung, ich werde mir die Werke von Bjarne Stroustrup einmal anschauen. :)
 
DaRealPanDa schrieb:
also doch lieber umswitchen zu Notepad++ um es von beginn an zu erlernen?

Würde ich empfehlen, ja.
 
  • Gefällt mir
Reaktionen: DaRealPanDa
Hi,

ich programmiere seit 1985 und habe über 10 Programmiersprachen hinter mir. Ich will gar nicht viel schreiben, außer das ich aus heutiger Sicht sofort mit den Profi Tools anfangen würde. Alles andere ist quatsch. Wenn Du Linux Programmierprofi werden willst, dann hast Du bereits alles an der Hand und kannst sofort los legen. Wenn du unter Windows programmieren willst, dann benutzte Visual Studio. Weil das einfach jeder macht und die Bedienung einfach ist.

Zur Programmiersprache! Nimm C als Grundlage und beginne mit einfachen Beispielen. Wenn Du denkst Du hast Pointer, Zeiger und Speichermanagement verstanden, kommt die Klassen Programmierung in C++.
C ist DIE Programmiersprache für alles, Routinen oder Libs. (JPEG/Mp3/... alles in C)
C++ brauchst Du für höhere Programmierung, wie Fensterprogrammierung unter Windows. Oder Grafikroutinen für DirectX.
Ein Anwenderprogramm ist immer in C++/C#/VBasic programmiert. Ein Tool, eine Routine, eine Funktion meist in C. Unter Linux ist der Anteil an C Programmen sogar größer als der von C++ Programmen.
Ergänzung ()

Hier mal ein kleines Demo von mir... Das ist in Visual Studio C++ programmiert und die Shader der Grafikkarte werden in C programmiert.

http://www.pouet.net/prod.php?which=66025
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: DaRealPanDa
Ich will nicht grundsätzlich von C++ abraten (naja, eigentlich schon...), aber da du als Einsteiger nicht weißt, was du nicht weißt, möchte ich dich darauf hinweisen, dass die Welt sich weitergedreht hat und es mittlerweile gute Alternativen zu C++ gibt. Der für mich einzige legitime Grund, als Einsteiger heute noch C++ anzupacken, wäre, dass man beruflich in die Richtung streben möchte. Da ist die Durchdringung neuerer Technologien in der Regel viele Jahre bis Jahrzehnte hinterher, weswegen man allerlei alte Software warten können muss.

Schau dir lieber mal verschiedenartige Sprachen und Konzepte oberflächlich an. Ein Tutorial hier und da. Vielleicht merkst du ja, dass dir Skriptsprachen durch die Abstraktion eher liegen. Oder du erkennst, dass du gerne Oberflächen mit Webtechnologien baust und das Backend nur noch ein Server mit Endpunkten ist, der Daten für die Oberfläche ausliefert. Durch die Abwechslung ist es nicht ganz so trocken und Programmieren lernst du so auch und du erkennst direkt Parallelen zwischen Sprachen und wirst offener für Neues.

Es wird viel zu oft die falsche Sprache für ein gegebenes Problem gewählt, weil die Leute mit Scheuklappen unterwegs sind und jedes Problem wie ein Nagel aussieht, wenn man diesen tollen Hammer in der Hand hat, an den man so gewöhnt ist.
 
  • Gefällt mir
Reaktionen: DaRealPanDa
nebulus schrieb:
Hi,
Zur Programmiersprache! Nimm C als Grundlage und beginne mit einfachen Beispielen. Wenn Du denkst Du hast Pointer, Zeiger und Speichermanagement verstanden, kommt die Klassen Programmierung in C++.
C ist DIE Programmiersprache für alles, Routinen oder Libs. (JPEG/Mp3/... alles in C)
C++ brauchst Du für höhere Programmierung, wie Fensterprogrammierung unter Windows. Oder Grafikroutinen für DirectX.
Ein Anwenderprogramm ist immer in C++/C#/VBasic programmiert. Ein Tool, eine Routine, eine Funktion meist in C. Unter Linux ist der Anteil an C Programmen sogar größer als der von C++ Programmen.

Das würde ich so nicht unterschreiben, mit C anzufangen wenn man C++ lernen möchte halte ich für keine gute Idee. C ist zwar ein Subset von C++, und dieses war als nächste Iteration gedacht, guter, moderner C++ Code unterscheidet sich aber stark von gutem C Code. Entsprechend würde ich versuchen, Tutorials zu finden, die dort einsteigen. Selbstverständlich kann und will man die Details und Kniffe nicht weglassen, ich denke nur nicht, dass man damit anfangen muss. Insbesondere wenn man C++ als erste Sprache lernt sollte man sich zunächst mit den möglichst mit den Konzepten der Programmierung, also der Struktur und dem Ablauf von Programmen, als mit Details zum Speichermanagement beschäftigen.
 
@nebulus
Sorry, aber dieses erst C dann C++ lernen ist einfach Unsinn. Es sind zwei unterschiedliche Sprachen mit anderer Syntax. Ich halte dieses Vorgehen für absolut kontraproduktiv. Ich musste damals selber mit C beginnen und dann C++. Abgesehen davon daß ein wenig C hängen geblieben ist bringt es mir heute nichts.
C++ ist nicht C mit Klassen!

@kiffmet
Worin soll der Lerneffekt liegen statt einer IDE wie Visual Studio einen Editor ohne Syntaxhighlighting etc. zu verwenden?
Eine IDE ist eine Hilfe und solche Hilfen helfen auch beim lernen, z.B. wenn mir die IDE schon sagt das ein von mir verwendeter Variablenname ein Keyword ist und nicht erst der Kompiler. Programmieren lernen bedeutet nicht Syntax lernen sondern Konzepte/Muster!
 
kiffmet schrieb:
Wenn du gleich mit einer IDE wie Visual Studio oder Dev-Cpp anfängst, ist der Lerneffekt nicht so groß.
Sehe ich nicht so. Wenn man Autovervollständigung ausschaltet, lernt man zwar mehr, aber nicht unbedingt das was man braucht. Keiner programmiert ohne Autovervollständigung, daher bringt ihm das wenig. Im Gegenteil: Es ist sogar wichtig Features der IDEs (v.a. geläufige) zu lernen, da man so seine Produktivität deutlich steigert.

Sowas ist höchstens für Schule/Studium sinnvoll, falls man Code auf Papier schreiben muss.
NemesisFS schrieb:
Das würde ich so nicht unterschreiben, mit C anzufangen wenn man C++ lernen möchte halte ich für keine gute Idee.
Einerseits hast du Recht andererseits stimme ich dir nicht zu. C ist eine relativ einfache und beschränkte Programmiersprache, das heißt sie ist gut geeignet um ein Gefühl zum Programmieren zu bekommen. Deswegen kann C ein sehr guter Einstieg sein.
C kann aber tatsächlich ein Hindernis sein, da die Pradigmen der Programmiersprachen sich stark unterscheiden aber C++ (objektorientiert) es trotzdem ermöglicht C-like zu programmieren (prozedural). Daher müsste man sich - wenn man dann mit C++ weiter beschäftigt, mit den Paradigmen wirklich auseinandersetzen und sie verstehen - und eine gute Quelle zum Lernen benutzen.
kiffmet schrieb:
Speichermanagement kümmern muss.
Muss man nicht unbedingt (Smart Pointer)- aber man muss verstehen was abläuft, sonst ist die Kacke am Dampfen.


DaRealPanDa schrieb:
aber ich denke das wird schon :D
Genau das habe ich auch gedacht. Mich hat das damals behindert. Dabei kannst du mit anderen Sprachen auch alles machen was du willst (vereinfacht: es gibt Ausnahmen, ist aber irrelevant, da du kein konkretes Ziel hast).
 
new Account() schrieb:
Einerseits hast du Recht andererseits stimme ich dir nicht zu. C ist eine relativ einfache und beschränkte Programmiersprache, das heißt sie ist gut geeignet um ein Gefühl zum Programmieren zu bekommen. Deswegen kann C ein sehr guter Einstieg sein.
C kann aber tatsächlich ein Hindernis sein, da die Pradigmen der Programmiersprachen sich stark unterscheiden aber C++ (objektorientiert) es trotzdem ermöglicht C-like zu programmieren (prozedural). Daher müsste man sich - wenn man dann mit C++ weiter beschäftigt, mit den Paradigmen wirklich auseinandersetzen und sie verstehen - und eine gute Quelle zum Lernen benutzen.

Da hast du Recht C bietet relativ wenige Konstrukte und Abstraktionen die gelernt werden müssen. Man muss dafür allerdings die Komplexität dahinter meistern können. Man kann C gut zum Einstieg nutzen, wenn man allerdings mit C anfangen möchte sollte man mMn nicht den Umweg über C gehen.
 
Mann muß halt sagen, in der Schule wird als erste Programmiersprache meist python angeboten. Das ist meiner Meinung nach sowas wie Basic damals. Man lernt struktur in einem Programm zu verstehen. Trotzdem bin ich immer der Meinung, man muß einen Computer und sein Speicherhandling erst mal verstehen. Bevor man in eine höhere Sprache einsteigt. Sonst weiß man nie beim debugging, was überhaupt passiert. Wenn man da nur noch Speicherbereiche und Pointer sieht. Ich würde als erstes immer C und low level Speichermanagement lernen. Das man später dann sieht, das die Hochsprache das einem wieder abnimmt ist dann die Lernkurve. Aber als EINSTEIGER beim Programmieren, ist C++ der Overkill... Stell dir vor Du bist 13 oder 14 und willst was programmieren, ganz ehrlich, in dem Alter will keiner mit Klassenmodellen hantieren oder eine Entwicklungsumgebung aufsetzen. Für Microcontroller gibt es sehr geile IDEs mit Debugger und StepbyStep parsing. Das AtmelStudio wäre für mich auch ein super Einstieg in die Programmierung in C.
Visual Studio ist durchdacht und für Profis und Einsteiger gemacht worden. Die Dokumentation oder Mouse-Over Effekte über den Code, helfen unglaublich. Ein reiner Texteditor, ja, die Zeiten sind wohl vorbei. Das letze mal das ich keine IDE benutzt habe, war wohl am C64 als ich in Assembler programmiert habe.
Ergänzung ()

Fonce schrieb:
@nebulus
Sorry, aber dieses erst C dann C++ lernen ist einfach Unsinn. Es sind zwei unterschiedliche Sprachen mit anderer Syntax. Ich halte dieses Vorgehen für absolut kontraproduktiv.

Sehe ich genau anders. Alles was man unter C lernt, kann man unter C++ weiter benutzen. Die Syntax ist gleich! Der Einstieg ist einfacher! Der Umfang der Syntax ist geringer und dadurch schneller zu lernen. Man kommt schneller zum Ziel! Und durch alle diese Effekte ist man motivierter.
 
Zuletzt bearbeitet:
nebulus schrieb:
Sehe ich genau anders. Alles was man unter C lernt, kann man unter C++ weiter benutzen. Die Syntax ist gleich!
Nein, einfach nur nein!
Schau dir doch einfach nur an wie du unter C und C++ mit Structs arbeitest.
Nehmen wir die
C++:
struct TestStruct
{
    int foo;
    int bar;
};

Deklaration unter C
C:
struct TestStruct myStruct;
Deklaration unter C++
C:
TestStruct myStruct;

Ja, der Umfang von C++ ist größer, aber das erleichtert auch die Arbeit! Oder macht dir das hantieren mit Strings unter C etwa Spaß? :rolleyes:

Nur weil man C++ macht muss man nicht automatisch direkt selber Klassen schreiben. Das arbeiten mit den in Standard enthaltenen wie std::string oder std:vector erleichtern die Arbeit aber.
 
Leute, das hilft dem TE grad überhaupt nichts.
Einfach C und C++ mit einem tiefen Abgrund dazwischen betrachten...
 
  • Gefällt mir
Reaktionen: Ebrithil und DaRealPanDa
Ich versteh momentan nur Bahnhof xD
Dennoch, auch bei dieser Diskussion, danke ich schon einmal dafür, dass ihr mir überhaupt helfen wollt :p
Also ist C++ als Anfänger eurer Meinung nach ein zu harter Einstieg in diese ganze Thematik?
 
Was unglaublich viel Spaß macht, ist sich einen Arduino zu kaufen und den in C zu programmieren. Das ist für absolute Anfänger geeignet. Es macht unglaublich viel Spaß ein paar Leuchtdioden zum blinken zu bekommen durch sein eigenes Programm. Man hat auch was zum anfassen!

https://www.arduino.cc/

Die passende Hardware gibt es für 5 Euro bei Ebay.
Ergänzung ()

Fonce schrieb:
Nein, einfach nur nein!
Schau dir doch einfach nur an wie du unter C und C++ mit Structs arbeitest.

So Programmiert man aber heute nicht mehr, ich benutze nur noch typedefs in C und C++.
Ergänzung ()

Hier was mit vielen Leuchdioden!:
https://www.exp-tech.de/plattformen...t-playground-express-developer-edition?c=1026
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: DaRealPanDa
nebulus schrieb:
So Programmiert man aber heute nicht mehr, ich benutze nur noch typedefs in C und C++.
Ok, also soll man bei C erst noch den Umgang mit dem typedef Keyword lernen während man es bei C++ nicht muss.
Ja, ich merke C ist viel einfacher für Anfänger zu lernen... :rolleyes:
 
Hi DaRealPanDa :D

Also ich sag dir einfach mal wie ich programmieren gelernt habe. Ich programmiere aktuell etwas mehr als 1 Jahr. Und ja ich hab mit C++ angefangen :D
Es ist wirklich nicht schwer. Erst machst du eine einfache Ausgabe, dann lernst du die verschiedenen Datentypen wie "int" kennen usw. Am Anfang hab ich mit einem Buch angefangen, dass aber nicht das Gelbe vom Ei war/ist. Dann hab ich YouTube Tutorials angeschaut (Tutorexilius, Pilzschaf, Brotcruncher) vor allem Tutorexilius (macht auch livestreams auf Twitch). Außerdem mach ich gerade einen 2D jump'n run, einen Simulator und hab schon ein anderes Spiel fertig. ABER wenn du dann wie ich mit Referenzen, Iteratoren, listen,... arbeitest wirds schon schwerer. Sobald man es versteht ist es easy peasy.

Ich kann nur sagen machs einfach;)

P.s wie schon gesagt Arduino wäre auch ne gute Idee:daumen:
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: DaRealPanDa und nebulus
Zurück
Oben