Ich brauche eine Bewertung zu einem Buch!



  • Chew-Z schrieb:

    Mir geht es weniger um spezielle Angewohnheiten, wie beispielsweise das immer
    noch, bei manchen C++ Programmierern, beliebte sprintf(). 😃

    In der Praxis nimmt man oft das, was am schnellsten geht. Die C-Library ist ja ausdruecklich Bestandteil des C++ Standards. Zeig uns doch mal eine formatierte Ausgabe in einer Programmzeile mit C++ I/O Manipulatoren, als Ersatz fuer folgendes:

    sprintf( buf, "%-020.20d%-*.*s%-20.5f", i, n, n, s, f );
    

    Man bedenke auch, dass die C++ I/O Library lange nicht genormt war, und dadurch weder portabel noch aufwaertskompatibel. Erst wenn sich alle C++ Compiler Hersteller an den neuen Standard halten, kann man solche Schnittstellen benutzen, ohne ein komplettes Rewrite oder zumindest eine Portierung zu riskieren. (EDIT: was heute der Fall ist, aber vor einigen Jahren noch nicht der Fall war.)

    Chew-Z schrieb:

    Mir geht es um den Denkansatz. Dabei unterscheiden sich C und C++ (OOP) nunmal
    deutlich. Ich hab schon viele langjährige und wirklich gute C-Programmierer
    gesehen die mit all ihrerer Erfahrung kein vernünftiges OOP Design hinkriegen,
    weil in ihnen der gute alte Wirth ("Algorithmen und Datenstrukturen") fest
    verwurzelt ist.
    Daher finde ich das Umlernen beim Umstieg von C nach C++ nicht nur überflüssig,
    sondern häufig genug auch schädlich.

    Mag ja sein, dass manche Programmierer lange brauchen, bis sie C++ gelernt haben, aber das habe ich ja bereits oben gesagt. Nach 5-6 Jahren spielt es keine Rolle mehr, ob man vorher C oder Pascal oder sonstwas gelernt hat.

    Das mit dem "OOP Design" finde ich laecherlich, da in der Praxis meist eh kein "Design" gemacht wird, aus "Zeitgruenden".

    Das ist wie mit dem guten alten Pflichtenheft: Gut wenn's eins gibt, aber in der Regel gibt's oft keins.

    Vermurkste OOP-Designs sind oft schlimmer als "zuwenig OO" im Programm.

    Es gibt naemlich nicht viele Leute, die gleichzeitig ein gutes OO Design und eine gute Implementation auf die Beine stellen koennen.

    Oft ist die Lesbarkeit und Wartbarkeit von Code wichtiger.

    Code mit Hundertaussenden von Klassen ist u.U. nicht mehr wartbar. Solcher Code wird von der naechsten Entwicklergruppe oft weggeschmissen, vor allem, wenn kein Handbuch dafuer da ist, in dem alles bis ins letzte Detail erklaert ist.



  • enno-tyrant schrieb:

    wo ist den dass noch _ein_ programm? windows ist ein os und besteht aus 27 mio zeilen, wer soll den bitteschön ALS ANFÄNGER einen 10 mio zeilen-prog schreiben?

    Wenn man eine Entwicklergruppe von zig oder einigen hundert Leuten hat, kommt so was schnell zusammen. Wenn alle davon Anfaenger sind ...

    (Illustration: Hundert ambitionierte C++ Anfaenger schreiben zwei Jahre lang je 1000 Zeilen Code pro Tag = 100 x 200 x 2 x 1000 = 40 Mio. Zeilen)



  • Power Off schrieb:

    Es dauert mindestens 5-6 Jahre, bis man C++ einigermassen kann, auch nur ein bisschen soweit, dass man halbwegs brauchbare Programme schreiben kann.

    DUMMSCHWÄTZER!!!

    das musste gesagt werden!!!

    mfg hohesC 😉



  • Power Off schrieb:

    Jester und Walli schrieb:

    Brauchbare Programme kann man auch nach einem halben Jahr schon schreiben.

    Ich wuensche euch beiden, dass ihr 10 Millionen Programmzeilen Anfaengercode warten und pflegen muesst.

    Ebenfalls dummes Geschwätz! Außerdem noch völlig am Thema vorbei... 🙄



  • Power Off schrieb:

    enno-tyrant schrieb:

    wo ist den dass noch _ein_ programm? windows ist ein os und besteht aus 27 mio zeilen, wer soll den bitteschön ALS ANFÄNGER einen 10 mio zeilen-prog schreiben?

    Wenn man eine Entwicklergruppe von zig oder einigen hundert Leuten hat, kommt so was schnell zusammen. Wenn alle davon Anfaenger sind ...

    ... dann sollte man denjenigen feuern, der die alle eingestellt hat. Wie realistisch ist dieses Scenario bitte? Natürlich gibt es in jeder Softwarefirma Berufseinsteiger, aber die lässt man nicht selbständig auf solche Mammutprojekte los!



  • Aber übelst, so ne Sch**** hab ich noch nie gehört!
    Naja, halt ein DAP([D]ümmster [A]nzunehmender [P]rogrammierer)!



  • Walli schrieb:

    ... dann sollte man denjenigen feuern, der die alle eingestellt hat. Wie realistisch ist dieses Scenario bitte? Natürlich gibt es in jeder Softwarefirma Berufseinsteiger, aber die lässt man nicht selbständig auf solche Mammutprojekte los!

    Sehr realistisch -- warum bin ich in jeder Firma der erfahrenste Programmierer?

    Ich war mal in einer Fa., die mit ueber 50 Programmieranfaengern in Java Riesenprojekte abgewickelt hat. 150 MB Source (gepackt!!) fuer ein Projekt ... und, na ja, den Chef kann man ja nicht feuern ... 😉

    Die Fa. ging dann irgendwann Pleite, aber trotzdem!! Kein Einzelfall.

    Ich will keine Namen nennen, aber ich habe schon Source groesserer Firmen gesehen und bearbeiten muessen. Alles Anfaengercode, von vorne bis hinten, mit dem uebelsten Programmierstil und Bugs, dass einem Hoeren und Sehen vergeht.

    Seitdem weiss ich, wie Windows von innen aussehen muss, und verstehe Steve Ballmer's Gejammer, dass er keine gescheiten Programmierer findet ...

    Das Argument, uebrigens, mit denen man absolute Anfaenger an Riesenprojekte mit Grosskunden dransetzt, ist immer: "Jaaaaa, die muessen ja auch mal irgendwo anfangen!"

    Deshalb, liebe Informatikstudenten: Nicht schlafen im Informatikunterricht, das koennte sich irgendwann boese raechen! 😃

    Aber ihr habt recht, eigentlich ist das alles von mir ja bloss bloedes Gelaber, und hoechst offtopic! 😃 😉

    (EDIT: natuerlich haette das o.g. Projekt nicht so gross sein muessen, man haette das auch locker in 1/100 des Codes hingekriegt, aber das waren halt Anfaenger, die wussten es nicht besser ... 😮 Scheissegal, ob's einen Sinn ergibt, Hauptsache es ist objektorientiert! 👍 👍 👍 )



  • Power Off schrieb:

    Sehr realistisch -- warum bin ich in jeder Firma der erfahrenste Programmierer?

    Könnte es vielleicht an Deinem stark ausgeprägten Ego liegen?



  • Power Off schrieb:

    Sehr realistisch ...

    Das kann ich mir beim besten Willen nicht vorstellen.

    Wenn das Unternehmen in dem ich arbeite diese Einstellung hätte (also Programmieranfänger einzustellen), dann wäre weder das Versicherungsunternehmen für das wir arbeiten, gescheige denn unser eigenes Unternehmen noch existent. Und das mit Sicherheit!



  • Hallo,

    bin selbst Anfänger in C++

    ich habe mir ein Buch gekauft: C++ in 21 Tagen von Jessy Liberty

    ich finde dass da eigentl. alles ganz gut erklärt wird und wenn man wirklich konsequent dahinter hängt versteht man alles --> nur die Zeiger sin kompliziert, aber die sind soundso kompliziert

    mfg hirs

    PS: Das soll keine Werbung sein, nur seitdem ich das buch habe schreibe ich nur noch 1en oder 2en bei den Informatik Tests



  • hirs_cpp schrieb:

    PS: Das soll keine Werbung sein, nur seitdem ich das buch habe schreibe ich nur noch 1en oder 2en bei den Informatik Tests

    ... und mit den Frauen klappt es auch besser seitdem. SCNR: Hörte sich irgendwie nach TV-Shopping an 😃 .



  • Power Off schrieb:

    Die Fa. ging dann irgendwann Pleite, aber trotzdem!! Kein Einzelfall.

    Jo, leider. vorallem wenn der chef den ganzen mist verbockt hat. da kann man sich nichtmal richtig darüber beschweren...

    aber mir ist das mit PHP basiert... kann es also sein, dass das Problem anfänger und nicht komplexe sprachen sind.

    und da sehe ich C++ nicht wesentlich schwieriger als Java oder PHP. Denn man kann ohne Probleme mit C++ arbeiten ohne Streams und Templates verstanden zu haben - anwenden kann man das ja recht schnell.

    IMHO ist C++ hier aber dank der komplexität nicht so anfällig wie Java oder PHP. Denn Java oder PHP 'kann jeder in 24 stunden lernen' 😞 und ist nachher der absolute profi...

    bei C++ geht das zum glück noch nicht, da braucht man 21 Tage 😞

    (EDIT: natuerlich haette das o.g. Projekt nicht so gross sein muessen, man haette das auch locker in 1/100 des Codes hingekriegt, aber das waren halt Anfaenger, die wussten es nicht besser ... 😮 Scheissegal, ob's einen Sinn ergibt, Hauptsache es ist objektorientiert! 👍 👍 👍 )

    exzessive Coderedundanz mit OOP habe ich noch nie gesehen, aber wenn man 3 funktionen (je 300 zeilen) hat die sich jeweils durch die ersten 5 zeilen und die letzten 5 zeilen unterscheiden, dann versteht man was du meinst...



  • Ich schreibe auch schon seit einiger Zeit in C++ und finde, dass man auf keinen fall erst C lernen sollte.
    Ich hab zuvor schon mit Basic und WDL gearbeitet und selbst da kam mir schon oo zuerst befremdlich vor. 🙄
    Fang auf jeden fall mit C++ an! ⚠

    Zu denn 5-6 Jahren: Ich würde sagen höchstens 2 bis man es halbwegs drauf hat. 😉

    MfG RoaN;



  • Ach ja, guckt mal umbedingt in meinen DX + !VC++ Post im 3D-Spieleforum rein! 😃

    MfG RoaN;



  • Bei Amazon habe ich einige Rezensionen angeschaut und auch ein Buch gekauft, das speziell für Anfänger ist. Ich bin nicht schlecht gefahren:

    D. May: Grundlagen der Software-Entwicklung, Vieweg verlag

    Gruss Jerry



  • Ach Leute kommt, es ist doch allen klar das C++ die defenetiv komplexere und damit schwerere Programmiersprache ist und nur weil im C++ Codex C implementiert ist heißt es noch lange nicht das jeder C Code automatisch C++ ist. Also sollte man defenetiv mit einer einfachen Programmiersprache anfangen. Wo man das Konzept und was viel wichtiger ist den Sinn des Konzepts sehr schnell versteht, wesentlich besser.



  • Shade Of Mine schrieb:

    exzessive Coderedundanz mit OOP habe ich noch nie gesehen

    OOP ist weder ein Garant für noch gegen Coderedundanz. Das übereifrig angewendete OOP aber schnell mal zu einer Codeexplosion führt, sollte wohl jeder schon mal erlebt haben.
    Gerade am Anfang neigt man ja gerne mal dazu überkomplizierte Lösungen (und damit unnötig viel Code) zu produzieren (oder geht das nur mir so?).
    Natürlich alles im Namen der Flexibilität und Wiederverwendbarkeit und auf der Suche nach der "Software-Familie" hinter dem Problem.

    Beispiel?[1]

    Version A: Ich

    #include <iostream>
    #include <ostream>
    int main()
    {
        std::cout << "Hello World!" << std::endl;
    }
    

    Version B: Anfänger nach der Lektüre des Gof-Buchs:

    #include <memory>
    #include <stdexcept>
    
    // Todo: Factory-Komponente für das Erzeugen von Applikations-Objekten 
    // bereitstellen. 
    class Application
    {
    public:    
        static Application* instance()
        {
            if (!instance_s.get())
                throw std::runtime_error("you must register an App-Instance first!");
            return instance_s.get();
        }
        static void registerApp(Application* a)
        {
            instance_s.reset(a);
        }
        virtual ~Application() {}
        int run()
        {
            init();
            while (!done())
            {
                idle();
            }
            return cleanup();
        }
    protected:
        Application() : isDone_(false) {}
        bool done() const {return isDone_;}
        void setDone() {isDone_ = true; }
    private:
        Application(const Application&);             
        Application& operator=(const Application&); 
        virtual void init() = 0;
        virtual void idle() = 0;
        virtual int cleanup() = 0;  
        bool isDone_;
        static std::auto_ptr<Application> instance_s;
    };
    
    std::auto_ptr<Application> Application::instance_s;
    
    #include <iostream>
    #include <ostream>
    class HelloWorld : public Application
    {
    public:
         HelloWorld(std::ostream& os) : Application(), os_(os) {}
    private:
        void init() {}
        void idle() 
        {
             os_ << "Hello World!" << std::endl;
             setDone();
        }
        int cleanup() {return 0;}
        std::ostream& os_;
    };
    
    using namespace std;
    int main()
    {
        Application::registerApp(new HelloWorld(cout));
        return Application::instance()->run();
    }
    

    [1]Ähnlichkeiten zum "Pattern Abuse"-Beispiel aus "Agile Software Development" von Robert C. Martin sind nicht zufällig.



  • HumeSikkins schrieb:

    // Todo: Factory-Komponente für das Erzeugen von Applikations-Objekten 
    // bereitstellen.
    

    Spitzen Beitrag! 😃 👍



  • @Hume: das ist ja total unflexibel!
    Zumindest den Zeichentyp solltest Du noch als template parametrisieren. Außerdem wäre es vielleicht besser den String der ausgegeben werden soll aus einer Datei zu lesen. 😃



  • Ich hab jetzt das Buch und bin eigentlich ganz zufrieden!

    Es ist jedenfalls an absolute Anfänger gerichtet.

    Danke für eure Hilfe


Anmelden zum Antworten