Umstieg von Blitz Basic zu C++



  • Hallo!
    Ich interessiere mich schon seit geraumer Zeit fuer die Sprache C++ und wuerde sie gerne lernen. Ich programmiere derzeit in BlitzBasic (einer einfach zu erlernender Spieleprogrammiersprache)... Das hatte mir auch bis jetzt gereicht, aber inzwischen sind meine Anforderungen groesser geworden. Ausserdem mache ich mir auch Zukunftsgedanken (moechte spaeter einmal beruflich programmieren) - und da ist C++ fuer mich die beste Wahl.
    Es geht mir dabei nicht in erster Linie um die Spieleprogrammierung - ich moechte auch mal ganz "normale" Windows GUI-Anwendungen schreiben...

    Nun habe ich einpaar Aengste und traue mich noch nicht wirklich bzw. weiss ich nicht wirklich wo ich anfangen soll..
    Zum einen waere da mal die objektorientiere Programmierung. Die ist etwas verwirrend fuer mich... bzw. wuesste ich nicht inwiefern sie mir meine Arbeit erleichtern wuerde...

    Mein Bekannter war so nett und hat mir seine "alten Sachen" geschenkt... Buecher ueber C++ ("Jetzt lerne ich C++", "Jetzt lerne ich Visual C++ 6" und "Jetzt lerne ich Spieleprogrammierung in DirectX 8 und Visual C++")... ausserdem noch eine aelter Visual C++ Version, naemlich Visual C++ 6 Standard Edition...
    Nun eine Frage... Sind diese Buecher fuer den Anfang noch zu empfehlen oder sollte ich mir lieber was neueres kaufen?
    Kann bzw. darf ich mit diesem Visual C++ 6 Standard auch Programme schreiben, um sie zu verkaufen? (kommerzielle nutzung)
    Was koennen die neueren Visual C++ Versionen was meine alte Version nicht kann?

    Bitte gebt mir einpaar gute Ratschlaege - ich blicke da naemlich einfach nicht durch... 😕



  • Blitz-Coder schrieb:

    Es geht mir dabei nicht in erster Linie um die Spieleprogrammierung - ich moechte auch mal ganz "normale" Windows GUI-Anwendungen schreiben...

    Ganz "normale" Windows GUI-Anwendungen sind in C++ erst drin, wenn man die C++ Grundlagen beherrscht. Der Umfang des C++ Standards kennt z.B. garkeine GUI.

    Blitz-Coder schrieb:

    Nun habe ich einpaar Aengste und traue mich noch nicht wirklich bzw. weiss ich nicht wirklich wo ich anfangen soll..
    Zum einen waere da mal die objektorientiere Programmierung. Die ist etwas verwirrend fuer mich... bzw. wuesste ich nicht inwiefern sie mir meine Arbeit erleichtern wuerde...

    1. Mit Konsolenprogrammen
    2. Objektorientierung macht - richtig angewendet - ein Programm übersichtlicher und damit wartbarer, da man mehr in logische Einheiten zerlegen kann.

    In der OO-Sicht programmiert man gegen Schnittstellen, nicht direkt die Implementierung. Sprich ähnlich wie du zuhause einen CD-Spieler bedienst. Du betrachtest seine sichtbaren Schnittstellen und schraubst ihn nicht auseinander. Sicherlich muss man auch in OO die Geräte erst einmal bauen, doch die Verwendung wird erleichtert.

    Blitz-Coder schrieb:

    Mein Bekannter war so nett und hat mir seine "alten Sachen" geschenkt...

    Ich werde gleich sehr viel Kritik bekommen (Na "Kritiker", lässt du dich blicken?), doch ich würde dir raten das alte Zeug garnicht erst zu verwenden. Und ja es macht einen Unterschied. Der aktuelle C++ Standard ist von 1998, die Ergänzung (TR1) von 2003 und der nächste C++ Standard kommt in den nächsten Jahren. VC6 hat so seine "Probleme".

    Am besten du greifst zum Visual C++ 2008 Express Edition (kostenlos; Nachtrag: Auch kommerziell verwendbar), lernst erst einmal C++ an aktueller Lektüre (Thinking in C++, kostenlos im Netz oder C++ Primer) und nachdem du damit Fit bist (frühestens nach einem halben Jahr eher noch später, kannst du dir überlegen welche UI-Bibliothek du dann lernen willst... MFC, QT, wxWidgets...).

    cu André



  • asc schrieb:

    1. Mit Konsolenprogrammen

    naja, also für einen, der bisher mit blitz-basic programmiert hat, sind konsolenprogramme ein ausflug in die steinzeit.

    asc schrieb:

    doch ich würde dir raten das alte Zeug garnicht erst zu verwenden.

    zum lernen der grundlagen ist vc6 doch nicht schlecht.
    🙂



  • ~fricky schrieb:

    asc schrieb:

    1. Mit Konsolenprogrammen

    naja, also für einen, der bisher mit blitz-basic programmiert hat, sind konsolenprogramme ein ausflug in die steinzeit.

    Ich kenne den Codestil von Leuten die eine Sprache beherrscht haben und meinten unter C++ gleich mit UI einsteigen zu wollen. Ich weiß warum ich etwas anderes rate.

    ~fricky schrieb:

    zum lernen der grundlagen ist vc6 doch nicht schlecht.

    Kommt darauf an ob man sich ein paar Punkte später wieder abgewöhnen will, und ob man die C++ Standardbibliothek verwendet. Ich ziehe eine aktuelle Umgebung vor.



  • ~fricky schrieb:

    zum lernen der grundlagen ist vc6 doch nicht schlecht.
    🙂

    Doch, ist es. Man lernt, wenn man Pech hat, die falschen Grundlagen (bei VC6 ist das sogar sehr wahrscheinlich). Außerdem, wieso sollte man mit so einem Fossil rumhantieren, wenn es deutlich moderne Compiler, die in wirklich allen Bereichen überlegen sind, gratis gibt?
    Man tut sich damit echt keinen Gefallen.



  • @asc! Man, du mußt es ihm deutlich sagen: "Schmeiß das alte Zeug weg! Selbst geschenkt ist es nutzlos."

    @Blitz-Coder! Also, VC6 unterstützt den ISO-C++-Standard von 1998 nicht! Du wirst sowohl mit der VC6-Literatur als auch mit dem VC6-Compiler heute nicht sehr weit kommen, da du "falsches" C++ lernen und programmieren wirst. Du brauchst aktuelle und vorallem GUTE Bücher. Vorallem gute C++-Bücher sind auf dem heutigen Markt selten, da jeder meint, weil er man C++ gemahct hat, ein Buch darüber schreiben kann. Dabei hat nicht mal der C++-Erfinder Bjarne Stroustrup es nicht geschafft, ein gutes EINSTEIGER-Buch zu schreiben.

    Tip: http://www.oop-mit-cpp.de
    Auch ganz i.O.: C++ Primer (allerdings hat die dt. Ausgabe ein paar Übersetzungsfehler)

    So, wenn du ein gutes Buch hast, solltest du einen vernünftigen Compiler herunter laden. Am besten gleich mit einer IDE. Und da bietet sich unter Windows VisualC++ 2008 Express Edition an. Die ist kostenlos und man kann damit auch Programme schreiben, die man verkaufen will.

    Evtl kann man auch Codeblocks empfehlen... ist aber meiner Meinung nach nur dann zu empfehlen, wenn man MS-Hasser oder Opensource-Verfechter ist.

    So, das sind erstmal die wichtigsten "Werkzeuge" um mit Spaß C++ zu lernen. C++ ist schon komplex genug, da sollte man nicht am falschen Ende sparen.



  • Vielleicht sollten wir jetzt einfach einen Thread als Abschluß verlinken in dem das ewig Diskutiert wurde um nicht gleich den nächsten Thread auf 5+ Seiten mit der Diskussion aufzubauschen.

    Nachtrag:

    Bulli schrieb:

    @asc! Man, du mußt es ihm deutlich sagen: "Schmeiß das alte Zeug weg! Selbst geschenkt ist es nutzlos."

    Ich habe es deshalb etwas "vorsichtig" ausgedrückt, weil das Thema erst vor kurzen in genügend Threads bis zum abwinken diskutiert wurde. Ich tippe wenn ich mir diese Threads ins Gedächtnis rufe:
    80% für neues Lernen, 20% für bleib beim alten Sch****...

    cu André



  • asc schrieb:

    ~fricky schrieb:

    asc schrieb:

    1. Mit Konsolenprogrammen

    naja, also für einen, der bisher mit blitz-basic programmiert hat, sind konsolenprogramme ein ausflug in die steinzeit.

    Ich kenne den Codestil von Leuten die eine Sprache beherrscht haben und meinten unter C++ gleich mit UI einsteigen zu wollen. Ich weiß warum ich etwas anderes rate.

    du magst recht haben, dass konsolenprogramme der einzig richtige weg sind, um c++ zu lernen. aber mich würde es jedenfalls tierisch nerven, wenn ich vorher die tollsten grafischen sachen machen konnte und jetzt nur noch mit zeichen und ziffern rumfummeln muss. die nächste stufe wird dann der einsatz von 'improved console' sein, oder was?
    🙂



  • Mir ist schon klar, dass ich anfangs erstmal nur Konsolenprogramme schreiben lerne... ist auch voellig in Ordnung - ich lerne gerne.

    welche dinge ich nicht verstehe sind...

    Also, VC6 unterstützt den ISO-C++-Standard von 1998 nicht! Du wirst sowohl mit der VC6-Literatur als auch mit dem VC6-Compiler heute nicht sehr weit kommen, da du "falsches" C++ lernen und programmieren wirst.

    Bisher dachte ich dass es sowas wie ein "Standard C++" gibt... ein C++, dass in allen OS laeuft... Ich wusste garnicht, dass es "mehrere" C++-Versionen gibt... koennte mir das jemand genauer erklaeren? Bzw. auch Unterschiede?

    Ich lese nur ungern Tutorials... was ist denn nun das "allerbeste" C++-Buch "ohne Uebersetzungsfehler"?

    also ich bin immernoch verwirrt und weiss nich recht wie ich anfangen soll - aber wenn ihr meint, dass die alten Buecher und Versiion von VC nicht geeignet sind, dann werdet ihr schon eure Gruende haben... deswegen istallier ich gleich mal die VC 2008 Express...



  • Na, ich bin mir sicher das man nicht unbedingt Monate oder Jahre Konsole machen muß. Erste Gehversuche sollten aber schon in der Konsole sein. Was macht #include? Was ist main? u.ä.

    Man kann dann sicherlich zu GUIs übergehen und die Std-Lib mit einbeziehen. Ich halte sogar GUIs ideal um OOP zu lernen. Da dort die Objekte nicht so abstrakt sind.

    ABER, das Problem ist, es gibt keine vernünftige Literatur die genau diesen Weg eingeht. Die meiste Literatur ist einfach nur schlecht, egal ob Konsole oder GUI. Und man muß dann halt die besten Bücher rauspicken, und die behandeln nunmal Konsole.

    ABER, nur weil ein Konsolenbuch 1000 Seiten hat, muß es ja nicht heißen, das man erst 1000 Seiten durchnehmen muß, bis einem erlaubt wird GUI zu machen.



  • @Blitz-Coder! Das ist eigentlich ganz einfach: es gibt einen ISO-C++-Standard, der 1998 definiert wurde. (das ist ja nur ein Stück Papier, wenn du so willst)
    Nun, diesen Standard müssen aber natürlich die Hersteller von C++-Compilern natürlich erstmal in Software giessen. Vor 1998 hat jeder C++ so "erdacht" wie er es für richtig hielt. Somit waren C++-Programme nicht auf jedem COmpiler kompilierbar. Erst 1998 gabs C++ als Norm. Und diese Norm setzt VC6 nicht um, weil VC6 selbst 1998 raus kam. Also muß man einen aktuelleren VC benutzen, z.B. den von 2003. Da konnte MS erst die 1998er Norm in seinen Compilern umsetzen. Aber natürlich kann man heute auch gleich den von 2008 benutzen.

    Du kannst ISO-C++-Programme erstmal theoretisch auf jeder Plattform kompilieren, die einen ISO-C++-fähigen Compiler hat. Für dich als Anfänger ist das aber alles irrelevant. Die Details, wann man "inkompatibel" wird, würde ich mich erst etwas später kümmern. Am Anfang wirst du C++ lernen, und zwar nach ISO-C++-Norm, und damit hast du schon viel gewonnen.

    Ein Buch habe ich ja schon empfohlen: www.oop-mit-cpp.de ist eine Homepage von einem Buch aus Papier. Kein Online-Tutorial! 😉 Muß nur gerade feststellen, das die Website gerade nicht geht. Deshalb:
    "C++-Einführung und professionelle Programmierung" mind. 9. Auflage aus dem HANSER Verlag.



  • Achja, den "C++ Primer" kann man trotzdem empfehlen. Er hat zwar ein paar Übersetzungs- bzw. Abtippfehler (von English auf Deutsch), aber insgesamt ist das Buch trotzdem eines von den besseren C++-Büchern.

    Also insgesamt zwei Bücher die ich pers. empfehlen kann.



  • Vielen Danke fuer deine Empfehlungen! 🙂

    Werde mir gleich eins bestellen von den beiden empfohlenen buecher bestellen. (welches weiss ich noch nicht genau - werde erstmal die beschreibungen beider durchlesen)

    Wuenscht mir glueck 😃



  • Edit: Ausversehen 2x gleiche Information geschrieben xD (Man sollte die eigenen Posts manchmal noch mal ansehen...)



  • hmm ich weiß ohnehin nicht so recht, wenn der herr vorhat nicht-betriebssystemprogramme zu schreiben, wäre c# oder java nicht zukunftsweisender hinsichtlich wartbarkeit und ähnlichem?



  • gasst schrieb:

    hmm ich weiß ohnehin nicht so recht, wenn der herr vorhat nicht-betriebssystemprogramme zu schreiben, wäre c# oder java nicht zukunftsweisender hinsichtlich wartbarkeit und ähnlichem?

    Ich weiß es auch nicht, aber wenn er C++ geschnallt hat, wird ihm Java und C# auch keine Probleme machen.



  • Habe mich jetzt fuer das Buch "C++ -Einführung und professionelle Programmierung" von Ulrich Breymann entschieden... In der Beschreiben steht auch, dass es Neurungen des kommenden C++-Standards beruecksichtigt, ich glaube ich habe die richtige Wahl getroffen 🙂

    Jetzt haette ich noch eine Frage zum Visual C++ 2008 Express Edition Compiler von M$. Stimmt es, dass man damit nur .NET Anwendungen schreiben kann oder kann man auch ganz normale Anwendungen schreiben, die auch NICHT unter .NET laufen - weil die .NET Umgebung ja mit VC++ 2008 Express ja mitinstalliert wird...

    Und dann noch was anderes... Also wenn ich das richtig verstanden habe, hatte jeder Compiler vor der Standardisierung von 1998 jeder seine "eigene" C++-Sprache - oder wie?

    @gasst
    Wie meinst du das mit den "nicht-betriebssystemprogrammen"? MEinst du plattformunabhaenigkeit? ISO C++ ist doch plattformunabhaengig oder? Oder meinst du eher Programme, die ohne Betriebsystem laufen!?
    Mein Entwicklungsbereich wird sich (vorerst) sowiiso auf Windoof beschraenken...



  • kann man auch ganz normale Anwendungen schreiben, die auch NICHT unter .NET laufen

    Man kann, wenn man als Projekt Win32Console oder Win32 auswählt.



  • @Blitz-Coder! Man kann natürlich mit dem MSVC weiterhin ganz normale C++-Programme entwickeln, die absolut nichts mit .NET zu tun haben.
    Du mußt beim Anlegen eines Projektes einfach kein CLR-Projekt anlegen. Für dich kommen aber erstmal nur Win32-Console Projekte in Frage (MFC, ATL u.a. C++-Typen sind zwar auch reines C++, aber seeehr speziell).

    Die .NET-Umgebung mußte nur installiert werden, weil natürlich MSVC auch .NET unterstützt und die MSVC natürlich auch zum debuggen von .NET-Anwendungen geeignet ist. Du mußt aber .NET (CLR) in deinen Projekten nicht nutzen.

    Lass dich von Leuten wie gasst nicht ablenken, die wollen einfach nur "ihre" Sprache verkaufen. Wenn Du nach C# gefragt hättest, wäre sein Einwand berechtigt. Aber du wolltest ja C++ lernen, und niemand hier hat dich ja dazu überredet.



  • Und dann noch was anderes... Also wenn ich das richtig verstanden habe, hatte jeder Compiler vor der Standardisierung von 1998 jeder seine "eigene" C++-Sprache - oder wie?

    So ist es. Aber auch nach 1998 war das leider noch lange so. Denn es hat ja etwas gedauert, bis endlich alle Compiler nachgezogen sind. Nur weil 1998 ein Papier rauskam, sind nicht 1999 alle Compiler standardkonform geworden. Das hat schon Jahre gedauert, bis die ersten Compiler das meiste vom Standard unterstützten. Bei den aktuellen bekannten Compilern (von MS, Intel, GCC und Code Gear) braucht man sich aber keine Sorgen machen.


Anmelden zum Antworten