Frage zur Programmierung mit C++



  • Und wenn man schnell mal C++ lernt um möglichst schnell ein Spiel zu programmieren, ist man sowieso falsch.



  • Mir ist es ja nicht wichtig es so schnell wie möglich zu lernen.
    Ich finde blos, dass man bei cdm nicht allzu große Erfole sehen kann, bis auf Zahlen und Texte und das lässt einen nach einigen Monaten lustlos werden.
    Denke es ist durchhaltevermögen gefragt.
    Hoffe es ist der richtige weg



  • Meinst du hier wirklich "Erfolge *sehen*", oder vielleicht eher "Erfolge *anderen zeigen*", die von einer schnöden cmd-Anwendung wahrscheinlich wenig beeindruckt sind?

    (Beachte: Das ist keine Frage, auf die *ich* eine Antwort möchte, sondern eine Frage, die du dir *selbst* stellen sollst. Ich kenne das Gefühl nämlich aus eigener Erfahrung.)



  • Kevinb schrieb:

    Mir ist es ja nicht wichtig es so schnell wie möglich zu lernen.
    Ich finde blos, dass man bei cdm nicht allzu große Erfole sehen kann, bis auf Zahlen und Texte und das lässt einen nach einigen Monaten lustlos werden.
    Denke es ist durchhaltevermögen gefragt.
    Hoffe es ist der richtige weg

    Man muss eben klein anfangen. Und auch mit der Konsole kann man sehr viel Spaß haben. Und wenn man es nicht schafft eine Konsolenanwendung zu schreiben, dann wird man bei Spielen oder Dialog-Anwendungen erst recht scheitern. Gewisse Grundlagen muss man sich eben einfach aneignen.

    Und Durchhaltevermögen braucht man hier natürlich besonders viel. Aber über die Zeit wird man merken, das man immer besser wird und man immer mehr umsetzen kann.



  • Kevinb schrieb:

    Mir ist es ja nicht wichtig es so schnell wie möglich zu lernen.
    Ich finde blos, dass man bei cdm nicht allzu große Erfole sehen kann, bis auf Zahlen und Texte und das lässt einen nach einigen Monaten lustlos werden.
    Denke es ist durchhaltevermögen gefragt.
    Hoffe es ist der richtige weg

    Du meinst sicherlich die cmd!? 😉
    Ich finde das hat nicht sehr viel mit Durchhaltevermögen zu tun. Es kann sehr wohl auch sehr viel Spaß machen Sachen für die Konsole zu programmieren. Dabei kann man sich nämlich auf das wesentliche konzentrieren, anstatt gleich die ganze Konzentration dem GUI-Schnick-Schnack zu widmen. Man kann auch anspruchsvolle Programme für die Konsole entwickeln. Ich selber mache auch nicht sehr viel mit GUI, da es mir nicht so viel Spaß macht so viel Zeit in eine GUI zu investieren und da ich finde, dass ich so auch mehr lerne.

    Lg freeG





  • Das man anfangs immer zuerst mit der Console arbeiten muss ist ein bißchen Mainstreamdenken. Man kann auch C++ gleich mit GUI lernen. Solange man nur drawLine, drawPixel, drawPolygon und string out benützt, kann man sich wunderbar weiterhin auf C++ konzentrieren. Kommt auf das gleiche hinaus, solange man nicht unbedingt komplizierte Funktionen einer Bibliothek beimischt.

    Nur fehlt ein gutes Starttutorial dazu das so ausgelegt ist, dass man mit GUI bzw mit einer Grafikbibliothek sicher C++ lernen anfangen kann. Ich hab SDL genommen, später auf Qt umgestiegen und von da aus weiter C++ gelernt, als ich mit Zeigern teilweise zurechtkam. Ich bin der Ansicht dass Klassenprogrammierung, new/delete und Threads in der Konsole wenig Sinn macht.



  • Um C++ zu lernen eignet sich die SDL schon mal absolut gar nicht. Schließlich handelt es sich um eine C-Library. Für C++ wäre hier SFML besser geeignet. Aber wie soll ein Anfänger mit einer solchen Library klar kommen, wenn ihm die Grundlagen fehlen? Wie man es auch dreht und wendet. Es ist einfach keine gute Idee direkt so einzusteigen. Mag sein, das man damit scheinbar erfolgreich ist, aber man bringt sich auf diesen Weg viele falsche Dinge bei, da man die Hintergrundprozesse einfach nicht versteht. Auch für den eigenen Programmierstil und die Lösung diverser Probleme ist es sinnvoller, wenn man zunächst klein anfängt und sich ausschließlich darauf konzentrieren muss. Bei einer Anwendung mit GUI gibt es wohlmöglich unterschiedliche Threads und gewisse Aktionen lassen sich nur im Hauptthread ausführen, etc. Dann muss man Variablen noch von Dialog zu Dialog weiterreichen bzw. Erben, um gewisse Dinge zu erreichen. Undenkbar für einen Anfänger!



  • xBlackKnightx schrieb:

    Das man anfangs immer zuerst mit der Console arbeiten muss ist ein bißchen Mainstreamdenken. Man kann auch C++ gleich mit GUI lernen.

    Klar, aus Prinzip rebellisch sein und gegen den Strom schwimmen ist schliesslich auch cool. Aber ab und zu schadet es nicht, sich was sagen zu lassen 😉

    Hör auf ghjghj, er weiss wovon er redet.



  • xBlackKnightx schrieb:

    Man kann auch C++ gleich mit GUI lernen.

    Was hast du geraucht?



  • Versucht nicht mir das Recht meiner Intuition zu nehmen.

    Ich habe soeben ein Buch von Stroustrup gekauft und er hat es erkannt: Die GUI und Grafikausgabe mit Zeichnen von Linien und Punkten etc werden ZUERST behandelt bevor er weiter mit new, delete, this-funktion, Vektoren und Kopierkonstruktoren etc führt.

    http://books.google.com/books?id=MeezQYeenDkC&lpg=PA265&dq=Einführen in die Programmierung C%2B%2B&pg=PA420#v=onepage&q&f=false

    S. 420

    Qt ist zwar 'ne Nummer zu groß, aber damals wusste ich nix von anderen Möglichkeiten. Habe auch nicht gesagt dass man so anfangen soll. Jedoch mit einfacheren GUI könnte man Console ersetzen bzw erweitern. Indem Fall von Stroustrup hätten #include "Simple_window.h" und #include "Graph.h" genügt. Ob das mit Zeitschleife funktioniert weiss ich nicht. Aber man kann schon einen perfekten GUI für C++ Anfänger schreiben. Wieso sollte man mit einer Bibliothek nicht klarkommen? io_stream ist auch ne Bibliothek.
    Statt

    cout << "quak" << int_x;
    

    einfach

    Text t(Point(200,200), "quak" + int_x);
    

    oder so



  • xBlackKnightx schrieb:

    Ich bin der Ansicht dass Klassenprogrammierung, new/delete und Threads in der Konsole wenig Sinn macht.

    Das ist ja mal ne coole Ansicht... obwohl ich sie absolut nicht nachvollziehen kann. Was hat das mit der Art der Ein-/Ausgabe zu tun?
    Außerdem bin ich der Ansicht, dass new/delete und Threads keine sinnvolle Themen für einen C++ Einsteiger sind.
    Eigentlich ist es egal in welcher Umgebung man lernt, solange man sich in dieser auf das wesentliche konzentrieren kann. Auf die Konsole trifft das sicherlich zu. Für irgendein GUI Framework kenn ich zumindest kein gutes Einsteigerbuch oder -tutorial, i.d.R. sind diese sogar eher der absolute Schrott. Ich habe übrigens auch irgendwann mal mit so einem Müllbuch angefangen: "Klicken Sie auf 'Klassenassistent' um eine neue Klasse hinzuzufügen". Alles brav nachklickern und abtippern, aber keinen Plan was man da eigentlich macht.



  • Ich bin der Ansicht dass Klassenprogrammierung, new/delete und Threads in der Konsole wenig Sinn macht.

    Wie schön.
    Ich programmiere jetzt schon einige Zeit C++ und alle meine Programme sind rein konsolenbasiert, weil ich absolut kein Interesse habe, an GUIs zu arbeiten.



  • wenn man einen Server programmieren will...

    new und delete kommen später dran. Fängt man aber sobald damit an, ist es von Vorteil, wenn man schon eine Grafikausgabe hat. Das Ganze in einer Console herumexperimentieren lässt doch etwas lustlos werden. Möchte man mit einer Taste beliebige viele Objekte hinzufügen und rumschwirren lassen, geht das mit "new" ganz gut. In der Console müsste man abfragen welche Objekte noch zur Laufzeit vorhanden sind oder so ähnlich. Jedenfalls zu steril für die Mächtigkeit von "new" und um sie besser zu verstehen.

    Dass es keine guten C++ Einsteigerbücher mit GUI gibt, habe ich ja oben auch geschrieben. (Starttutorial) Aber es liegt nicht daran dass es nicht möglich ist, sondern dass sich drum keiner bemüht hat.


  • Mod

    Du hast komische Vorstellungen von Konsolen.

    Auch meine Anwendungen sind allesamt Konsolenanwendungen, sind keine Server, machen aber trotzdem allerlei sehr mächtiges Zeug. Und ich brauche sogar manchmal new und delete (wenn auch sehr selten). In der Regel auch voll objektorientiert und mit allen anderen Schikanen des Softwaredesigns die ich für die jeweilige Projektgröße für angebracht halte.

    Ich sehe überhaupt nicht, wie du den Zusammenhang zwischen Programmlogik, Design und Form der Ausgabe konstruieren willst.



  • Das kann ich nachvollziehen:

    Das Ganze in einer Console herumexperimentieren lässt doch etwas lustlos werden.

    Allerdings habe ich zuerst doch lieber eine Konsole, damit ich nicht von unwichtigen Sachen, wie Grafik abgelenkt werde, wenn ich einen neue Sprache lerne. GUI führt gleich zu mehr Aufwand bei der Installation läuft auch nicht unbedingt gleich von Anfang an. Aber das sind Sachen, womit sich ein Anfänger erst rumschlagen sollte, wenn er die Sprache mehr oder minder beherrscht.
    GUI wird ja erst interessant, wenn man einmal Buttons und das Event Handling hat. Dass das nichts für ein Anfänger ist, der noch nie programmiert hat ist denke ich klar. Und wo der Mehrwert einer schnöden Textausgabe im Vergleich in einem "GUI-Fenster" zu der Ausgabe in die Konsole sein soll weiss ich auch nicht "std::cout <<" ist ja nichts weiteres, als das:

    Text t(Point(0,0), "quak" + int_x);
    

    Einfach in standardisiertes C++ verpackt.. (das +int_x macht btw. nicht das, was du denkst.. ich hoffe das ist klar..).

    aber das hier verstehe ich nicht:

    xBlackKnightx schrieb:

    Möchte man mit einer Taste beliebige viele Objekte hinzufügen und rumschwirren lassen, geht das mit "new" ganz gut. In der Console müsste man abfragen welche Objekte noch zur Laufzeit vorhanden sind oder so ähnlich. Jedenfalls zu steril für die Mächtigkeit von "new" und um sie besser zu verstehen.

    🙄

    Ich verstehe nicht was die Diskussion Konsole<->GUI mit new zu tun hat.. 😕



  • Du kannst über eine Konsolenanwendung auch ganz einfach "Spiele programmieren".
    Probiers mal mit Snake oder kleinen Quiz-games 🙂

    Setze dich mit der Sprache C++ auseinander und festige deine Kentnisse mit kleinen Testprogrammen. Es wird dir nämlich nichts bringen, wenn du mit einer Grafikenginen programmieren willst, aber keine Ahnung hast warum der Compiler einen Error ausgibt 🙂

    Grüße und viel Glück dabei,
    philipp



  • Natürlich ist die Konsole langweilig, ich weiß gar nicht, wieso das hier irgendwer bestreiten will. Das reicht für Server und die Sprache an sich. Das ist aber was für Knobler und Leute, die nichts Tolles sehen wollen.

    Aber wie auch schon gesagt wurde: C++ ist keine Sprache, die man lernt, um sofort Erfolge zu haben. Man lernt sie, um extrem flexible, portable und performante Programme schreiben zu können. Die Grundlagen wollen eben beherrscht sein.

    Wenn man nach etwas C++-Kenntnissen sich in die GUI stürzt, endet das meistens mit einem Absturz. Man kriegt nichts richtig hin und merkt, dass es das auch nicht ist. Das führt ebenfalls zu Frust, man sieht das vorher nur nicht so.

    Ich würde mir ein gewisses Grundverständnis von vielen C++-Konzepten aneignen und dann ein kleines GUI-Projekt aufbauen. Dann kann man parallel C++-Kenntnisse und GUI weiterentwickeln. Erst komplett C++ zu lernen ist ja auch Unsinn. Da ist man Jahre dran, dann kommt man nie aus der Konsole raus. Aber ein paar Grundlagen müssen da sein, dazu sollte man zumindest Mal ein gutes Grundlagenbuch (alles von diesem Jürgen ist Müll) lesen.



  • Welches Empfiehlst du denn?
    Ich arbeite gerade das Buch "Moderne C++ Programmierung". Nur der Inhalt ist soviel Stoff, da bleibt die Frage ob es Sinn macht, dass alles auf Konsolenebene auszutesten 😉

    p.s das buch ist von Ralf Schneeweiß aus dem Springer-Verlag 🙂



  • Eisflamme schrieb:

    Natürlich ist die Konsole langweilig, ich weiß gar nicht, wieso das hier irgendwer bestreiten will. Das reicht für Server und die Sprache an sich. Das ist aber was für Knobler und Leute, die nichts Tolles sehen wollen.

    GCC ist auch eine Konsolenanwendung, wird auch auf Nicht-Servern benutzt, und ist sicherlich sehr komplex/interessant. 😉


Anmelden zum Antworten