Dev-C++



  • konzepte gleich am anfang... meiner meinung nach dort noch schwer zu verstehen.

    deine lernenden müssen wohl schon erfahrung in programmierung mitbringen.

    aber ich kenne das gesamtkonzept nicht. auch nicht das ziel. wohin die leute dann kommen sollen.
    kriegen sie einen abschluß? oder ist es einfach nur ein workshop?

    klar kann man gute programme bieten, und diese erklären.. ich setze den schwerpunkt in den ersten stunden aber eher auf "selber erfahrung sammeln" durch aufgaben, die aufeinander aufbauen und die gelöst werden sollen.

    in die "konzepte" wachsen sie nach und nach rein, und daß wahrscheinlich noch lange über den kleinen einmonatskurs hinaus



  • elise schrieb:

    kriegen sie einen abschluß?

    Welche offiziell anerkannten Abschlüsse kann man denn bei C++ erreichen?
    Die Abschlüsse der sgd sind z.B. auch nicht viel wert, wenn es solche comments gibt, hier ein Beispiel C++ unter Linux: http://www.dooyoo.de/dienstleistungen/dienstleistung_div/sgd_studiengemeinschaft_darmstadt/_review/627406/ (da sieht man die Probleme mit der Portabilität ganz deutlich)

    elise schrieb:

    ich setze den schwerpunkt in den ersten stunden aber eher auf "selber erfahrung sammeln" durch aufgaben, die aufeinander aufbauen und die gelöst werden sollen.

    Das ist ein guter Hinweis. Ich muss nur klar unterscheiden zwischen leichten Aufgaben, die man direkt im online-Unterricht gemeinsam lösen kann, oder Hausaufgaben, die nicht zu leicht, aber dennoch interessant sein müssen. Das ist das Schwierigste.



  • @Bitsy

    Hume - die Komprimierung Deiner Anmerkungen ist extrem hoch. Das wird Stunden dauern, bis ich die entzippt habe. Ich weiß, sie galten eher Erhard - einem armen Kursteilnehmer sollte man sie nicht vorsetzen, der springt aus dem Fenster.

    Deswegen schreibe ich keine Tutorials, gebe keine Kurse, habe meine FAQs eingestellt und deshalb verkneife ich mir mittlerweile auch die meisten Erklärungsversuche in diesem Forum. Will schließlich nicht für den Tod irgend eines Mitmenschen verantwortlich sein 🙂

    Meine kurzen Anmerkungen waren auch nicht als Erklärung gedacht. Ich denke nur, dass es manchmal sinnvoller ist ein Thema gar nicht zu behandeln (hier mutable) als zu durchwachsen.

    Das Programmbeispiel ist doch aber anschaulich und verständlich

    Ich halte das Programmbeispiel weder für anschaulich noch für verständlich. Für anschaulich und verständlich ist es meiner Meinung nach zu kurz und viel zu "künstlich". Dazu ist es auch noch furchtbar schlechter Stil.

    Meiner Meinung nach kann und sollte man den Sinn von mutable nicht losgelöst erklären. mutable macht nur Sinn, wenn man bereits ein gewisses Verständnis für const hat. Und zwar sowohl für die Unterschiede zwischen einem const-Objekt vs. eine Referenz (ein Pointer)-auf-const sowie für die zwischen einer "normalen" und einer const-deklarierten Methode.
    Davor ist mutable einfach nur bla.

    Gibt es dafür eine typische Anwendung, die praktisch überzeugend ist?

    Sicher. Und ich muss sagen, dass ich mein Caching-Beispiel nach wie vor überzeugend finde. Natürlich nur unter Berücksichtigung der oberen Vorbedingung.

    Die meisten C++-Tutorials und Bücher erklären die keywords nicht komplett, was ich nicht für richtig halte. Denn das ist sozusagen das Alphabet von C++. Wie seht ihr das?

    Ich halte Konzepte für deutlich wichtiger als Keywords. Lieber ein C++ Programmierer, der das register-Keyword nicht kennt, als einer, der nicht die Konsequenzen von öffentlichen Instanzvariablen verstanden hat.

    OOP ist einfach zu vermitteln, das hängt natürlich an der Klasse als Kernkonzept von OO-Sprachen wie C++.

    Einige (z.B. James Coplien: http://www.artima.com/weblogs/viewpost.jsp?thread=6771) behaupten ja, dass hier genau das Problem bei vielen OO-Einführungen liegt. Nicht die Klasse ist das Kernelement der oo sondern das Objekt. Heißt ja schließlich *objekt*-orientiert.
    Klar ist es für viele fein immer schön alles in statische Hierarchien einzuordnen. Nur die machen erstmal gar nichts. Vorallem wenn man nicht weiß, wo später die Objekte herkommen und wie diese miteinander interagieren.

    Aber mal unabhängig davon. Das OO einfach zu vermitteln ist, halte ich für eine grobe Fehleinschätzung. Man kann vielleicht in einem vier-Wochen Kurs die Grundgedanken von Klassen, Polymorphie und Vererbung lehren, aber das war's dann auch. Ein Verständnis für gutes objektorientiertes Design wird man mit Sicherheit aber nicht in dieser Zeit aufbauen können.

    Ganz klar, das sind die wichtigsten Strukturen von C++, so etwas kann man an solchen Beispielen recht gut erläutern:

    Damit erklärst du gerade mal die Funktionsweise des virtual-Keywords, und damit der späten Bindung, in C++. Verständnis für das eigentlich Konzept kann man damit imo aber nicht lernen.



  • Erhard, ich glaube du beherrscht C++ garnicht gut genug, um darüber Kurse zu halten.



  • Das lassen wir mal schön die Schüler entscheiden, die dürfen von 1-10 bewerten. 😉



  • @HumeSikkins: da Du mein "virtual"-Beispiel nicht völlig zertrampelst, scheint es o.k. zu sein.

    Ansonsten hast Du mit Deinen Aussagen absolut Recht. Das didaktische Gefühl für Einsteiger scheinst Du aber verloren zu haben. Eigentlich schade, denn Deine Homepage und Deine Antworten sind hervorragend und hilfreich, wenn auch nicht in direktem Sinne.

    http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=constcor#Answ

    kann man dem geneigten Leser zum Thema const-correctness nur empfehlen.



  • Das didaktische Gefühl für Einsteiger scheinst Du aber verloren zu haben

    Ich denke ich hatte bisher nie ein Gefühl für Didaktik. Mein Ziel ist es aber, in den nächsten Jahren das Level des Einsteigers zu verlassen um mich dann im Bereich Didaktik für Einsteiger verbessern zu können.

    Richtig ist aber, dass mir die Fähigkeit fehlt das Wichtige vom weniger Wichtigen zu unterscheiden.

    Hm, aber das ist natürlich überhaupt nicht Thema dieses Threads, also schnell zurück zu den inhaltlichen Sachen 😃



  • @HumeSikkins: Ich finde, dass gute Beispiele didaktisch wichtiger sind als Konzepte. Das Buch von Marc++us ist z.B. deshalb so lesenswert, weil er knappe Statements und viele Beispiele bringt, noch dazu gewürzt mit Humor. Ein Konzept habe ich in dem Buch bisher noch nicht gefunden, aber das macht überhaupt nichts. "mutable" findet man im Sachregister zumindest nicht. 😃

    Welche GUI würdest Du auf C++ aufsetzen (möglichst passend zum Dev-C++)? Man kann die Leute doch nicht mit weiß auf schwarz (oder umgekehrt) hängen lassen. 😉



  • Wenn Du die Leute nicht mit zusätzlichen GUI-Dingen zu stark belasten willst, und ausserdem noch betriebssystemunabhängig bleiben willst, pack Allegro drauf. Das mag zwar für Dich mit dem Einrichten erstmal ein wenig quälend sein, aber es ist dann sehr einfach zu handhaben - da in C gehalten. Es hat eine kleine GUI drin, die Du dann vielleicht mit ein paar vorgefertigten Funktionen in einer Extra-Datei noch ein wenig hübscher machen kannst. Mit Fenstertechnik etc. ist zwar nichts, aber Alarmboxen, ein Fileselector und ein paar Gadgets, sowie eine Menüleiste sind drin. Jedenfalls musst Du Dich selbst nicht zu intensiv damit beschäftigen, um es nachher rüberzubringen.
    Sample+Sourcen für alles sind mit dabei. Zum Lernen ideal finde ich - man hat später höchstens Probleme auf berühmtere Dinge umzusteigen weil man sich damit eigentlich wohl (und gut bestückt) fühlt. Mankos halt in Fenstertechnik und im 3D-Gfx-Hardwarebereich, aber da willst Du wohl nicht hin.
    http://www.sunsite.dk/allegro
    (Ausserdem kannst Du den Leuten dann mal kurz die Problematik aufzeigen, dass unter der z-Taste nicht unbedingt ein z sein muss, es ist sehr hardwarenah).



  • Erhard Henkes schrieb:

    Das lassen wir mal schön die Schüler entscheiden, die dürfen von 1-10 bewerten. 😉

    Die werden es ja wohl leider nicht bemerken, ob du ihnen Mist erzählst. 😞



  • @erhard

    dein beispiel zur polymorphie wäre mir viel zu akademisch.
    versuche mal, ein beispiel mit konkretem inhaltlichen nutzen zu formulieren.
    schau einfach, daß die lerndenden durch die beispiele selber auch die grundlegenden konzepte verstehen, nicht nur technisch, wie in deiner einfachanwendung, sondern inhaltlich.
    überlege dir dazu, wann du wirklich polymorphie im real life verwendest und formuliere daraus eine schönes einfaches beispiel. dann haben sie die chance, einen ersten einblick in diese "idee" von programmierung zu bekommen. ansonsten ist es geschenkt, techniks kann man nachlesen, zu konzepten muss man -wie auch immer- hingeführt werden.

    @hume

    du bist sicher ein guter lehrer. spätestens, wenn du vor der klasse, dem seminar oder sonstwas stehst, wirst du in den erklärmodus umschalten und dann am ersten abend alle deine überlegungen zur didaktik in die ecke werfen, und neu formulieren... und dann super werden. warum? weil du total genau bist, und klar im denken.
    didaktik ist nur eine struktur, ein system, nachdem du deine kurse strukturierst,.. klar, die struktur muss stimmen, wie in der programmierung, und manchmal, wenn du gut bist, kannst du ein wenig abweichen, umwege machen, um aber immer wieder zurückzufinden auf deinen pfad.
    sicher nie falsch, sich in sowas zu üben, braucht man überall, jeder vortrag muss so aufgebaut sein, jede projektvorstellung



  • @erhard

    ach ja, zur bunti klick welt:

    lass die api draußen, du wirst so auch schon genug zu tun haben.

    versuche lieber, anregende beispiele als aufgaben zu finden. halte dich an volkard, der ist immer gut für tolle ideen.



  • jo, lass den gui mist raus. du brauchst keine konkurenz für den java kurs sein.

    bei java ist es irgendwie anderes. da gibt es eigentlich in jedem einsteigerbuch kapitel über gui, threads etc.

    in den c++ einsteigerbüchern ist sowas aber fast nie vorhanden.



  • Das Buch von Marc++us ist z.B. deshalb so lesenswert, weil er knappe Statements und viele Beispiele bringt, noch dazu gewürzt mit Humor. Ein Konzept habe ich in dem Buch bisher noch nicht gefunden, aber das macht überhaupt nichts.

    Ich glaube wir belegen das Wort "Konzept" mit unterschiedliechen Bedeutungen. Ich bezog mich auf softwaretechnische Konzepte. Und davon zeigt Marcus in seinem Buch eine ganze Menge. Das MVC-Beispiel (Gras-Schaf-Wolf) finde ich z.B. ganz große klasse. Die Prinzipien werden klar, obwohl Marcus auf kompliziertes GUI-gehampel verzichtet. Eine solche hätte wahrscheinlich zwar mehr Mädels gebracht, dafür aber auch vom Wesentlichen abgelenkt.

    Ich würde deshalb ebenfalls auf GUI verzichten. Wenn würde ich eher die dafür aus Sicht des Softwareentwicklers wichtigsten Konzepte behandeln. Nachrichten-Schleifen, Publisher-/Subscriber-Techniken, programming by difference (->Polymorphie) usw.
    Ansonsten musst du gleich auch noch was über Benutzerschnittstellen-Design machen oder du wirst die Verantwortung dafür tragen müssen, dass wieder unzählige Benutzer mit furchtbaren Oberflächen gequält werden 🙂

    Vorallem würde ich aber ein ausführliches Kapitel über Templates (statische Polymorphie, Traits, Policies) und die STL (doppelt wichtig!) einbauen.
    Das man die Standardbibliothek kennen und nutzen können muss, sollte klar sein.
    Und die Vermischung verschiedener Paradigmen ist eine besondere Stärke von C++. Wenn man C++ einfach nur auf eine oo-Sprache reduziert, hat man zwar immer noch ein besseres Java (:)), aber man verliert eine Menge Möglichkeiten.



  • HumeSikkins schrieb:

    Das MVC-Beispiel (Gras-Schaf-Wolf) finde ich z.B. ganz große klasse. Die Prinzipien werden klar, obwohl Marcus auf kompliziertes GUI-gehampel verzichtet. Eine solche hätte wahrscheinlich zwar mehr Mädels gebracht, dafür aber auch vom Wesentlichen abgelenkt.

    hallo?? hume, duck dich 😉



  • Vorallem würde ich aber ein ausführliches Kapitel über Templates (statische Polymorphie, Traits, Policies)

    lol, darüber hat er doch garkeine kenntnisse



  • @registrierte User: Vielen Dank für die ausführlichen Erläuterungen und Hinweise. 🙂



  • :p :p



  • Don't feed the trolls. 😉



  • Vieleicht ist die frage auch völlig fejl am platze...
    aber wisst ihr was die meldung

    mp.o bedeutet, oder linkin not done, bacause no linker input (file)

    gibts irgendwo si ein 1*1 der fehlermedlungen für dev c++ ???

    ich will für eine hal life mod (kent ihr vbieleicht)
    den code compilen, ber ich kriege 2 meldungen, wenn ich den !! unveränderten !!
    code compile

    snake


Anmelden zum Antworten