C++ für C-Programmierer



  • Was haltet ihr von diesem Wikibook:
    http://de.wikibooks.org/wiki/C%2B%2B
    ?


  • Mod

    Zyniker schrieb:

    Was haltet ihr von diesem Wikibook:
    http://de.wikibooks.org/wiki/C%2B%2B
    ?

    Ziemlich unvollständig und ziemlich genau das, was du gesagt hast, was du nicht suchst. Allgemein kannst du alles vergessen, was von Laien geschrieben wurde.



  • Dann hast du bestimmt einen besseren Link?



  • probiers mit dem hier:
    http://www.cpp-tutor.de/cpp/hinweise.html

    hab auch jahrelang mit C programmiert und dieses Tut war mein Einstieg in die C++ Welt.

    Danach hab ich mir noch diese 2 Bücher gegönnt:
    + Die C++-Programmiersprache (Bjarne Stroustrup)
    + Effektiv C++ programmieren (Scott Meyers)


  • Mod

    Zyniker schrieb:

    Dann hast du bestimmt einen besseren Link?

    Ich habe doch schon Thinking in C++ genannt. Aber du hast anscheinend weder gegoogelt noch in die Bücherliste des Forums geschaut um zu sehen, dass das ein Gratisbuch ist. Wobei das sowieso etwas billig von dir ist, dass es unbedingt nichts kosten darf 🙄 . 40 Euro für eine Sprache fürs Leben sind nun wirklich nicht viel.



  • Danke.

    Ich werde zusätzlich noch dieses "Volkard"-Tutorial durcharbeiten.



  • Zyniker schrieb:

    Leider sind die meisten Tutorials für komplette Anfänger konzipiert,

    Sie sind auch mest von Anfängern konzipiert.

    Zyniker schrieb:

    Ich brächte eine Auflistung, was die Unterschiede zwischen C und C++ sind.

    Eine Auflistung wird es wahrschienlich nicht tun. Du musst auch wissen, wie man die neuen Sprachmittel effektiv einsetzt. Das erschließt sich einem nicht sofort von selbst. Das muss man dazu lernen.

    Zyniker schrieb:

    Hat jemand ein Tutorial, das speziell für C-Entwickler konzipiert ist?

    Sowas kenne ich leider nicht. Ich habe als "Umsteiger" mit Stroustrups Buch angefangen. Und das fand ich eigentlich okay vom Tempo her. Mit einfachen Programmier-Basics hält er sich nicht auf. Ist eher an Leute gerichtet, die schon programmiert haben. Und sonst machte "Accelrated C++" einen guten Eindruck beim Durchstöbern auf mich. Kompakte Einführung. Fängt zwar von 0 an, geht aber recht zügig weiter. Was ich auch noch empfehlen kann ist "Effective C++" von Scott Meyers. siehe http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list



  • Hey ho,

    ich bin gerade dabei von C auf C++ umzusteigen! 🕶

    Kennst du dieses \1: http://www.rrzn.uni-hannover.de/buecher.html?no_cache=1&tx_rrznbuecher_pi1[showUid]=69
    Das kannst du sicher auch an einer Uni in deiner Nähe erwerben, kosten so ca 5€.

    Erstmal zu mir und warum ich total begeistert von dem Script bin:
    Ich habe im Rahmen meines Mathematik Studiums in einem zweiwöchigen Ferienseminar C lernen müssen und später viele Anwendungsaufgabe in der Uni abgeben müssen.
    Somit habe ich mich in C schon richtig gut zurecht gefunden, Pointer, Structs, dynamische Speicher, Präprozessoren, usw ... (würde mich als weit fortgeschritten einstufen 😉 )
    Ich muss nur noch meine Arbeit abgeben und bin dann fertig, 🕶 aber dafür muss ich einen Teil implementieren. Ich habe ein bereits funktionsfähiges C Programm, aber das muss noch etwas mehr leisten. Nun stehe ich vor dem Wahl: einen C-Code mit undurchsichtigen Structs erstellen, indem ich mich sicher verlaufe 😉 oder auf die superintelligente Klassenfunktion von C++ zurückgreifen.

    Das Script erklärt mir nun von Anfang an die Unterschiede zu C und warum das in C++ plötzlich so aussieht wie es aussieht. Das ist super!! So einfach lässt sich C++ erklären, wenn man auf bereits vorhandenes Wissen zurückgreifen kann.
    Ständig sitzt ich vor dem Script und staune "wahnsinn, wie klug das in C++ jetzt ist" oder "stimmt, genau das fand ich in C immer lästig" oder "woooow, diese Werkzeuge sind so mächtig" 😮

    hehe, das macht Spaß! 😃

    PS: Das Thema hat die Halbwertszeit noch nicht überschritten und ich bin halt gerade genau in der Situation hier noch was mitzureden 😉



  • in einem zweiwöchigen Ferienseminar C lernen müssen

    Das Zeitintervall ist lachhaft klein.

    würde mich als weit fortgeschritten einstufen

    Ich würde dich als absoluten Anfänger einstufen, schon von der Art wie du daher redest.

    hehe, das macht Spaß!

    Man lernt C++ nicht in ein paar Wochen, in denen man zuerst ein kleines Ferienseminar besucht und anschließend ein Skript durcharbeitet. Da muss ich dich enttäuschen. Das wird sehr viel mehr Zeit und zumindest ein gutes Grundlagenbuch beanspruchen, was du dir offenbar nicht gönnen wolltest.

    Edit: Mein Gott! Die nutzen ja noch GCC 2.6.3! Der wurde November 1994 veröffentlicht!

    Und die "Expertenmeinung" besteht aus denen von Professoren.



  • @Sone:
    schön, wenns für dich so lachhaft daherkommt. So ein Ferienseminar war der Einstieg, täglich 2h Vorlesung + 5h Übung, jede Menge Aufgaben. Mehr Zeit geben sie uns eben nicht, das Hauptfach ist eben wichtiger ... 😃
    Und jetzt kommst! Ich habe nicht gestern angefangen zu studieren und zu programmieren. In der Zeit habe ich eine Menge von Algorithmen implementieren müssen. Natürlich mathematischer Natur. 🕶 Und weißt du was? Meine C Codes sind sauer, übersichtlich und funktionsorientiert. Warum? Weil ich inzwischen routiniert bin und alles anwenden und nutzen kann, was ich brauche. Was brauche ich? Gute Implementationen meines Forschungsthemas, mehr nicht. Meine Resultate sind wichtig, nicht mein Code.

    Warum ich das so frei schnauze geschrieben habe: um zu erklären warum ich das Script toll finde. Dafür werde ich jetzt also von einem pimp dumm angemacht 🕶

    Und die "Expertenmeinung" besteht aus denen von Professoren.

    Ich mag lieber kluge, analytisch denkende Menschen um mich haben. Dein Kommentar hat dich absolut disqualifiziert 🕶

    zumindest ein gutes Grundlagenbuch beanspruchen

    Viellicht magst du dich dazu noch genauer erklären. Dann hättest du wenigstens noch was Produktives von dir gegeben.



  • Meine C Codes sind sauer, übersichtlich und funktionsorientiert.

    Von sich selbst halten kann jeder viel. Den Fehler musste ich selbst machen.

    um zu erklären warum ich das Script toll finde.

    Deine Meinung ist völlig unwichtig. Du bist bei weitem nicht kompetent genug, als dass du ein Skript derart hochstufen kannst.

    Ich mag lieber kluge, analytisch denkende Menschen um mich haben.

    Dann bist du hier willkommen. Professoren können vielleicht schön reden, aber das heißt nichts.

    Viellicht magst du dich dazu noch genauer erklären.

    Ich habe nicht vor, dir irgendetwas zu erklären.

    Ich bin von den ins Netz gestellten Ergänzungen enttäuscht.



  • Bravo, deine herablassende Art ist weniger schlimm (man beachte die Relation)! 🕶

    Deine Meinung ist völlig unwichtig.

    Fine Fine.
    Meinung ist unerwünscht. Check. 🕶

    Ich habe nicht vor, dir irgendetwas zu erklären.

    Ich werde auch nicht drum betteln.
    Aber vielleicht magst du der interessiert mitlesenden Gemeinde mitteilen, womit man am besten von C nach C++ umsteigt, dann hätte unser Disput auch noch was für die Nachwelt hinterlassen. 🕶



  • Es gibt bekanntlich einen Unterschied zwischen subtiler und expliziter Herablassung.

    womit man am besten von C nach C++ umsteigt

    Wie man auch am Besten C++ beginnt.
    Man liest ein Grundlagenbuch, dass alle Grundlagen ausführlich behandelt.

    Das ist aber schon praktisch selbstredend und wurde schon in diesem Thread angesprochen.



  • Lymogry schrieb:

    Kennst du dieses \1: http://www.rrzn.uni-hannover.de/buecher.html?no_cache=1&tx_rrznbuecher_pi1[showUid]=69

    Ganz am Ende drei Seten STL, wobei das Meiste über string ist. In der Beschreibung wird vom vorläufigen ANSI Standard geredet. Das scheint doch ein wenig angestaubt zu sein.



  • manni66 schrieb:

    Lymogry schrieb:

    Kennst du dieses \1: http://www.rrzn.uni-hannover.de/buecher.html?no_cache=1&tx_rrznbuecher_pi1[showUid]=69

    Ganz am Ende drei Seten STL, wobei das Meiste über string ist. In der Beschreibung wird vom vorläufigen ANSI Standard geredet. Das scheint doch ein wenig angestaubt zu sein.

    Nicht nur das, es redet sehr merkwürdig:

    Viele Fehler in der Syntax, wie zum Beispiel das Vergessen eines Kommas als Abschlussmarkierung einer Zeile

    ?

    Ein Kompilierungsfehler wird angezeigt, wenn eine Prozedur nicht aufgerufen werden kann.

    Ebenfalls irritierend.

    In C++ können diese Fehler [hier: Laufzeitfhler] mit Hilfe von Exceptions abgefangen werden.

    Pauschal falsch. Nicht jeder Laufzeitfehler kann durch eine Exception abgefangen werden.

    Anschließend rät das Buch, eine Enumeration zu definieren, und die Enumeratoren zu werfen. Nicht nur, dass die Möglichkeit, einen Enumerator zu werfen, ein Designfehler von C++ ist... ich hätte nicht erwartet, dass das jemals verwendet werden würde.

    Hier ein richtiges Beispiel zur Verwendung von bad_alloc von mir:

    Fenster *objPtr = 0;
    try {
        objPtr = new Fenster(0,200);
    }
    catch(int fehler){
        cout << "Das Fenster ist zu klein gewählt.";
        delete(objPtr);
    }
    catch(bad_alloc &ex){
        cout << ex.what() << endl;
    }
    delete(objPtr);
    objPtr = 0;
    

    Ihr habt richtig erkannt, dass es nicht von mir ist. Dabei wird auto_ptr ja auch noch angesprochen... 👎



  • Jetzt kommt mal alle wieder runter. Das Skript ist heute nicht mehr zu gebrauchen, klar, aber das kann man seinem Autor wirklich nicht vorwerfen -- es muss so aus der Zeit um 1994/1995 stammen. Zu dieser Zeit war es stumpf noch nicht möglich, das zu schreiben, was wir heute unter sauberem C++ verstehen, weil die Compiler es einem mit ICEs um die Ohren gehauen hätten. Selbst Dinge, die wir heute (wenn wir nur ein bisschen Ahnung haben) für grundsätzlich nehmen -- RAII zum Beispiel -- waren zu der Zeit bleeding edge und mussten sich erst beweisen. Die Standardbibliothek war keine Standardbibliothek, weil es keinen Standard gab, und die Macht von Templates war nicht ansatzweise erforscht (oder erforschbar -- ICEs ohne Ende hat es bei den ersten Versuchen gehagelt). Bis zu dem, was heute C++-Grundlagen sind, so weit hatte damals noch niemand gedacht, und Dinge wie Boost.MPL hätten sich damals allenfalls Wahnsinnige vorstellen können.

    Das Compilerchaos, das Mitte der Neunziger geherrscht hat, ist heute schwer vorstellbar und nicht vergleichbar mit den milden Turbulenzen, die die Umstellung auf C++11 mit sich bringt. Portabilität war mehr oder weniger Glückssache. RTTI vermied man nicht, weil es objektorientierte Grundsätze verletzt, sondern weil wenige Compiler es beherrschten. Exceptions als Mittel zur Fehlerbehandlung waren mit großer Vorsicht zu genießen -- über den Problemkomplex Exceptionsicherheit war man schon gestolpert, aber die Lösung war alles andere als allgegenwärtig, und Compilersupport war auch hier zunächst mäßig. Es ist kein Zufall, dass in den wxWidgets-Coding-Guidelines steht, dass Exceptions vermieden werden sollen. MSVC 6 war mal ein richtig guter C++-Compiler!

    Von einem Skript aus dieser Zeit zu erwarten, dass es modernes C++ lehrt, ist abwegig, von C++11 ganz zu schweigen. Ich weiß nicht einmal, ob zu der Zeit, als es geschrieben wurde, Design Patterns schon erschienen war -- ggf. musste die Druckerschwärze wohl noch trocknen. Lernen und lehren will man damit heute sicher nicht mehr, aber darauf herumzuhacken ist aus meiner Sicht nicht zielführend. Man kann stattdessen ganz ruhig erklären, warum es in eine Vitrine statt in den Lehrsaal gehört.



  • Das ist eben der Sonestil, bei jedem zweiten Posting ins Fettnäpfchen treten. Wie kann man bei soviel Inkompetenz so auf die Kacke hauen?



  • Sone schrieb:

    Hier ein richtiges Beispiel zur Verwendung von bad_alloc von mir:

    Fenster *objPtr = 0;
    try {
        objPtr = new Fenster(0,200);
    }
    catch(int fehler){
        cout << "Das Fenster ist zu klein gewählt.";
        delete(objPtr);
    }
    catch(bad_alloc &ex){
        cout << ex.what() << endl;
    }
    delete(objPtr);
    objPtr = 0;
    

    Ihr habt richtig erkannt, dass es nicht von mir ist. Dabei wird auto_ptr ja auch noch angesprochen... 👎

    Wozu wird der Zeiger danach auf 0 gesetzt?
    Dicher, daß man den Speicher deleten muss, wenn der Konstruktor per Exceptien ausstieg?



  • Dicher, daß man den Speicher deleten muss, wenn der Konstruktor per Exceptien ausstieg?

    Muss/darf man nicht, allerdings "schadet" es hier nicht, da der Pointer eh noch immer 0 ist.



  • Ich bin ja nicht beratungsresitent, 🕶 also bin ich heute morgen in die Bibliothek und hab mir Stroustrups "C++ Programming Language" geholt und finde es ganz großartig.
    Ich kann dadrin die ersten Kapitel schön querlesen und verstehe die Hinweise und Ratschläge, die es mir gibt. Allerdings ist das Buch ein harter Brocken und ohne Einsteigerlektüre gar nicht nachvollziehbar. Ich programmiere nun schon seit 5 Jahre mit C und liebäugelte schon länger, auf eine objektorientierte Sprache umzusteigen, weil ich langsam an die Grenzen von C komme, wo es nicht mehr schön wird.
    Natürlich hab ich hier und da schon in ein C++ Buch reingeschaut. Mein Problem war immer, dass die erstmal Kapitelweise auf Schleifen und Abfragen eingehen, auf basalste Programmierung, was ich ja nun wirklich nicht brauche. Den dicken Brocken dann durchzuarbeiten, um doch keine relevanten Informationen zu verpassen, das fand ich ermüdend und langweilig ....

    Das erwähnte Script hat 130 Seiten und erleichtert einem den Umstieg.
    Es hegt an sich weder den Anspruch der Vollständigkeit, noch will es aktuell sein. Es ist zum Verständnis da!! Für den Anfang ist das SUPER!
    Damit hab ich die abstrakten Konstruktionen bekommen, ich habe sie verstanden! Das ist mir viel viel wert, damit ich kann - soviel ich will - mich weiter einarbeiten.
    Stroustrup sagt passend dazu "Das Verständnis von Programmier- und Designtechniken ist weit wichtiger als die Aneignung von Detailkenntnissen. Die erwirbt man sich im Laufe der Zeit durch Praxis". Ganz meiner Meinung!

    PS (wenn es der Freundlichkeit dient) 😃 : Ich bin weiblich, Mathematikerin und Tänzerin! 😃


Anmelden zum Antworten