cpp:introduction

Diskussionen zu Tutorials, Änderungs- und Erweiterungswünsche
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

cpp:introduction

Beitrag von Xin » Di Feb 24, 2009 9:51 am

http://tutorial.proggen.org/doku.php?id ... troduction

Hallo, fat-lobyte.

Zunächst mal *thumbs up*, dass wir dank Dir nun langsam die ersten Schritte zu C++ machen.

Zwei Dinge hätte ich anzumerken, bzw. irgendwie in eine Todo zu packen:
- Wir haben bisher immer eine Start und eine "why" seite: Warum sollte man diese Sprache lernen wollen?
- Ansonsten würde ich sagen, sollten sich die C++-Mächtigen vielleicht mal zusammensetzen und eine Art "Lehrplan" für die CPP:Start bauen, den wir dann Stück für Stück füllen können!?
Sollte man für sowas mal eine Skype/IRC/Gobby-Sitzung arrangieren?
Ich habe das ein wenig für das C-Tutorial gesteuert und fand das recht aufwendig - daher glaube ich, es wäre ganz gut, wenn wir mehr als nur eine Meinung diskutieren, um das Tutorial aufeinander aufbauend zu realisieren.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: cpp:introduction

Beitrag von fat-lobyte » Di Feb 24, 2009 12:00 pm

Xin hat geschrieben:Zunächst mal *thumbs up*, dass wir dank Dir nun langsam die ersten Schritte zu C++ machen.
Es wurde schon Zeit, nachdem die C Fraktion hier langsam überhand gewinnt und nicht wenige Fragen mit "verwende doch lieber C++" zu beantworten sind.
Xin hat geschrieben:Zwei Dinge hätte ich anzumerken, bzw. irgendwie in eine Todo zu packen:
- Wir haben bisher immer eine Start und eine "why" seite: Warum sollte man diese Sprache lernen wollen?
Der Grund wieso ich das so "still und heimlich" gemacht habe war, dass ich erstmal ein bisschen Material Sammeln wollte, und das ganze dann später Strukturieren.
Ich dachte an eine Ähnliche Einleitung wie c:start#einstieg

Xin hat geschrieben: - Ansonsten würde ich sagen, sollten sich die C++-Mächtigen vielleicht mal zusammensetzen und eine Art "Lehrplan" für die CPP:Start bauen, den wir dann Stück für Stück füllen können!?
Gute idee.
Xin hat geschrieben:Sollte man für sowas mal eine Skype/IRC/Gobby-Sitzung arrangieren?
Ich habe das ein wenig für das C-Tutorial gesteuert und fand das recht aufwendig - daher glaube ich, es wäre ganz gut, wenn wir mehr als nur eine Meinung diskutieren, um das Tutorial aufeinander aufbauend zu realisieren.
Ich weiß nicht, eine Instant Messaging Sitzung wäre für den Anfang etwas unpassend, sich in einer solchen Sitzung gut auszudrücken könnte schwer fallen. Ich finde es wäre besser, wenn wir in diesem Thread erst einmal ein paar Vorschläge diskutieren, und die IM Sitzung dann auf Später verlegen, wo dann nur mehr einige Streitpunkte und Details zu klären sind.


Nachdem ich jetzt schon davorsitze, möchte ich gleich mal mit meinen Ideen Anfangen.

Das Tutorial sollte verständlich, aber dennoch exakt geschrieben sein. Die Lernkurve sollte am Anfang eher flach sein, um nicht gleich alle zu verschrecken.
Nichtsdestotrotz sollte es vollständig sein, und auch die schwierigeren Themen behandeln.
Man sollte auch von Anfang bis ende durchlesen können, ohne in das für Wikis typische "in Verzweigungen verlieren".

Nach diesen Gesichtspunkten dachte ich an Folgende aufteilung

Code: Alles auswählen

Block 1: Der Anfang
    Dieser Block sollte einen einfachen Einstieg für Programmieranfänger darstellen und ihnen ermöglichen simple Programme zu schreiben.
   
    Theorieblock 1:
        1a) Vorbereitung
        Wieso programmieren Lernen?
        Was ist ein Computer? (jetziges c:what)
        Was bedeutet Programmieren? (jetziges c:what)
        Wie programmieren Lernen? (ähnlich wie c:how)
            Wie gehe ich mit Fehlern um?
        Wieso C++? (teile von cpp:introduction, ähnlich wie c:why)
        Fragen und Antworten zu C++ (teile von cpp:introduction)
        
        1b) Einstieg
        Wie dieses Tutorial zu lesen ist?
        Was ist ein Programm?
        Grundelegendes zum Speicher (jetziges c:hardware:ram)
        
    Praxis 1:
        Installation und Einrichtung der Software (c:software, c:compiler:start)
        Hello World Programm 
            Das Hello World programm sollte weniger als Tatsächliches lernen der Sprache gelten, sondern eher dem Testen der Software und Einführung eines "Programmgerüstes" dienen.
        Ausdrücke
            Operatoren
            Klammern
            Literale (light Version)
        Anweisungen
            Wo können sie stehen?
        Ausgabe (light Version)
        Eingabe (very very light Version)
        Datentypen (light)
        Variablen, Literale (heavy version)
        Schleifen und Verzweigungen
        Arrays, evtl. C- Strings
        
Block 2: Vertiefung    
    Theorieblock 2a)
        Hardware
        Stack (funktionsaufrufe)
        funktionsweise der CPU
    Theorieblock 2b)
        Formattieren von Programmcode
        Kommentieren von Programmcode
        "good practice", Konventionen
        const correctness
        wiederverwendbarkeit (light Version) (redundanzen vermeiden)
    Praxis 2a:
        Referenzen
        Zeiger
        Funktionen
        Namespaces
        Datentypen (heavy version) 
        Strukturen (structs)
        
        Gültigkeitsbereiche (sichtbarkeiten von bezeichnern)
        Präprozessor
        Headerdateien und aufspaltung des Codes auf mehrere Dateien
        
    Theorieblock 2c)
        Objektorientiertes Programmieren
        Lebenszeitabhängiges Programmieren (Konstruktor, Destruktor)
        Idee der Kapselung
        Idee der Vererbung
        
        Aufbau von Bibliotheken
        
    Praxis 2b:
        Klassen und Objekte
            Konstruktor
            Destruktor
        Operatorüberladung
        
        Ein/Ausgabe (medium Version)
        Strings (std::string)
        
        Vererbung
        Virtuelle Funktionen
        
        Exceptions
        
    Theorieblock 2d)
        Umsetzung von Praxis 2b) auf der Hardware
        Name Mangling
        
Block 3: Fortgeschrittene Themen
    Theorieblock 3:
        Generische Programmierung
        Wiederverwendbarkeit (heavy version)
        
    Praxis 3:
        Funktionstemplates
        Klassentemplates
        
        Ein/Ausgabe (heavy Version)
            Die iostream Klassenhierarchie
            
        Template- Templates
            
        Algorithmen
        Datenstrukturen
            
        STL
            vorstellung
            Anwendung
            Container
            Algorithmen
                Eigene Algorithmen im Stil der STL
                
        Runtime Type Information (RTTI)

so, ab hier wirds ein bisschen Schwammig. Liegt ja auch in Ferner zukunft. Aber ich werde es trotzdem versuchen, das weiter zu formulieren.

Block 4: Angewandtes C++
    Theorieblock 4:
        Portabilität
            Arbeiten mit dem Standard
        Ganz viel Theorie :-)

    Designmuster
        z.B.:
        Singleton Klassen
        Curriously Recurring Template Pattern
        Type Traits
        Expression Templates
    
    Eventbasiertes Programmieren
    
    Vorstellung der Boost Bibliothek
    Vorstellung eines GUI Toolkits
    
    Multithreading
    
Block 5: Das neue C++
    Einführung in die Features von C++0x
    
    Praxis 5a: Features
        Compilerunterstützung
        
        "Bugfixes" der Sprache
        
        auto und decltype
        variadic templates
        initializer lists
        Das neue NULL
        Const Expressions
        
        Concepts
        
    Praxis 5b: Die neue Standardbibliothek
        ...

Hups, das ist jetzt länger geworden als geplant.
Bitte im Kritik und Komentare.

mfg, fat-lobyte
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: cpp:introduction

Beitrag von Kerli » Di Feb 24, 2009 2:23 pm

Die Gliederung finde ich schon recht gut. Es gibt nur ein paar Punkte die ich etwas anders einreihen würde bzw. die überhaupt fehlen:

- Einfache Ausgabe mit cout sollte gleich nach dem Helloworld Programm kommen, da Anfänger immer gerne was sehen.
- std::string sollte viel früher kommen. Am Besten direkt zu den C-Strings dazu als deren C++-Variante
- Überladung von Funktionen (nicht nur Operatoren)
- Defaultwerte von Argumenten
- constcorrectnes gehört weiter nach hinten oder am besten gleich aufgeteilt. Einmal für Variablen bzw. eigentlich Konstanten und einmal für Klassen(methoden)
- Ein const Artikel gehört recht an den Anfang für Konstanten bzw. für "C-vorbelastete" als #define-Alternative
- Virtuelle/Abstrakte Klassen
- Mehrfachvererbung auch im Zusammenhang mit dem Problem des mehrfachen Auftreten einer Basisklasse
- Polymorphie
- Grundlegende Teile der STL (vor allem Container) gehören weiter nach vorne, damit man erst gar nicht auf die Idee kommt eigene Implementierungen dafür zu schreiben.
- Auch Teil der C++0x Standard Bibliothek gehören unter anderem aus diesem Grund weiter nach vorne (smart pointer, bind...) Dazu könnte wir ev. auch Boost erwähnen.

Außerdem sollten wir aufpassen das der Fluss nicht zu sehr durch Theorieteile unterbrochen wird, da manche Leute nur Programmieren wollen und nicht daran interessiert bzw. aus welchen Gründen auch immer keine Zeit dafür haben. Zum Programmieren kann es zwar nützlich sein zu wissen wie zb ein Funktionsaufruf funktioniert, es ist aber nicht notwendig um C++ zu lernen. Deshalb sollten solche Theorieabschnitte zwar vorhanden sein, aber also optionaler Zweig gehandhabt werden, sozusagen mit einem Link "Bei Interesse hier weiterlesen".

Ansonsten gehört auch einiges aus dem C-Tutorial refaktorisiert bzw. überarbeitet, da teilweise doch der Basic-Hintergrund einiger Autoren sehr stark durchkommt und auch nicht immer die korrekten Begriffe verwendet werden (Definition != Deklaration != Anlegen || Befehl != Funktion != Anweisung || ...)

Weiters müssen wir uns auch überlegen wie wir C/C++ überschneidende Artikel handhaben sollten. In welchen Namensraum kommen sie. Wie machen wir die Navigation wenn es wieder eine Verzweigung nach C/C++ gibt. Ein Problem was da auch auftreten wird ist die Verwendung von printf bzw. cout.
Unter anderem aus diesem Grund sollten wir vollständige Programmbeispiel so weit wie möglich vermeiden und wenn notwendig zwei Codebeispiele für beide Sprachen zeigen.

So, das waren jetzt zumindest einmal einige Gedanken die mir dazu gekommen sind, aber ich bin mir sicher es waren noch nicht alle :)

edit: Da ist mit noch etwas aufgefallen. Es gibt da noch einen Namensraum 'c_' der mir doch etwas überflüssig erscheint...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: cpp:introduction

Beitrag von Dirty Oerti » Di Feb 24, 2009 3:08 pm

Den grundlegenen Aufbau in Form von Theorieteil /Praxisteil finde ich sehr gut.
Ich denke, wir sollten vorallem darauf achten, dass der Praxisteil aber möglichst ohne den Theorieteil verständlich ist.
Wo dies nicht geht sollten wir nur auf den Theorieteil verweisen.

Dadurch sollte das ganze Tutorial etwas...praxisorientierter werden.
Kerli hat geschrieben:Einfache Ausgabe mit cout sollte gleich nach dem Helloworld Programm kommen, da Anfänger immer gerne was sehen.
Kerli hat geschrieben:std::string sollte viel früher kommen. Am Besten direkt zu den C-Strings dazu als deren C++-Variante
Genau :)
Kerli hat geschrieben:Grundlegende Teile der STL (vor allem Container) gehören weiter nach vorne, damit man erst gar nicht auf die Idee kommt eigene Implementierungen dafür zu schreiben.
Da bin ich anderer Meinung.
Klar, sie sollten schon recht früh erwähnt werden.
Aber es ist eine verdammt gute Übung, wenn jemand soetwas selbst schreibt.
Verwenden sollte er/sie dann natürlich die entsprechenden Teile der STL.
Kerli hat geschrieben:Außerdem sollten wir aufpassen das der Fluss nicht zu sehr durch Theorieteile unterbrochen wird
Jup, bzw. die Theorieteile in gewissem Sinn als Optional kenntzeichnen.
Kerli hat geschrieben:Ansonsten gehört auch einiges aus dem C-Tutorial refaktorisiert bzw. überarbeitet
Ja, da sollte vorallem wieder etwas mehr Struktur rein, finde ich.
Xin hat geschrieben:Sollte man für sowas mal eine Skype/IRC/Gobby-Sitzung arrangieren?
Ist irgendwann sicherlich mal gut, aber wie fat-lobyte schon sagte, wirds wohl schwer, dabei brauchbares fürs Wiki zu gewinnen.
fat-lobyte hat geschrieben:Man sollte auch von Anfang bis ende durchlesen können, ohne in das für Wikis typische "in Verzweigungen verlieren".
Das ist denke ich das große Problem, dass das C-Tutorial hat. Beim C++-Tutorial sollten wir das von Anfang an vermeiden.
fat-lobyte hat geschrieben:Ausdrücke
Operatoren
Klammern
Literale (light Version)
Anweisungen
Wo können sie stehen?
Ausgabe (light Version)
Eingabe (very very light Version)
Datentypen (light)
Variablen, Literale (heavy version)
Schleifen und Verzweigungen
Arrays, evtl. C- Strings
Wichtig ist dabei nur, dass man auch evlt einen praktischen Nutzen als Leser erkennen kann.
Für uns ist ja eigntl alles klar, jemand, der sich nicht auskennt möchte meistens aber auch den Nutzen kennen.

Deswegen sollte man vielleicht ein "kleines Projekt" ins Tutorial einflechten.
Eine Art Spiel/kleines Programm, dass Stück für Stück mit jeweil den neu gewonnenen Kenntnissen ausgebessert/erweitert wird.

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
soufian88
Beiträge: 288
Registriert: So Jan 18, 2009 1:01 pm

Re: cpp:introduction

Beitrag von soufian88 » Di Feb 24, 2009 5:04 pm

Ich kenne mich gerade in C++ nicht gut aus :roll: aber eine Idee habe ich was ich auch gut finde ist bei jedem beendeten Artikel bzw Kapitel einige Fragen oder Aufgaben die zum entsprechenden Kapitel (Artikel) passen stellen die User es lösen können.
C ( Durchschnittlich ) C++ (am Lernen)

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: cpp:introduction

Beitrag von nufan » Di Feb 24, 2009 5:09 pm

Ich kann zwar auch kein C++, aber ich werde trotzdem wieder alle Artikel nach Rechtschreibfehlern durchwühlen :D

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: cpp:introduction

Beitrag von fat-lobyte » Di Feb 24, 2009 5:48 pm

soufian88 hat geschrieben:Ich kenne mich gerade in C++ nicht gut aus :roll: aber eine Idee habe ich was ich auch gut finde ist bei jedem beendeten Artikel bzw Kapitel einige Fragen oder Aufgaben die zum entsprechenden Kapitel (Artikel) passen stellen die User es lösen können.
dani93 hat geschrieben:Ich kann zwar auch kein C++, aber ich werde trotzdem wieder alle Artikel nach Rechtschreibfehlern durchwühlen :D
Ich freue mich natürlich für eure Anteilnahme... Aber wie ihr bereits beide gesagt habt könnt ihr beide kein C++. Es ist also nicht sehr zweckdienlich, wenn man dann solche Posts lesen muss.
Bitte beherzigt eines: Ihr müsst nichts sagen. Es kann auchmal gut sein, zu schweigen wenn man vom Thema nichts weiß. Wie ihr eben nicht gesehen habt, habe ich das bereits ziemlich oft in verschiedensten Foren praktiziert.
Also bitte, und das gilt für allem für dani93: Bei dem Forum gehts nicht darum die meisten Einträge zu schreiben sondern qualitativ hochwertige und zum Thema beitragende Artikel. Du hast mittlerweile mich und Kerli überholt, vielleicht solltest du dir mal überlegen ob das wirklich erstrebenswert war.

Ein kleines Zitat, und zwar das vollständige aus meiner Signatur:
Dieter Nuhr hat geschrieben:Ich glaube, das ist damals [nach dem Zweiten Weltkrieg in Deutschland] falsch verstanden worden mit der Demokratie: Man darf in der Demokratie eine Meinung haben, man muss nicht. 's wär ganz wichtig, dass sich das mal rumspricht. Wenn man keine Ahnung hat: Einfach mal Fresse halten.
Den Teil, der für dich wichtig ist habe ich fett markiert.

Und ums gleich zu klären: Ihr müsst auch nicht darauf mit Beiträgen wie "Ok mach ich." oder ähnliches Antworten. Ich gehe davon aus, das ihr das lest. Aber eine Antwort in dieser Form wäre wieder der gleiche Fehler.
Kerli hat geschrieben:Die Gliederung finde ich schon recht gut. Es gibt nur ein paar Punkte die ich etwas anders einreihen würde bzw. die überhaupt fehlen:
Bei den meisten Punkten hast du recht. Allerdings bin ich in manchen nicht so ganz einverstanden:
Kerli hat geschrieben:- Einfache Ausgabe mit cout sollte gleich nach dem Helloworld Programm kommen, da Anfänger immer gerne was sehen.
Schon klar. Aber eine Ausgabe machen wollen, ohne zu wissen was ein Ausdruck und eine Anweisung ist (sprich dass in jede Zeile ein Semikolon gehört) halte ich nicht für möglich.
Kerli hat geschrieben:- std::string sollte viel früher kommen. Am Besten direkt zu den C-Strings dazu als deren C++-Variante
Strings ohne Objekte zu können? Ebenfalls schwer vorstellbar

Kerli hat geschrieben:Grundlegende Teile der STL (vor allem Container) gehören weiter nach vorne, damit man erst gar nicht auf die Idee kommt eigene Implementierungen dafür zu schreiben.
Wieder das gleiche: STL ohne Templates ist schwer vorstellbar. Höchstens eine "light version" für std::vector kann ich mir vorstellen.
Kerli hat geschrieben:Weiters müssen wir uns auch überlegen wie wir C/C++ überschneidende Artikel handhaben sollten. In welchen Namensraum kommen sie. Wie machen wir die Navigation wenn es wieder eine Verzweigung nach C/C++ gibt. Ein Problem was da auch auftreten wird ist die Verwendung von printf bzw. cout.
Unter anderem aus diesem Grund sollten wir vollständige Programmbeispiel so weit wie möglich vermeiden und wenn notwendig zwei Codebeispiele für beide Sprachen zeigen.
Das ist noch ein Punkt der zu klären wäre.

Dirty Oerti hat geschrieben:Den grundlegenen Aufbau in Form von Theorieteil /Praxisteil finde ich sehr gut.
Ich denke, wir sollten vorallem darauf achten, dass der Praxisteil aber möglichst ohne den Theorieteil verständlich ist.
Wo dies nicht geht sollten wir nur auf den Theorieteil verweisen.
Ich denke nicht dass das eine Gute Idee ist. Einfach nur deswegen dass das Wort "praktisch" so schön ist sollte man nicht auf Theorie verzichten. Theorie gehört dazu, und man kann das praktische nicht richtig verstehen, wenn die Theorie dahinter nicht klar ist. Es gibt manche Fehler, die man allein aus der Praxis nicht nachvollziehbar sind.
Dirty Oerti hat geschrieben:Dadurch sollte das ganze Tutorial etwas...praxisorientierter werden.
Praxisorientiert -. ja. Aber bitte mit genügend Theorie dahinter.

Dirty Oerti hat geschrieben:
Kerli hat geschrieben:Grundlegende Teile der STL (vor allem Container) gehören weiter nach vorne, damit man erst gar nicht auf die Idee kommt eigene Implementierungen dafür zu schreiben.
Da bin ich anderer Meinung.
Klar, sie sollten schon recht früh erwähnt werden.
Aber es ist eine verdammt gute Übung, wenn jemand soetwas selbst schreibt.
Übung ist eine Sache. Über Übungen haben wir noch nicht gesprochen. Aber ich finde im Praxisteil sollte Primär die STL erwähnt werden. Natürlich kann man schon vorher die Übungen stellen, und die STL dann zum Richtigen Zeitpunkt als "Lösung des Problems" darstellen.
Dirty Oerti hat geschrieben:
Kerli hat geschrieben:Außerdem sollten wir aufpassen das der Fluss nicht zu sehr durch Theorieteile unterbrochen wird
Jup, bzw. die Theorieteile in gewissem Sinn als Optional kenntzeichnen.
Wie gesagt, manche sind wirklich Optional, zum Beispiel Hardware, Stack und Funktionsaufrufe. Andere hingegen finde ich nicht als Optional, sondern so wichtig dass sie jeder Programmierer können sollte.

Dirty Oerti hat geschrieben:Wichtig ist dabei nur, dass man auch evlt einen praktischen Nutzen als Leser erkennen kann.
Für uns ist ja eigntl alles klar, jemand, der sich nicht auskennt möchte meistens aber auch den Nutzen kennen.

Deswegen sollte man vielleicht ein "kleines Projekt" ins Tutorial einflechten.
Eine Art Spiel/kleines Programm, dass Stück für Stück mit jeweil den neu gewonnenen Kenntnissen ausgebessert/erweitert wird.
Da gibts nur ein kleines Problem: Wenn wir von Anfang an das Projekt "gut" machen, wird es keiner verstehen. Wenn wir es so machen, dass es jeder Versteht, dann wird das Projekt qualitativ ziemlich schlecht, und im endeffekt unnütz sein.
Besser wären mehrere kleine Beispiele finde ich.
Aber du hast schon recht, es ist eine Überlegung Wert.
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: cpp:introduction

Beitrag von Xin » Di Feb 24, 2009 8:24 pm

Soviel Text... ich versuche mal irgendwie dazwischen zu kommen ;-)
Kerli hat geschrieben:- Mehrfachvererbung auch im Zusammenhang mit dem Problem des mehrfachen Auftreten einer Basisklasse
Das hier würde ich gerne auch mal anders formulieren... Mehrfachvererbung kann ein Problem sein. Ich lese selten Artikel, wo die Vorteile beschrieben sind. Das wäre mal etwas besonderes.
Kerli hat geschrieben:- Grundlegende Teile der STL (vor allem Container) gehören weiter nach vorne, damit man erst gar nicht auf die Idee kommt eigene Implementierungen dafür zu schreiben.
Wer mir nicht stolz seine erste selbstgeschrieben Datenstruktur zeigen kann, dem werfe ich das STL Buch an den Kopf... was nutzt ein Entwickler, der nichts selbst machen kann?
Kerli hat geschrieben:Außerdem sollten wir aufpassen das der Fluss nicht zu sehr durch Theorieteile unterbrochen wird, da manche Leute nur Programmieren wollen und nicht daran interessiert bzw. aus welchen Gründen auch immer keine Zeit dafür haben.
Programmieren, ohne zu verstehen, wie man programmiert führt nur zu noch mehr Zeitverlust.
Kerli hat geschrieben:Zum Programmieren kann es zwar nützlich sein zu wissen wie zb ein Funktionsaufruf funktioniert, es ist aber nicht notwendig um C++ zu lernen. Deshalb sollten solche Theorieabschnitte zwar vorhanden sein, aber also optionaler Zweig gehandhabt werden, sozusagen mit einem Link "Bei Interesse hier weiterlesen".
Damit kann ich mich anfreunden, aber eher, um den Lernenden nicht von Beginn an mit Wissen zu überschütten, dass er noch nicht einsortieren kann.
Kerli hat geschrieben:Weiters müssen wir uns auch überlegen wie wir C/C++ überschneidende Artikel handhaben sollten. In welchen Namensraum kommen sie. Wie machen wir die Navigation wenn es wieder eine Verzweigung nach C/C++ gibt. Ein Problem was da auch auftreten wird ist die Verwendung von printf bzw. cout.
Unter anderem aus diesem Grund sollten wir vollständige Programmbeispiel so weit wie möglich vermeiden und wenn notwendig zwei Codebeispiele für beide Sprachen zeigen.
Vielleicht sollten wir die Dinge locker sehen und akzeptieren, dass printf() auch Teil von C++ ist. Das Problem löst sich nämlich damit in Nichts auf.
Ich wüßte nicht, warum ein C++-Programmierer kein printf() beherrschen dürfte.
Ich akzeptiere schließlich auch nicht, dass sich jemand C++-Programmierer nennt, wenn er mit C-Strings überfordert ist.
Dirty Oerti hat geschrieben:
Xin hat geschrieben:Sollte man für sowas mal eine Skype/IRC/Gobby-Sitzung arrangieren?
Ist irgendwann sicherlich mal gut, aber wie fat-lobyte schon sagte, wirds wohl schwer, dabei brauchbares fürs Wiki zu gewinnen.
Statt die Struktur hier im Forum hin und her und kaputt zukopieren, könnte man sie zusammen in Gobby schreiben und gut.
Dirty Oerti hat geschrieben:Wichtig ist dabei nur, dass man auch evlt einen praktischen Nutzen als Leser erkennen kann.
Für uns ist ja eigntl alles klar, jemand, der sich nicht auskennt möchte meistens aber auch den Nutzen kennen.

Deswegen sollte man vielleicht ein "kleines Projekt" ins Tutorial einflechten.
Eine Art Spiel/kleines Programm, dass Stück für Stück mit jeweil den neu gewonnenen Kenntnissen ausgebessert/erweitert wird.
So funktionieren viele Bücher, allerdings geht uns dann die Möglichkeit als Nachschlagewerk flöten.
Und ich gehe davon aus, dass die meisten Leute, die hier vorbeisurfen werden, uns mit genau solch einer Fragen finden werden.

Wie geht das nochmal, dass...?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: cpp:introduction

Beitrag von Dirty Oerti » Di Feb 24, 2009 8:46 pm

Xin hat geschrieben:Programmieren, ohne zu verstehen, wie man programmiert führt nur zu noch mehr Zeitverlust.
Ich denke nur, dass es wichtig ist, zwischen all dem Verstehen auch zu Programmieren.

Soll heißen: Es kommt wohl auf eine ausgewogene Mischung an.
Xin hat geschrieben:Statt die Struktur hier im Forum hin und her und kaputt zukopieren, könnte man sie zusammen in Gobby schreiben und gut.
Das ist natürlich auch eine Möglichkeit, die sicher besser ist als Skype /IRC...
Xin hat geschrieben:So funktionieren viele Bücher, allerdings geht uns dann die Möglichkeit als Nachschlagewerk flöten.
Nicht unbedingt.
Ich glaube, dass ist allgemein unser Problem. Wir versuchen unser Tutorial (auch C) zu sehr als Nachschlagwerk fungieren zu lassen.
Ich denke, wir sollten das ein bisschen stärker trennen.

Das Prinzip versuche ich beim Kernel-Namespace. Dort gibt es einen Teil namens "Tutorial", darin wird schrittweise vorgegangen.
Und es gibt einen Teil "Nachschlagwerk", worin genau und detailiert und geordnet nach Thema alles steht (stehen wird irgendwann hoffentlich).
Aus dem Tutorialbereich kann man dann bei tiefergehenden Informationen auf das Nachschlagwerk verweisen.

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: cpp:introduction

Beitrag von fat-lobyte » Di Feb 24, 2009 8:47 pm

Xin hat geschrieben:Wer mir nicht stolz seine erste selbstgeschrieben Datenstruktur zeigen kann, dem werfe ich das STL Buch an den Kopf... was nutzt ein Entwickler, der nichts selbst machen kann
Erstens: *aua*, das Buch hat wehgetan. ;-)
Zweitens: Ein Programmierer der nichts selbst machen kann nutzt natürlich nichts. Aber ich finde es ziemlich unfair, wenn du das verwenden von Bibliotheken mit "nichts selbst machen" gleichsetzt. Wenn er bis zu diesem Zeitpunkt "nichts selbst machen kann", dann ist an dem Tutorial gewaltig was faul.
Drittens: Willst du alles selbst machen? Willst du auch die Ein/Ausgabe selbst Programmieren? Die C- String funktionen? Vielleicht brauchst du kein C++ sonder sowieso nur Assembler. Vielleicht kannst du auch mit einem Schmetterlingsflügelschlag Programmieren.
Ja, ich gebe zu das war überspitzt, aber das ist die Problematik, wie viel hilfe darf man verwenden, damit es als "ich habe es selbst gemacht" durchgeht. Das ist eine Gratwanderung. Ich finde es lohnt sich eher die STL zu lernen als so etwas selbst zu schreiben. Für die VERWENDUNG im Programm.
Für die ÜBUNG sollte natürlich jeder Programmierer dazu in der Lage sein. Aber über die Übung, Aufgaben und Fragen haben wir noch nicht geredet, und das gehört meiner Meinung nach nicht in diesen Punkt hinein, sondern ist ein eigener. Und ganz ehrlich: außer für die Übung ist so etwas nicht wirklich brauchbar, denn es gibt das schon.
Viertens: Was nutzt ein Programmierer der keine Bibliotheken verwenden kann und alles selbst schreiben muss?
Xin hat geschrieben:Vielleicht sollten wir die Dinge locker sehen und akzeptieren, dass printf() auch Teil von C++ ist. Das Problem löst sich nämlich damit in Nichts auf.
Ich wüßte nicht, warum ein C++-Programmierer kein printf() beherrschen dürfte.
Das sehe ich ein wenig anders. Natürlich darf ein C++ Programmierer printf() beherrschen. Er muss es aber nicht können, denn es gibt eine Alternative: std::cout. Und diese gibt es aus gutem Grund, und es gibt auch gute Gründe printf() nicht zu verwenden, wenn es alternativen gibt.
Insofern halte ich es für kontraproduktiv in einem C++ Tutorial printf() zu unterrichten.
Xin hat geschrieben:Ich akzeptiere schließlich auch nicht, dass sich jemand C++-Programmierer nennt, wenn er mit C-Strings überfordert ist.
You're mixing apples with oranges. C- Strings sind nichts anderes als Arrays, und die <cstring> Funktionen sind nichts anderes als Algorithmen zu deren verarbeitung. Und Arrays und algorithmen gehören zu C++ genauso wie zu C.
ALLERDINGS sind die C- Funktionen unsicher, Fehleranfällig und umständlich (aber nicht schwierig) zu bedienen. Wenn wir schon darüber diskutieren, dass wir ja unnötige Theorie aussparen, sollten wir auch die Frustrierenden Erfahrungen mit C- Strings aus dem Tutorial heraushalten. Hier wieder das gleiche: Es gibt alternativen, die gibt es aus gutem Grund, und es gibt gute Gründe C- Strings nicht zu verwenden.
Xin hat geschrieben:So funktionieren viele Bücher, allerdings geht uns dann die Möglichkeit als Nachschlagewerk flöten.
Und ich gehe davon aus, dass die meisten Leute, die hier vorbeisurfen werden, uns mit genau solch einer Fragen finden werden.
Ich glaube ein Durchgehendes Tutorial und ein Nachschlagewerk schließen sich bis zu einem gewissen Grad aus, denn C++ ist nicht linear aufgebaut. Dementsprechend muss aus Didaktischen Gründen einiges zuerst ausgespart werden, dann einiges Wiederholt. Für ein Nachschlagewerk keine guten Voraussetzungen.
Haters gonna hate, potatoes gonna potate.

Antworten