Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

22.01.2012, 16:40

Danke für den Tip. Ich denke, dass Buch habe ich sogar in einer recht aktuellen Fassung sogar in der Stadtbibliothek gesehen, dann muss ich's mir nicht gleich kaufen...
aber weißt du was, ich kauf's mir am besten doch gleich, dann hab ich was "handfestes".
Details sind immer gut. Ich finde, Details verwirren nicht - sie unterstützen beim Verstehen!
Hab mich schon öfter mal über Bücher geärgert, in denen teilweise steht "das erklären wir später" oder sogar "ist einfach so".

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

22.01.2012, 16:46

Header sind nix andres als Dateien die an der Stelle des #include in deine .cpp Datei eingebunden werden. Im Prinzip könntest du statt dem #include einfach den Inhalt des Headers per Copy&Paste einfügen. Das ist im Prinzip wirklich alles was es darüber zu wissen gibt. Der Präprozessor (alles was mit einem # anfängt) betreibt am Ende nur simple Textersetzung.
Aber auch wenn das Prinzip sehr einfach ist, so können da leider trotzdem sehr schnell vor allem für Anfänger schwer durchschaubare Probleme entstehen. Der Klassiker sind zirkuläre Abhängigkeiten, also Header die sich gegenseitig inkludieren (z.B. A inkludiert B inkludiert C inkludiert A). Wenn man sich keine Gedanken drüber macht wie einzelne Dateien voneinander abhängen, sondern einfach mal überall alles inkludiert, dann ist das schnell passiert.
Inkludier immer nur was wirklich notwendig ist und pass auf dass du niemals zirkuläre Abhängigkeiten hast.
Und verwechsel #include nicht mit using in C#; wenn es für dich auch vielleicht ähnlich aussehen mag, so ist es doch was völlig anderes.
Ich würde dir empfehlen, dass du dir einfach nochmal anschaust wie der Buildprozess eines C++ Programms allgemein so abläuft. Der unterscheidet sich nämlich wesentlich von C#. In C++ werden deine .cpp Dateien einzeln kompiliert und die dabei entstandenen Fragmente erst in einem nachfolgenden Schritt zu einer exe gelinked.
Und dann fixier dich nicht zu sehr auf irgendwelche Tutorials. Das wichtigste ist Erfahrung und die bekommst du nur indem du einfach viel programmierst ;)

The C++ Programming Language (ich empfehle auf jeden Fall die englische Originalversion) ist zwar was, was jeder fortgeschrittene C++ Programmierer mehrfach gelesen und im Regal stehen haben sollte, aber für Anfänger imo absolut ungeeignet.
Und ich glaub dass es auch einem C# Umsteiger nicht wirklich weiterhelfen wird.
Erfahrung kann man leider nicht in Büchern oder Tutorials nachlesen...

Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von »dot« (22.01.2012, 17:03)


NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

13

22.01.2012, 16:48

Effektiv C++ Programmieren ist auch super.

Ich Programmiere jetzt drei Jahre in C++ und hab manchmal immernoch Probleme. Wenn das nicht so wäre, wäre es ja auch kein C++ :pillepalle:

Zu den Headern: Mach stark gebraucht vom Pimpl-Idiom, pack Includes nur für die Vererbung oder bei Templates in Header und du wirst wesentlich mehr Spass an der Sprache haben.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

14

22.01.2012, 17:01

The C++ Programming Language (ich empfehle auf jeden Fall die englische Originalversion) ist zwar was, was jeder fortgeschrittene C++ Programmierer mehrfach gelesen und im Regal stehen haben sollte, aber für Anfänger imo absolut ungeeignet.
Und ich glaub dass es auch einem C# Umsteiger nicht wirklich weiterhelfen wird.
Erfahrung kann man leider nicht in Büchern oder Tutorials nachlesen...

Also ich habe TCP++ gelesen nachdem ich nur Heikos Buch gelesen hatte und es hat mir enorm geholfen. Ich denke mal Pac-Man ist einiges weiter, als ich damals. Für absolute Neueinsteiger sicher nicht geeignet, aber wenn man schon coden kann sollte es nicht so ein Problem sein. Grundlagen werden ja auch erklärt, aber eben auch mit nützlichen Zusatz Tipps.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

22.01.2012, 17:03

Du hast aber mit Heikos Buch bereits von Grund auf gelernt in C++ zu denken. Ich hab jedenfalls nicht den Eindruck, dass das Buch irgendeine der von ihm hier gestellten und noch nicht gestellten Fragen auch nur ansatzweise auf eine für ihn zufriedenstellende Art beantworten könnte...

16

22.01.2012, 17:08

Darf man fragen, wozu du in C++ programmieren möchtest? Ist das Job bedingt, zwecks vorsorglicher Weiterbildung oder einfach nur aus Spaß am Programmieren in C++?

17

22.01.2012, 18:04

Einfach nur aus Spaß (ja tatsächlich) an C++. Ich programmiere halt sehr gern systemnah, und mit .NET gelingt mir das nicht (vernünftig).
Vielleicht liegt das daran, dass ich meine ersten Zeilen Code für einen 3 MHz Prozessor geschrieben habe, in einer Sprache, die bei Ausführung interpretiert wird, und jede if-Bedingung, die zuviel ist, machte das Programm langsamer. Wenn ich weiß, dass ich mit C++ schnelleren Code schreiben kann als mit .NET (gute Programmierung vorausgesetzt natürlich) dann macht mich das schon glücklicher. Ich will mich da nicht Möchtegern-Geschwindigkeits-Perfektionist nennen, weil das eingebildet klingt, eher Geschwindigkeits-Fanatiker.
Immerhin, ASM habe ich mir dafür schon beigebracht, aber damit kann man natürlich nicht ernsthaft programmieren, eher Programmiertes wieder auseinandernehmen ;P
Und wer weiß, vielleicht suche ich mir demnächst sowieso einen anderen Arbeitsplatz und da ist C++ mehr gefragt.

Ich möchte ja jetzt auch nicht direkt Fragen über meine C++-Schwächen stellen. Immer wieder Löcher in meinem geflickten C++-Wissen zu stopfen, verursacht vermutlich ein unsicheres Gefühl beim Programmieren, und genau das habe ich.

Tatsächlich ist mir das mit #include vollkommen klar und auch die Reihenfolge, in denen meine Dateien abgegrast werden, habe ich schon "optimiert", bzw. auf das System ähnlich der Tribase-Engine gebracht.
Die Schlagworte, die ich zuerst genannt habe, waren bzw. sind meine typischen Probleme. Aber dennoch danke für die erneute Erläuterung.
(Das C# using x; ist ja auch eher etwas wie using namespace x; in C++ :D)

18

22.01.2012, 18:26

Na dann :) wenn du gerne am Limit arbeitest, kannst du dir ja mal Demoprogrammierung anschauen. Das macht sogar mir als C/C++ Muffel ziemlich viel Spaß. Das hier habe ich als Basis für meine Experimente genutzt http://www.iquilezles.org/www/material/i…isystem1k4k.htm Allerdings wird man bei kleinen Größenvorgaben wohl nicht viel bzgl. C/C++ lernen, da hat man dann mehr mit Shader-Programmierung und Algorithmen zu tun...

19

26.01.2012, 18:28

Ich muss mich nochmal bei drakon bedanken für den Buchtip.
Ich lese nun erst das zweite Kapitel und fühle mich schon deutlich sicherer in C++.
Wunderbar vor allem, wie mir Bjarne Stroustroup in einem Satz das "= 0" hinter virtuellen Funktionen erklärt.
Danke! :D

Werbeanzeige