Erst C dann C++ ???



  • Ach ihr habt doch alle keine Ahnung!

    Man geht folgendermaßen vor:
    * Man lernt nicht dauernd daneben zu pinkeln.
    * Falls man im sitzen pinkelt, lernt man, davor den Klodockel hochzuklappen
    * Dann Lernt man Assembler
    * Dann lernt man A
    * Dann lernt man BCPL
    * Dann lernt man B
    * Dann lernt man C
    * Dann lernt man C++

    👍

    Wer was anderes behauptet, hat keine Ahnung! 🕶

    ACHTUNG! Wenn man etwas davon auslässt, so kann man die nächste Sprache nicht erlernen, da grundwissen fehlt!



  • wahrheit schrieb:

    ...
    * Dann lernt man B
    * Dann lernt man C
    * Dann lernt man C++
    ...

    dann 😨 http://www.digitalmars.com/d/
    dann E: http://erights.org/
    ...
    oder hab ich jetzt was falsch verstanden 😕



  • net schrieb:

    wahrheit schrieb:

    ...
    * Dann lernt man B
    * Dann lernt man C
    * Dann lernt man C++
    ...

    dann 😨 http://www.digitalmars.com/d/
    dann E: http://erights.org/
    ...
    oder hab ich jetzt was falsch verstanden 😕

    Du hast es erfasst! 👍 👍 👍

    Und zu allerletzt kommt brainfuck! Ohne bleibt man beruflich gesehen auf der Strecke!



  • wahrheit schrieb:

    Und zu allerletzt kommt brainfuck!

    nee, brainfuck kommt nach B. als letztes kommt das: http://www.zhmicro.com/
    erst wer Z kann, kann von sich behaupten dass er richtig proggen kann...



  • @poster: nein. ganz klar nein.

    @offtopic
    C vs C++ - flame? wozu? wir wissen doch alle, dass C++ um größenordnungen überlegen ist 🙄

    net schrieb:

    wahrheit schrieb:

    Und zu allerletzt kommt brainfuck!

    nee, brainfuck kommt nach B. als letztes kommt das: http://www.zhmicro.com/
    erst wer Z kann, kann von sich behaupten dass er richtig proggen kann...

    das kann ich zwar nicht unterschreiben, aber wer dann noch A kann, der kann von A bis Z programmieren 🤡



  • [quote="alks jp04tj
    wir wissen doch alle, dass C++ um größenordnungen überlegen ist 🙄
    [/quote]
    das ist gelogen. c ist viel einfacher und klarer als c++. wozu vererbung, datenkapselung, überladene methoden und so'n schnickschnack? wiederverwendbarer code ist auch mit c ganz easy. mit c geht alles was mit c++ auch geht, natürlich muss man andere wege einschlagen...



  • Schau Dir von C nur printf(...) an, da Du diese Formatierung später an vielen Stellen wieder finden kannst. Ansonsten ohne Umwege ran an C++:

    Wolfgang Schröder: http://www.cpp-tutor.de/
    Toni Schornböck: http://tutorial.schornboeck.net/inhalt.htm
    Thomas Thron: http://de.geocities.com/throni3/
    Volkard Henkel: http://www.volkard.de/Cpp/Tutorial/Einleitung/index.html
    Benjamin Kaufmann: http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs
    Philipps-Universität Marburg: C++ - Einführungskurs: http://online-media.uni-marburg.de/informatik/cpp/
    C++-Kurs Technische Informatik: http://wwwcms.fh-pforzheim.de/inhalt/studiengaenge/eiti/daten/labore/i1lt/ckurs.pdf

    Lies das: http://www.haw-hamburg.de/rzbt/dankert/ccppjava.html/



  • Erhard Henkes schrieb:

    Man nehme daher den MSVC++ 2005 EE ...

    oder den entsprechenden g++ - port für das eigene betriebssystem...



  • Hallo

    Ich meine auch, es wäre empfehlenswert, C++ zu lernen, ohne vorher C gelernt zu
    haben -- wenn es denn möglich wäre.

    Ich würde liebend gern in allen meinen Programmen durchgehend string und
    vector verwenden! Aber schon in der ersten Zeile beim Auswerten der
    Kommandozeilen-Argumente argc und argv muß ich char** statt vector<string> verwenden, und
    sobald ich ein File eröffnen will, muß der Filename ein char[] sein,
    und kein string.

    Daher bleibt es keinem C++ Programmierer erspart, auch char und Arrays usw.. und somit C zu kennen.

    Grüße



  • Das sind auch Teile von C++. Auch wenn sie dort keinen so großen Stellenwert mehr einehmen. Der Unterschied liegt (mal wieder) darin, wie Probleme in der Sprache geslöst werden.

    C++ unterstützt als Multiparadigmensprache deutlich mehr Lösungsansätze als zum Beispiel C. Fehlerbehandlung passiert in C++ oft auf ganz andere Weise als in C.
    Auch der Umfang an Datenstrukturen in der Standard-Lib unterscheidet sich deutlich.

    Funktionspointer sind zum Beispiel in C++ relativ selten, weil man vieles schön in Objekten verpacken kann und gleich noch die Daten mit dabei hat. In C dagegen sind sie, sobald man etwas Laufzeitdynamisches haben will an der Tagesordnung.



  • Hobbyprogrammierer schrieb:

    Aber schon in der ersten Zeile beim Auswerten der
    Kommandozeilen-Argumente argc und argv muß ich char** statt vector<string> verwenden

    Und wo ist das Problem dabei? char* lässt sich problemlos in string umwandeln. Und vector macht speziell bei dynamischen Sequenzen Sinn. argv ist aber nicht dynamisch, dh du greifst darauf nur zu. Das ist syntaktisch gleichwertig zu der Verwendung von vector.

    Hobbyprogrammierer schrieb:

    sobald ich ein File eröffnen will, muß der Filename ein char[] sein,
    und kein string.

    Dafür gibt's die Member Funktion c_str().

    Hobbyprogrammierer schrieb:

    Daher bleibt es keinem C++ Programmierer erspart, auch char und Arrays usw.. und somit C zu kennen.

    Nein. char und Arrays sind genauso Bestandteil von C++. std::string ist lediglich eine weitere Abstraktion eines String Containers, wofür man in C char Arrays verwendet. Aber mal ganz abgesehen von dieser Problematik, sollte man in C++ auch zuerst die Basics lernen, bevor man zu irgendwelchen STL Containern greift. Dafür ist aber kein C Wissen notwendig.



  • Hallo Groovemaster,

    die Frage des Threads war, ob man C++ lernen soll ohne vorher C zu lernen,
    und ich sage, daß das zwar erstrebenswert aber unmöglich ist, da man
    in C++ kein File öffnen oder argv auswerten kann, ohne auf
    C-"Altlasten" wie char** zurückgreifen zu müssen.

    Grüße



  • EDIT: Lahmes Forum + nervöser Finger = Doppelpost 😞



  • Damit willst Du sagen, dass char* nur Bestandteil der Sprache C ist? Das stimmt schlicht und ergreifend nicht, denn Zeiger sind genauso auch ein Bestandteil der Sprache C++.

    Dass sie in C zuerst da waren und in C++ übernommen wurden, tut IMHO garnichts zur Sache. Um C++ zu programmieren braucht man genauso Zeiger wie für C (nur dass man sie besser verstecken kann/sollte)

    EDIT:
    Wenn Du zuerst C++ lernst und später auf C umsteigen muss, hast Du eben den Vorteil dass Du diesen Sprachbestandteil (Zeiger) schon kennst. Sie sind sozusagen eine gemeinsame Teilmenge der Sprachen C und C++.



  • char ist ein primitiver Datentyp, was hat der jetzt mit C zu tun? char gibts auch in Java und C#. Haben deshalb nichts mit C zu tun.

    Deine Argumentation das primitive Datentype und Pointer etwas mit C zu tun haben, ist irgendwie zu weit gegriffen.

    Es ist aber tatsache, das sich kein C++-Anfänger am ersten Tag Gedanken über argv und argc machen muß. Wann habe ich zum ersten Mal diese main-Parameter benötigt? Jahre später nachdem ich mein erstes HelloWorld eingetippt habe-

    Mein empfohlenes Buch z.B. legt gleich am Anfang (nachdem obligatorischen HelloWorld) mit einer typischen Klasse (Personen-Klasse glaub ich) mit std::vector und std::string (für Vorname, Nachname usw.) los. Ganz einfach um die Objektorientierung nicht durch C-Strings und C-Array zu verkomplizieren bzw. den C++-Anfänger nicht am Anfang _unnötig_ mit Pointertechnik zu verwirren.

    ABER, auf Pointer, C-Arrays und C-Strings wird in dem Buch später trotzdem eingegangen. Das ist das erste Buch welches einem so C++ beibringt, wie ich es mir vorstelle. Weil DAS die C++-Vorteile sind, warum ich C++ ggü. C vorziehe. Das ich vielleicht doch C-Arrays und C-Strings brauche, weil einige C++-Libs nicht zuende gedacht sind, ist dann ein anderes Thema.

    Übrigens, die fstream-Klassen mit ihren dummen C-String-Parametern sind übrigens selbst beim C++-Komitee ein Thema gewesen! Wir werde deshalb _wahrscheinlich_ im kommenden ISO C++ TR2 zus. Filestream-Klassen bekommen, die dieses Manko aufheben und C++-Objekte als Parameter erwarten.



  • Hallo!

    @Artchi: Das hört sich gut an, was Du über geplante ISO--Features
    schreibst. Die Anpassung der Standard-Libraries an STL-Klassen würde
    sicher auch noch die eine oder andere Sicherheitslücke schließen, denn
    string und andere dynamisch vergrößerbare Typen kennen ja keine statischen Overflows.

    Gegen char habe ich gar nichts einzuwenden, ich meinte (offenbar habe ich mich
    unklar ausgedrückt) char*.

    Grüße



  • Hobbyprogrammierer schrieb:

    die Frage des Threads war, ob man C++ lernen soll ohne vorher C zu lernen,
    und ich sage, daß das zwar erstrebenswert aber unmöglich ist

    Tja, dann muss ich es noch etwas drastischer ausdrücken. Das ist Käse.

    Hobbyprogrammierer schrieb:

    da man
    in C++ kein File öffnen oder argv auswerten kann, ohne auf
    C-"Altlasten" wie char** zurückgreifen zu müssen.

    char ist genauso ein fundamentaler Datentyp in C wie auch C++. Und Zeiger kennen auch beide Sprachen. Das einzige, was man als Altlast bezeichnen kann, ist das Konzept der C-Strings. Diese sind deshalb trotzdem nicht C spezifisch, sondern können praktisch mit jeder Sprache verarbeitet werden, weil es schlichtweg ein besonderes Format einer Zeichensequenz ist und nicht irgendwelche speziellen Sprachfeatures notwendig sind. Und selbst wenn du nicht auf "Altlast" Funktionen wie strcpy zurückgreifen willst (die ja in C++ immer noch vorhanden sind), kannst du diese immer noch selber schreiben. Alles mit C++, ohne irgendwelche C Kenntnisse. Du musst einzig und allein das Konzept der C-Strings verstanden haben. Und wenn dich der Name stört, dann nenne sie halt einfach nullterminierte Strings. 😉



  • @Hobbyprogrammierer

    Lern das was du programmieren willst, also c++

    Sei aber bereit, dir auch dinge aneigenen zu muessen, die eigentlich tiefstes C sind.

    Egal was andere Dir hier erzaehlen, mit C problemen wirst du dich spaeter oefters rumschlagen als dir vielleicht manchmal lieb ist.

    Jeder der ernsthaft programmiert, wird frueher oder spaeter mit libraries in beruehrung kommen die c schnittstellen haben.
    Jeder der selber libs programmiert, wird sich immer die frage stellen c oder c++ schnittstelle.

    Ob klassische statische C-Arrays oder moderne dynamische c++ datenstrukturen, kann meist nie pauschal entschieden werden.

    Das problem ist eigentlich gar ned so schlimm ....
    der eigentliche Sprach umfang von C und C++ selber ist sowas von gering, das man beides ohne probleme fast vollstaendig auswendig kann mit der zeit ^^
    Die kunst und das aufwendige zu lernen sind eigentlich die techniken die damit moeglich sind ... und dann die bibs die man fuer standard aufgaben braucht.

    Ciao ...


Anmelden zum Antworten