[C++] Ich würde gerne C++ Lernen, jedoch habe ich keine Ahnung wie ich anfange soll!

Goldi708

Ensign
Registriert
März 2018
Beiträge
193
Was ist die beste Methode diese Programmiersprache zu lernen?
Manche Leute sagen, wenn man zuerst mit z.B.: C# anfängt und dann auf C++ umsteigt macht es einfacher C++ zu verstehen, stimmt das?

Ich weiß ich könnte Googeln, das habe ich auch getan jedoch findet man dutzende Tutorials/Antworten und alle sind anders.

Am besten währen einige Hilfreiche Tipps von jenen die C++ schon erlernt haben.
Danke im Voraus.
 
Empfehle dir in eine Bibo zu gehen, die haben da so Dinger mit vielen Buchstaben in unterschiedlicher Reihenfolge, zum Teil mit Bildern. Vorne steht dann sowas wie Einstieg in C# mit Visual Studio oder so'n eher dickeres mit C++ auf dem Cover.

Die Bücher unterscheiden sich didaktisch und vom Umfang, deswegen solltest dir ruhig mal mehrere ausleihen und einfach schauen mit welchem du am besten klar kommst.

Video2Brain gibts auch genügend, hängt aber von deiner Art zu lernen ab, find's meistens eher bescheiden.

Wenn du C++ lernen willst solltest direkt damit anfangen, alles andere halte ich für Unsinn, zumindest bei deiner Fragestellung. Du implizierst ja, dass du dich schon für C++ als erste Programmiersprache entschieden hast, warum kannst du uns gerne noch mitteilen.

An der Uni hatten wir zum Einstieg Pascal(Delphi), dann C und dann Java.
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: areiland
Ich habe damals mit Java angefangen, dann kam erst C++
Inzwischen würde ich sagen, dass das Egal ist.

Aus meiner Erfahrung und den Beobachtungen aus meinem Umfeld:
Die erste Programmiersprache ist egal. Als Anfänger hat man einfach noch keinen Plan und will einfach Programmieren lernen.
Man versteht überall Bahnhof und das schwierigste war immer das dranbleiben. Hat man eine Programmiersprache und den Aufbau kapiert, kann man sich relativ schnell umorientieren.

An Büchern kann ich echt die "xy für dummys" (C++ für dummys) empfehlen, weil die auch vom Schreibstil und den Beispielen für Anfänger leichter sind und die Autoren in jedem mir bekannten Fall wirkliche Profis sind. Im englischen gibt's ja das schöne "plain english", im deutschen kommt die Bücherreihe dem am nächsten.

Ansonsten habe ich mal einen Kurs bei www.udemy.com gebucht - Mit Rabatt ca. 15€ (Standardpreise liegen bei denen bei 200€ !!!) gezahlt und es war für meinen Zweck perfekt.
Alternativ gibt es noch www.codeacademy.com - Wobei die meines Wissens nach kein C++ haben/hatten (?).
 
Wenn du mit C# anfängst, kannst du per Drag and Drop Editor z.B. ganz einfach einen Taschenrechner bauen und hast erste Erfolgserlebnisse.

In C++ wird am Anfang alles textbasiert sein, bis du in der Lage bist z.B. das Qt Framework zu nutzen.

Ich finde ja man braucht gerade am Anfang ein Projekt, das man realisieren möchte um dran zu bleiben.
 
Goldi708 schrieb:
jedoch findet man dutzende Tutorials/Antworten und alle sind anders.
Und durch das hier Fragen, bekommst du mit jedem Beitrag noch eine weitere andere Empfehlung. ;)

Was die Sprache angeht sehe ich das ähnlich wie Kouniy. Die Sprache ist zum Programmieren lernen erstmal relativ egal. Was man lernen sollte ist nicht die Sprache, sondern Programmieren an sich und darauf dann verschiedene Paradigmen und Patterns. Wenn du dann einmal (richtig) programmieren kannst, kannst du nach jeweils ein wenig Einarbeitung in praktisch jeder (relevanten) Sprache programmieren.

Was ich jedoch eventuell trotzdem vermeiden würde: Sprachen die einem "viel Scheiß" erlauben, wie z.B. JavaScript (strikte eingestelltes TypeScript wäre jedoch OK) oder PHP, da man sich hier einfach leichter "Hacks" oder im allgemeinen schlechte Programmierstile angewöhnt. Hier eigenen sich dann eben streng typisierte Sprachen wie C# gut.

@Icewurm
Drag'n Drop geht doch mit dem Qt Creator genauso.
 
Als jemand, der mit C++ angefangen hat, würde ich abraten das auch zu probieren. Das hat vor allem den Grund, dass C++ so viele Möglichkeiten hat und die Tutorials das teilweise nicht adressieren und man selbst das überhaupt nicht einschätzen kann (und soll) als Anfänger. Auch lernt man meist veraltetes C++.
Irgendetwas verbreitetes, einfach zugängliches ist super: C# oder Java
 
Erst mal überlegst du dir was du später so programmieren möchtest. Software? Games? Maschinen?
Dann wählst du die passende Sprache dafür aus.

Software -> Java, C#, C++
Games -> C++
Maschinen / Linux -> C

Grund: Java, C# sind Interpretersprachen und laufen auf jedem Betriebssystem. Naja C# eher halbgar weil Microsoft und so. C ist halt die schnellste von allen da sie direkt auf der Hardware arbeitet.

Es gibt keine "Beste" Sprache, es gibt immer nur die beste Sprache für einen jeweiligen Zweck. C# und Java sind aber relativ einfach, aber nur weil sie alles vor dem Benutzer verstecken was dort passiert. Außerdem ist das Error-Handling einfacher, man bekommt ziemlich genau die Zeile wo es hapert.

Wenn du aber noch ein Studium planst, dann definitiv Java. Wenn es dann noch ein "richtiger" Info-Studiengang ist, also keine Medien-/Wirtschaftsinfo, sondern Angewandte Info, dann lerne noch die Grundlagen von C. Alle 3 Studiengänge haben die gleichen Basics, unterscheiden sich aber bei den weiterführenden Themen. Medieninfo lernt zusätzlich Design, Wirtschaftsinfo BWL und Angewandte CPUs/Betriebssysteme/Maschinenprogrammierung.

Letzterer ist der härteste Studiengang davon, hat aber dafür meistens keine Zugangsvoraussetzungen weil viele abbrechen :>
 
Zuletzt bearbeitet von einem Moderator:
rob- schrieb:
Software -> Java, C#, C++
Games -> C++
Maschinen -> C
Bis auf letztes alles diskussionswürdig.
Ich würde auf einfach zu lernen gehen. Selten gibt es DIE Sprache für einen Bereich und wenn man Programmieren kann, ist ein Wechseln ein leichtes.
Ergänzung ()

rob- schrieb:
Ein purer Java Entwickler wird nie verstehen was der Unterschied zwischen LinkedList und ArrayList
Sorry, Quatsch
 

Na dann schieß mal los. Was tun die verschiedenen Java Listen auf der Hardware und wann benutzt man welche? ;)

Ich sehe ständig Code von Diplominformatikern die das immer noch nicht gerafft haben und performance Krücken erschaffen.
 
Das ist schwer zu sagen. Jeder lernt anders und hat einen anderen Rhythmus.

Ich lerne gerne mit einem Buch, oder einem Kurs mit vielen Beispielen und Ausprobieren (und Fragen stellen auf Stack overflow z.B.). Ich nehme mir auch Zeit und verteile ein Thema auch über längere Zeiträume. Muss nicht alles in einer Woche lernen.

Ich empfehle C zu lernen mit dem Buch von K&R und/oder dem Kurs vom cppinstitute.org

Danach würde ich C++ lernen. Ich kann da den Kurs von cppinstitute.org ebenfalls empfehlen. Ich habe ebenfalls das Buch von Bjarne S. größtenteils gelesen; jedoch ist es didaktisch längst nicht so gut wie K&R, und am Ende eher eine Referenz.

Vielleicht hilft es erstmal ein Ziel zu beschreiben?
Möchtest Du die Sprache C++ lernen, um die Sprache zu beherrschen?
Oder möchtest sie lernen, um objektorientierte Konzepte zu erlernen?

Und manchmal ist auch so, dass ich nicht immer eine genaue Idee oder Antwort auf solche Fragen habe.
Dann fange ich einfach an... Das ist das Wichtigste für mich.
 
rob- schrieb:
C ist halt die schnellste von allen da sie direkt auf der Hardware arbeitet.
wusstest du, dass Java schneller sein Kann als C? Bei gleicher Implementierung?
rob- schrieb:
Na dann schieß mal los. Was tun die verschiedenen Java Listen auf der Hardware und wann benutzt man welche? ;)
Ich glaube du bist bei mir an Der falschen Addresse: Ich hab noch nie ernsthaft Java Programmiert.
Ich vermute Mal stark, dass beides beides in Hardware eine Hintereinanderreihung Von Potenzialstufen sind, welche als 0 und 1 interpretiert werden.
Wann man was benutzt, hängt Von den Laufzeitkomplexitäten der relevanten Operationen ab, und das wiederum hängt Von jeder einzelnen Situation ab.
Ich kenne keinen ernsthaften Programmierer, Der nicht einmal vorher auf SO geschaut hat.
Mit dem Verstehen Von https://stackoverflow.com/questions/322715/when-to-use-linkedlist-over-arraylist
Weiß er praktisch alles relevante.

Wenn er das ignoriert, war ihm wohl zum Zeitpunkt des Codens eine kurze Entwicklungszeit wichtiger als Performance in Speicher- und/Laufzeithinsicht. Kann man ja Mal drüber nachdenken warum 😉
 
Zuletzt bearbeitet:
rob- schrieb:
Grund: Java, C# sind Interpretersprachen und laufen auf jedem Betriebssystem. Naja C# eher halbgar weil Microsoft und so. C ist halt die schnellste von allen da sie direkt auf der Hardware arbeitet.
Weder Java noch C# sind interpretersprachen.
Java wird als Bytecode kompiliert welcher dann von der JVM Intpetiert wird.
C# in IL Code und dann beim ersten ausführen entsprechend der Prozessorarchitektur kompiliert. C# kann man aber auch direkt als Maschinencode kompilieren.

Eine generelle Aussage das C am schnellsten ist ist auch Unsinn. Es gibt mehr als genug Fälle in denen es schwer ist Sachen die man sehr schnell mit C# hinbekommt und das mit wenigen Zeilen mit C umzusetzen.
Höhere Abstraktion bedeutet nicht gleich das etwas langsamer ist!
 
Hier im Thread steht mittlerweile 'ne Menge Kacke, die sachlich falsch ist und Anfänger auch nur verwirrt .... nur mal so angemerkt.

Von Goldi ist auch nichts mehr zu hören .... was da los? :freak:

Ohne konkrete Frage könnt Ihr ja mal erzählen wie Ihr es gelernt habt ... würde mich bei den Äußerungen hier mal interessieren---
 
Zuletzt bearbeitet von einem Moderator:
Wir sind an der Uni für ein paar Unterrichtseinheiten direkt mit C++ eingestiegen. Codeblocks ist ein super tool, um rein zu schnuppern. Da gibt es auch diverse Tutorials auf YouTube. Ich bin kein IT-ler und konnte die Grundlagen mitnehmen.

Unser Prof hat gesagt, zwischen c und c++ gibts nur wenig Unterschied, wenn man bereits eine der Sprachen versteht. Dann kommt es halt auch darauf an, wie oft du damit zutun hast...
 
Wenn du C++ lernen moechtest, wuerde ich dringend davon abraten, vorher eine andere Sprache zu lernen. Das ist Zeitverschwendung. Die Konzepte, die sich die Sprachen teilen, lernst du auch wenn du direkt mit C++ startest. Ausserdem bringt C++ sehr viele weitere Eigenheiten, Details und "Low-Level-Funktionalitaeten" mit, dass du bei einem Umstieg von C# oder Java auf C++ erstmal nur verwirrt waerst und umlernen muesstest.

Dann: StackOverflow C++ Buecherliste - das ist ne wirklich sehr gute Liste, besonders fuer dich interessant der C++ Primer.

Und um damit aufzuraeumen:
Unser Prof hat gesagt, zwischen c und c++ gibts nur wenig Unterschied, wenn man bereits eine der Sprachen versteht. Dann kommt es halt auch darauf an, wie oft du damit zutun hast...
Jedes korrekte C-Programm ist automatisch auch ein korrektes C++ Programm. Aber nicht andersherum.
In den Unis wird leider noch sehr oft C-Style in den C++ Kursen unterrichtet, was zu solchen Aussagen fuehrt. Achte darauf C++11, 14, oder 17 zu lernen. Mit der verlinkten Buecherliste bist du da auf der sicheren Seite. Es gibt naemlich einen riesigen Unterschied zwischen C und C++.
 
Zuletzt bearbeitet:
m.c.ignaz schrieb:
Wenn du C++ lernen moechtest, wuerde ich dringend davon abraten, vorher eine andere Sprache zu lernen. Das ist Zeitverschwendung. Die Konzepte, die sich die Sprachen teilen, lernst du auch wenn du direkt mit C++ startest. Ausserdem bringt C++ sehr viele weitere Eigenheiten, Details und "Low-Level-Funktionalitaeten" mit, dass du bei einem Umstieg von C# oder Java auf C++ erstmal nur verwirrt waerst und umlernen muesstest.
Kann ich bestätigen. Ich hatte im Gymnasium schon erste Erfahrungen mit C++ gemacht, in der FH gabs dann erstmal nur Java. Als danach C kam, hatten fast alle Probleme mit Pointern, Memory Management etc, weil sie sich darüber in Java halt nie Gedanken machen mussten, mir und einigen Kommilitonen die vorher schon C++/C kannten fiel das deutlich leichter.

Wenn man also unbedingt in Richtung C/C++ gehen will, würde ich auch dazu raten, direkt damit Einzusteigen.
 
===Neo=== schrieb:
Unser Prof hat gesagt, zwischen c und c++ gibts nur wenig Unterschied, wenn man bereits eine der Sprachen versteht. Dann kommt es halt auch darauf an, wie oft du damit zutun hast...
Dann kann man sich ja ausmalen, was als C++ unterrichtet wird...

Ich kann übrigens @m.c.ignaz nicht zustimmen: Klar ist C++ anders wie C#, dennoch lernt man mit C# Programmieren deutlich einfacher. Vorallem die Konzepte lernt man einfacher, da man sich nicht mit den extrem vielen Eigenheiten rumschlagen muss. Dann auf C++ umzusteigen bedeutet nur die Eigenheiten von C++ zu lernen, aber nicht die Eigenheiten von C++ und sämtliche Programmierkonzepte (was definitiv nicht zu unterschätzen ist).
Daher würde ich mich auch garnicht zu weit aus dem Fenster lernen zu sagen, dass C# und dann C++ sogar schneller sein kann als nur C++.
Ergänzung ()

Ebrithil schrieb:
Wenn man also unbedingt in Richtung C/C++ gehen will, würde ich auch dazu raten, direkt damit Einzusteigen.
Weil rudimentäre C++ Kenntnisse dir beim C - Programmieren geholfen haben? srsly?
Ergänzung ()

m.c.ignaz schrieb:
Jedes korrekte C-Programm ist automatisch auch ein korrektes C++ Programm.
Nicht einmal das stimmt. (Außer im großen und Ganzen)

Und hier:
m.c.ignaz schrieb:
Achte darauf C++11, 14, oder 17 zu lernen.
Generell möglichst aktuell bleiben, d.h. einfach auf Basis von Material lernen, was C++17 schon behandelt. Sich auf C++11 zu beschränken ist genauso unschlau.
 
Zuletzt bearbeitet:
@m.c.ignaz
Soweit mir bekannt liefert auch C++17 nur ein Subset von C11 mit. Deshalb stimmt die Aussage bzgl. C und C++ nicht so ganz.
 
m.c.ignaz schrieb:
Jedes korrekte C-Programm ist automatisch auch ein korrektes C++ Programm.
Das war noch nie der Fall. Z.B. du darfst in C die C++ Schlüsselwörter new und delete als Variablennamen nutzen, C++ erfordert casts bei Pointerzuweisungen, wo in C keine notwendig sind.
 
Zurück
Oben