PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Was ist sinnvoll zu lernen


rotalever
2007-05-05, 22:52:45
Hallo,
Heute hab ich mal C++ "gelernt"...
Ich denke ich kann jetzt mehr oder weniger alles, was bei
http://www.cplusplus.com/doc/tutorial/
steht. Gibt es bei C++ noch irgendwelche zusätzlichen wichtigen Dinge, die man können sollte oder sind das schon alle wichtigen auf dieser Seite?

Laz-Y
2007-05-05, 23:40:34
Gratulation zum C++ lernen an einem Tag :D

Die Themen auf der Seite decken schon einiges ab. Wüsste grad nicht was großartiges für den Einstieg fehlt.

The_Invisible
2007-05-06, 00:20:24
wenn du wirklich alles verstanden hast kannst du dich ja mit dem umfeld beschäftigen wie compiler, linker, präprozessor, usw. ansonsten fehlt dann nur mehr eins: praxis, VIEL praxis

mfg

Gast
2007-05-06, 03:32:38
zieh dir halt das noch rein http://www.cplusplus.com/src/

del_4901
2007-05-06, 07:06:35
Damit du dir nicht gleich von Anfang an in Knie schießt, würde ich noch, an deiner Stelle, UML (2.0) dazu lernen.

Trap
2007-05-06, 09:08:06
http://www.gotw.ca/gotw/ zeigt ganz gut, dass die kurzen Einführungen zwar für einiges reichen, aber bei weitem nicht C++ komplett erklären. Für jedes merkwürdige komplexe Detail das dort erwähnt wird gibt es mindestens eins was nicht erwähnt wird ;)

Damit du dir nicht gleich von Anfang an in Knie schießt, würde ich noch, an deiner Stelle, UML (2.0) dazu lernen.
UML ist Semantik für Bilder. Davon ist überhaupt gar nichts nutzbar um Fehler beim C++ programmieren zu vermeiden.

rotalever
2007-05-06, 11:21:51
Danke erst einmal für die Links.
Das mit UML hört sich natürlich nett an, aber ab wann braucht man es? Für mich sehe ich da jetzt nicht so einen direkten Sinn, kann mich natürlich auch täuschen.
Der Punkt, dass ich die Sprache erst wirklich kann, wenn ich damit programmiert habe, ist schon klar. Allerdings ist das ja auch nicht meine erste Programmiersprache.

Coda
2007-05-06, 12:02:09
Und sie fallen alle früher oder später auf die Nase ;)

rotalever
2007-05-06, 12:14:14
Und sie fallen alle früher oder später auf die Nase ;)
Wie ist das gemeint?

Coda
2007-05-06, 12:56:15
C++ hat viel mehr Tücken als man anfangs überblicken kann. Und wenn man glaubt man kann's ließt man Stroustrup der GOTW und weiß, dass man gar nichts weiß ;)

Gast
2007-05-06, 14:04:10
Sehe ich das richtig, dass wenn man mal von Spiele- und Treiberprogrammierung absieht, C# die deutlich attraktivere Sprache als C++ (unter Windows) ist?

Irgendwie kommt mir C++ in manchen Sachen unnötig komplex vor.

Gast
2007-05-06, 14:06:01
http://www.gotw.ca/gotw/ zeigt ganz gut, dass die kurzen Einführungen zwar für einiges reichen, aber bei weitem nicht C++ komplett erklären. Für jedes merkwürdige komplexe Detail das dort erwähnt wird gibt es mindestens eins was nicht erwähnt wird ;)


UML ist Semantik für Bilder. Davon ist überhaupt gar nichts nutzbar um Fehler beim C++ programmieren zu vermeiden.
Wenn du eine Seite findest oder eine Quelle die C++ mehr oder weniger komplett erklären kann, dann teile es bitte mit :) Sowas suche ich schon seit Jahren.

Trap
2007-05-06, 14:10:53
Es gibt den C++ Standard als draft im Netz:
http://www.kuzbass.ru:8086/docs/isocpp/

Der definiert C++ aber nur und erklärt so gut wie nichts.

Gast
2007-05-06, 19:36:51
Danke erst einmal für die Links.
Das mit UML hört sich natürlich nett an, aber ab wann braucht man es? Für mich sehe ich da jetzt nicht so einen direkten Sinn, kann mich natürlich auch täuschen.UML - oder allgemein: Diagramme zeichnen, die müssen ja nicht zwingend UML-konform sein - wird dann interessant, wenn deine Programme eine gewisse Komplexität überschreiten. Da ist dann für die Wartung/Pflege/Weiterentwicklung eines Programmes durchaus hilfreich, wenn man ein Diagramm ansehen kann, das einen Überblick über die Programmarchitektur/-struktur gibt.

rotalever
2007-05-06, 19:38:56
UML - oder allgemein: Diagramme zeichnen, die müssen ja nicht zwingend UML-konform sein - wird dann interessant, wenn deine Programme eine gewisse Komplexität überschreiten. Da ist dann für die Wartung/Pflege/Weiterentwicklung eines Programmes durchaus hilfreich, wenn man ein Diagramm ansehen kann, das einen Überblick über die Programmarchitektur/-struktur gibt.
Das leuchtet mir ein. Was gibt es da für gute Programme für Linux (am besten GNOME)?

Gast
2007-05-07, 16:09:53
Wieder mal das gleiche selbe lustige Geleier. Ja ich hatte auch Kollegen die glaubten, C++ in einer Woche lernen zu können. Im Gegensatz zu diesem Thread, meinten diese es aber ernst.

Es fällt scheinbar nur wenigen auf, dass C++ zu den objektorientierten Sprachen gehört. Nein halt! Viele haben es schon gehört.

Da gibt es Begriffe wie Ableitung (übrigens einen der am wenigsten verstandenen Begriffe, obwohl es so einfach klingt), Polymorphie, Subtyping, Subclassing, Class Member, Object Member, Interface, abstrakte/generische Klasse (nicht mit Templates zu verwechseln), template Klassen, Aggregation und und und. Dann kommen noch Tonnen von Design-Patterns hinzu.

Will sagen, es nützt gar nichts ein Werkzeug zu besitzen, welches man nicht entsprechend Anwenden kann. Was nützt einem ein schönes Schwert, wenn man die Kunst des Fechtens nicht beherrscht?

Mach dich mal lieber auf Jahre Erfahrung sammmeln gefasst. 2 werden es mindestens.

Gast
2007-05-07, 16:18:31
Sehe ich das richtig, dass wenn man mal von Spiele- und Treiberprogrammierung absieht, C# die deutlich attraktivere Sprache als C++ (unter Windows) ist ?

Irgendwie kommt mir C++ in manchen Sachen unnötig komplex vor.

Wollts nochmal ansprechen

rotalever
2007-05-07, 17:19:51
Wieder mal das gleiche selbe lustige Geleier. Ja ich hatte auch Kollegen die glaubten, C++ in einer Woche lernen zu können. Im Gegensatz zu diesem Thread, meinten diese es aber ernst.

[...]

Mach dich mal lieber auf Jahre Erfahrung sammmeln gefasst. 2 werden es mindestens.
Nun meine Aussage war durchaus ernst gemeint, allerdings bezog ich mich mit "gelernt" eher auf den Syntax/ die verschiedenen Elemente der Sprache und meinte auf keinen Fall, dass ich jetzt schon ein Guru oder dergleichen bin! Es ging mir halt bei der Frage eher darum, zu wissen, ob es z.B. noch irgendwelche mächtigen Funktionen gibt, die ausgerechnet in diesem Tutorial nicht erleutert sind.

del_4901
2007-05-07, 17:23:18
UML ist Semantik für Bilder. Davon ist überhaupt gar nichts nutzbar um Fehler beim C++ programmieren zu vermeiden.

Das hängt davon ab, wie man Fehler definiert ... Bei mir ist verfrickelter Code definitiv fehlerhaft! Den kann ich mir nämlich schenken.

OnT: Ein gutes Pattern Buch währ auch nicht verkehrt (z.B den Gamma, aber der ist niks für Anfänger)

Coda
2007-05-07, 17:30:27
Wieso ist Gamma nix für Anfänger? Ich finde schon.

del_4901
2007-05-07, 17:34:42
Wieso ist Gamma nix für Anfänger? Ich finde schon.
Es gibt auch einfachere Bücher zum Thema, bei den meißen geht doch <auch> schon der Kopp zu, wenn sie mal was englisch lesen müssen.

Gast
2007-05-07, 17:58:03
Den Gamma finde ich auch sinnvoll. Gibt es den nicht auch auf deutsch?

Coda
2007-05-07, 19:14:32
Doch gibt es
http://www.amazon.de/Entwurfsmuster-Elemente-wiederverwendbarer-objektorientierter-Programmers/dp/3827321999/ref=pd_bbs_sr_1/028-6923430-4618956?ie=UTF8&s=books&qid=1178558062&sr=8-1

rotalever
2007-05-07, 19:16:18
Es gibt auch einfachere Bücher zum Thema, bei den meißen geht doch <auch> schon der Kopp zu, wenn sie mal was englisch lesen müssen.
Naja um Englisch kommt man heutzutage aber kaum noch rum, da es fast alle Dokumentationen von größeren Bibliotheken und sonstwas nur auf Englisch gibt.

The_Invisible
2007-05-07, 19:25:12
Sehe ich das richtig, dass wenn man mal von Spiele- und Treiberprogrammierung absieht, C# die deutlich attraktivere Sprache als C++ (unter Windows) ist?

Irgendwie kommt mir C++ in manchen Sachen unnötig komplex vor.

attraktiver auf jeden fall, der code wird zudem einheitlicher da die ganze sprache von anfang an auf oop ausgelegt war (nicht so ein mischmasch wie c/c++)

zudem läuft das programm mit der gleichen executable unter win/lin/mac was das ganze noch interessanter macht. zusammen mit weiteren cross-platform tools wie sdl/opengl oder wxwidgets lassen sich da tolle sachen machen.

mfg

Laz-Y
2007-05-08, 00:52:55
Naja, ist C# nicht auf das .NET Framework angewiesen? bei C++ braucht man das doch nicht.
Falls das falsch sein sollte bitte um Berichtigung. Programmier nur Java ;)

Spearhead
2007-05-08, 01:20:07
naja, bei C# ist man unter Linux auf das mono Projekt angewiesen. Das mag zwar schon ordentlich entwickelt sein, aber wenn ich selbst nun ein Projekt in Angriff nehmen würde, wäre mir C++ lieber, auch wenn ich da für Windows und Linux separat kompilieren muß... da wüßte ich wenn etwas nicht klappt liegt es auf jeden Fall an der Programmierung und nicht daran das jetzt eventuell mono noch ein kleines Problem in einem Bereich hat...

Aber das muß jeder für sich entscheiden, will ja nicht jeder für mehrere Plattformen programmieren, C# hat sicher seine Vorteile, in anderen Bereichen hat C++ halt auch noch welche (z.b. Mehrfachvererbung, hat trotz allem seine Daseinsberechtigung finde ich, auch wenn es aufwendig ist sicherzustellen das sie korrekt implementiert ist).

@Topic: was sinnvoll zum lernen ist? Viel programmieren, anfangs kleineres und immer mehr, Stück für Stück neue Gebiete in Angriff nehmen. C++ ist ein mächtiges Werkzeug, das natürlich auch lange braucht um gemeistert zu werden... aber dann... *g*
Und durch die Verbreitung gibt es auch sehr viele Bibliotheken die einen unterstützen können, u.a. Boost oder für GUIs Qt etc. pp.

CEO
2007-05-08, 11:30:43
Danke erst einmal für die Links.
Das mit UML hört sich natürlich nett an, aber ab wann braucht man es? Für mich sehe ich da jetzt nicht so einen direkten Sinn, kann mich natürlich auch täuschen.
Der Punkt, dass ich die Sprache erst wirklich kann, wenn ich damit programmiert habe, ist schon klar. Allerdings ist das ja auch nicht meine erste Programmiersprache.

UML jetzt erst recht. Bei komplexen vorhaben kommst du um UML nicht rum. Gibt so ein Java buch, da sind alle beispiele auch in UML form abgebildet, so lernt man nebenbei auch die darstellung eines klassendiagrams, kompositionen usw...

Coda
2007-05-08, 11:47:17
Bei komplexen vorhaben kommst du um UML nicht rum.
Was erachtest du als "groß"?

Ich hatte schon Projekte mit >500KiB Code und bin sehr gut um UML rumgekommen.

Trap
2007-05-08, 16:57:33
UML jetzt erst recht. Bei komplexen vorhaben kommst du um UML nicht rum. Gibt so ein Java buch, da sind alle beispiele auch in UML form abgebildet, so lernt man nebenbei auch die darstellung eines klassendiagrams, kompositionen usw...
UML lesen können ist ab und zu ganz sinnvoll.

Aber UML für sich löst kein Problem, behebt keine Fehler, verhindert keine Fehler und ergibt kein besseres Design. Dafür braucht man jemand der etwas von Patterns, OOA und OOD versteht. UML braucht man höchstens als Sprache um über die Dinge reden zu können. UML ist überflüssiger Aufwand, wenn derjenige die benutzte Programmiersprache beherrscht und die IDE sinnvolle Codenavigation erlaubt.

The_Invisible
2007-05-08, 20:36:20
naja, bei C# ist man unter Linux auf das mono Projekt angewiesen. Das mag zwar schon ordentlich entwickelt sein, aber wenn ich selbst nun ein Projekt in Angriff nehmen würde, wäre mir C++ lieber, auch wenn ich da für Windows und Linux separat kompilieren muß... da wüßte ich wenn etwas nicht klappt liegt es auf jeden Fall an der Programmierung und nicht daran das jetzt eventuell mono noch ein kleines Problem in einem Bereich hat...

Aber das muß jeder für sich entscheiden, will ja nicht jeder für mehrere Plattformen programmieren, C# hat sicher seine Vorteile, in anderen Bereichen hat C++ halt auch noch welche (z.b. Mehrfachvererbung, hat trotz allem seine Daseinsberechtigung finde ich, auch wenn es aufwendig ist sicherzustellen das sie korrekt implementiert ist).


ja, hast schon recht, ich bin draufgekommen das es oft probleme gibt wenn man komplexere objekte als parameter per "ref" übergibt, ansonsten läuft zb ein 10000 zeiler unter win wie auch lin problemlos. da unsere programme immer mindestens auf win und lin laufen müssen, musste ich schon des öfteren kompromisse eingehen, daher bin ich das schon gewohnt.

ansonsten ist C/C++ natürlich sehr mächtig, da es hier quasi immer alles als erster gibt.

mfg

rotalever
2007-05-08, 22:09:26
ansonsten ist C/C++ natürlich sehr mächtig, da es hier quasi immer alles als erster gibt.
Und da ich es persönlich vor allem für Echtzeitanwendungen nutze, ist der Geschwindigkeitsvorteil auch nicht schlecht :smile:, auch wenn es vll. nur 10-30% sind.

Coda
2007-05-08, 22:18:55
He? Ich dachte du hättest es gerade erst "gelernt"?

Klein Hannes
2007-05-09, 12:08:40
Hi,
zum Programmieren lernen ist Pascal am besten geeignet am ungeeignetsten ist BASIC.
Bevor jemand etwas ein wirft, MFC, OWL und VCL sind nicht Bestandteil einer Programmiersprache.
Visual C++, C++ Builder, Visual Basic und Delphi sind Entwicklungsumgebungen. Um C++ zu lernen reicht der GNU Compiler.
Meine Empfehlung ist Pascal mit Delphi.

Coda
2007-05-09, 12:34:58
Wann hört das ewige "Wie drücke ich Anfängern meine Lieblingssprache aufs Auge" endlich auf...

Es gibt nicht die Beste Anfängersprache.

Klein Hannes
2007-05-09, 13:21:48
@Coda
Pascal ist eine Programmiersprache, die 1968 bis 1972 von dem Schweizer Informatiker Niklaus Wirth entwickelt wurde. Das wichtigste Konstruktionsprinzip war, die Sprache so einfach und strukturiert wie möglich zu gestalten - die Sprache wurde von Niklaus Wirth ausdrücklich und speziell als Lehrsprache entwickelt.

Ich programmiere, je nach Auftrag, in der Sprache die das erreichen eines Zieles erforderlich macht. Ich habe keine Lieblingssprache.

Schönen Tag noch und viel Spaß beim sammeln von Punkten!

Gast
2007-05-09, 14:06:54
Hi,
zum Programmieren lernen ist Pascal am besten geeignet am ungeeignetsten ist BASIC.
Bevor jemand etwas ein wirft, MFC, OWL und VCL sind nicht Bestandteil einer Programmiersprache.
Visual C++, C++ Builder, Visual Basic und Delphi sind Entwicklungsumgebungen. Um C++ zu lernen reicht der GNU Compiler.
Meine Empfehlung ist Pascal mit Delphi.

Vielleicht für strukturiertes Programmieren. Für objektorientiertes Programieren kannst du die wohl kaum verwenden. Und bitte nicht mit Turbo Pascal ankommen, wenn es um OO Sprachen geht.

SamStone
2007-05-09, 14:31:18
Vielleicht für strukturiertes Programmieren. Für objektorientiertes Programieren kannst du die wohl kaum verwenden.
Noch nie was von Object Pascal (=Delphi) gehört?

rotalever
2007-05-09, 14:47:09
He? Ich dachte du hättest es gerade erst "gelernt"?
Naja C++ hab ich neu gelernt, habe aber vorher schon C,Python programmiert.

PH4Real
2007-05-09, 15:06:15
Pascal ist eine Programmiersprache, die 1968 bis 1972 von dem Schweizer Informatiker Niklaus Wirth entwickelt wurde.

Kann Coda nur zustimmen... Es schadet durchaus nicht mit den etwas "neueren" Sprachen anzufangen. Außerdem geht es hier nicht um: "Welche Sprache soll ich lernen?", sondern um "C++: Was ist sinnvoll zu lernen?".

Gast
2007-05-09, 15:06:38
Noch nie was von Object Pascal (=Delphi) gehört?

Da stehen einem mal wieder die Haare zu Berge. Erst von Pascal reden, welches eindeutig nicht objektorientiert ist und dann aber irgend einen proprietären Sprachdialekt anführen, der OO tauglich ist. Wunderbar unpräzise.

Und für OO Sprachen lohnt sich wohl eher Smalltalk oder Eifel, welche nahezu jedes OO Konstrukt abbilden können. Wobei Eifel im Gegensatz zu Smalltalk stark typisiert ist,. Wollte extra keine Sprachen anführen. Aber wenn man mit Delphi im OO Bereich anrückt, naja ...

The_Invisible
2007-05-09, 19:21:26
Und da ich es persönlich vor allem für Echtzeitanwendungen nutze, ist der Geschwindigkeitsvorteil auch nicht schlecht :smile:, auch wenn es vll. nur 10-30% sind.

C# wird wie java ja auch durch nen JIT gejagt

zumindest ist es in kritischen situationen >200 mal schneller als python & co

mfg

HellHorse
2007-05-09, 19:59:03
Es gibt nicht die Beste Anfängersprache.
Doch sicher, Lisp.

Coda
2007-05-09, 21:38:46
Ja. Du mich auch ;)

rotalever
2007-05-09, 21:43:08
C# wird wie java ja auch durch nen JIT gejagt

zumindest ist es in kritischen situationen >200 mal schneller als python & co

mfg
Hat ja auch keiner gesagt das Python schnell sei, dafür ist es halt nicht gedacht.