C auslassen, oder vor c++ lernen?


  • Administrator

    u_ser-l schrieb:

    es schadet übrigens auch nicht, wenn man schon am Anfang, vor dem Lernen von C und C++, eine ungefähre Vorstellung von der Funktionsweise eines Mikroprozessors hat, und weiß, was indirekte Adressierung, Heap und Stack sind - das erleichtert das Verständnis von hardwarenahen Konzepten in C und C++, bspw. Zeiger und Arrays.

    Ehm, ich würde sagen, dass dem nicht so ist. Ich persönlich hatte keine Ahnung was Heap oder Stack ist oder wie ein Mikroprozessor funktioniert, wahrscheinlich hätte ich sogar Schwierigkeiten gehabt mir überhaupt vorzustellen was ein Mikroprozessor ist. Trotzdem, ich habe es gelernt und ich empfand es relativ leicht. Das war ziemlich schnell drin.

    Wieso ich dir allerdings widerspreche ist das folgende. Wenn du bereits eine Ahnung in dem Bereich hast, wirst du aus Faulheit anfangen das entsprechende Kapitel zu überfliegen. Dies ist gerade bei C++ nicht sehr vorteilhaft, da man wirklich genau wissen sollte, wie das Speichermanagement funktioniert.
    Ich denke es ist vorteilhafter wenn es in die andere Richtung geht. Zuerst C++ und dabei lernen was Speicherverwaltung heisst. Von da kann man dann auch weiter zum Mikroprozessor.

    Aber solche Dinge sind wohl auch sehr subjektiv.

    Grüssli



  • Wer mit C++ zu programmieren beginnt lernt zunächst einmal C oder sollte das jedenfalls tun. Ich glaube nicht, dass der sofortige Einstieg in OOP etc. sehr sinnvoll ist. Ältere Programmierer hatten es da einfacher: Es gab erst C. Als es dann C++ gab konnte man prüfen, was man mit den erweiterten Möglichkeiten machen konnte.
    Programmieren ist aber unabhängig von der Programmiersprache. Die Grundlagen, was man machen will oder machen muss, bleiben die gleichen.



  • berniebutt schrieb:

    Wer mit C++ zu programmieren beginnt lernt zunächst einmal C oder sollte das jedenfalls tun.

    Merkwürdig, irgendwie haben dir in dem Punkt schon fast alle widersprochen. Und C++ ist bitte auch nicht mit OOP gleichzusetzen (Davon abgesehen das C++ noch mehr Paradigmen über die prozedurale und objektorientierte Sprache bietet). Nur wird selbst die prozedurale Programmierung unter C++ in Teilen anders angegangen als in C (alleine schon weil man ein paar zusätzliche Schlüsselwörter und Bibliotheken hat, und auch ohne OOP Kenntnisse nichts verkehrt macht wenn man z.B. std::string verwendet).

    berniebutt schrieb:

    Ältere Programmierer hatten es da einfacher: Es gab erst C.

    Du meinst deutlich ältere Programmierer* (C++ ist 30 Jahre alt), und zudem sind gerade viele alte Programmierer Neuerungen gegenüber in etwa so, wie ein Pferd mit Scheuklappen. Du Programmierst deutlich anders unter C++ als unter C.

    * Ich sehe mich mit aktuell etwa 20 Jahren Programmiererfahrung, davon ca. die Hälfte in prozeduraler Programmierung, auch eher zu den Älteren. Nur lerne ich noch aktiv, und werde dies auch nicht aufhören solange ich es schaffe.

    berniebutt schrieb:

    Programmieren ist aber unabhängig von der Programmiersprache. Die Grundlagen, was man machen will oder machen muss, bleiben die gleichen.

    Gerade dann stelle ich mir die Frage: Warum C lernen wenn man C++ programmieren will. Gerade wenn deine Aussage stimmt (das tut sie IMHO nur zum Teil, da unterschiedliche Sprachen nicht immer in allen Paradigmen übereinstimmen), wäre deine erste Aussage (C vor C++) unnötig.



  • berniebutt schrieb:

    Programmieren ist aber unabhängig von der Programmiersprache. Die Grundlagen, was man machen will oder machen muss, bleiben die gleichen.

    Tja, ein Grund mehr nicht mit C anfangen zu müssen. Dann kann man ja gleich mit C++ anfangen, da die Sprache ja egal ist. 😉

    Im Ernst: C++ ist heute eine eigenständige Sprache. Warum leben so viele wie Du noch noch in einer "C with Classes"-Welt? Einfach unbegreiflich.
    Sagst du etwa auch einem Java-Einsteiger, das er erst C lernen muß, weil man als Java-Einsteiger auch gleich mit OOP konfrontiert wird? Viele empfehlen Anfängern gleich Java, Python oder C#. Alles OO-Sprachen, und keiner sagt, das diese schlecht für Anfänger sind.

    C++ ist eine Multiparadigmen-Sprache, gerade mit dieser lernt man nicht nur OOP sondern auch procedurales Programmieren. Dafür muß ich vorher nicht unnötig C lernen. Die Zeit die ich für C verbringe, kann ich sinnvoller in C++ investieren.



  • Dravere schrieb:

    Trotzdem, ich habe es gelernt und ich empfand es relativ leicht. Das war ziemlich schnell drin.

    Mir hat es dagegen beim Lernen von C geholfen, daß ich schon ein paar Assemblersprachen kannte,
    denn so war es kein Problem, sich unter einem Array die Anfangsadresse eins Speicherbereichs vorzustellen, auf den man mittels indirekter Adressierung zugreift - das ist ein Konzept, daß sich 1:1 auf Maschinensprache abbildet, ebenso wie Post- und Preinkrement (ja, die PDP 11) und einige andere Dinge.

    Ohne dieses Vorwissen ist doch beispielsweise schwer zu vermitteln, warum das 1. Element eines Arrays a[0] (und nicht a[1]) ist. Weiß man, daß a eine Adresse ist, macht es Sinn, weil a+0 == a.


  • Administrator

    u_ser-l schrieb:

    Ohne dieses Vorwissen ist doch beispielsweise schwer zu vermitteln, warum das 1. Element eines Arrays a[0] (und nicht a[1]) ist. Weiß man, daß a eine Adresse ist, macht es Sinn, weil a+0 == a.

    Und ein gutes Buch vermittelt dieses Wissen im voraus. Das Wissen ist ja wirklich einfache. Eine Adresse kann man extrem leicht und einfach erklären. Grundsätzlich reicht, wenn man jemandem sagt, dass die Adresse nichts anderes ist, als eine Zahl für jedes Byte.
    Nun kannst du genau das oben hinschreiben, mit dem a+0 == a . Ein gutes C++ Buch wird schliesslich erklären, was eine Adresse ist.
    Darum ging es mir ja auch, denn wenn man diese Konzepte schon kennt, wird man dann das Kapitel womöglich überfliegen und dann plötzlich gewisse andere Dinge nicht sehen, welche aber wichtig gewesen wären.

    Grüssli



  • es hat halt jeder andere Voraussetzungen und eine andere Mischung an Vorwissen, bei mir Assembler vor C. Dafür lernte ich OO mit C++, mit Smalltalk gingen mir dann die Augen auf.



  • Grundwissen zu Bits und Bytes gehört natürlich in jedes Programmierer-Anfänger-Buch. Selbst damals auf dem C64 wurde für BASIC-Anfänger erklärt was Speicheradressen sind. Und wenn ein C++-Buch kein C lehrt, heißt das nicht, das darin Bits & Bytes nicht erklärt gehören. In dem Buch http://www.oop-mit-cpp.de wird ausgiebig am Anfang dieses Thema behandelt, selbst wenn OOP auf dem Buchtitel steht.



  • berniebutt schrieb:

    Wer mit C++ zu programmieren beginnt lernt zunächst einmal C oder sollte das jedenfalls tun. Ich glaube nicht, dass der sofortige Einstieg in OOP etc. sehr sinnvoll ist. Ältere Programmierer hatten es da einfacher: Es gab erst C. Als es dann C++ gab konnte man prüfen, was man mit den erweiterten Möglichkeiten machen konnte.
    Programmieren ist aber unabhängig von der Programmiersprache. Die Grundlagen, was man machen will oder machen muss, bleiben die gleichen.

    Eben überhaupt nicht.
    Zum Programmieren braucht man Logik, das ist so ziemlich in jeder Sprache nötig, aber damit hört's sich schonmal auf.



  • War mir schon klar, dass einige hier über mich herfallen. Jeder soll das nehmen, womit er am besten klarkommt oder was der Chef oder der Kunde verlangt! Ich habe meine ersten Programmieaufträge erledigt als es C und vieles weitere noch nicht gegeben hatte. Dementsprechend sehe ich einiges anders. !Hasta la vista, los amigos!



  • berniebutt schrieb:

    Jeder soll das nehmen, womit er am besten klarkommt oder was der Chef oder der Kunde verlangt!

    Es geht hier aber um einen Anfänger, der C++ lernen will und sich fragt, ob sich ein Umweg über C lohnt. Und es sind sich recht viele Leute einig, dass dies nicht der Fall ist.



  • Richtig, es geht um den sinnvollen Einstieg vom Punkt Null!
    Antwort: etwas einfaches wählen mit kleinen Aufgaben steigender Komplexität. Das kann man sowohl mit C wie auch C++, aber auch mit Basic, Fortran oder Pascal machen. Der Fragesteller macht nichts falsches, egal ob er nun mit C oder C++ beginnt, die Unterschiede sind am Anfang gering. Wähle also C++, dann vermeidest Du einigen überflüssig gewordenen Ballast. Fange einfach an und lerne, was Dir weiterhilft!



  • Ich möchte mich für die vielen Antworten bedanken, die teilweise aber auch leicht verwirrend waren.
    Ich nehme für mich aber nun mit, dass ich direkt mit C++ beginne und C außen vor lasse, bzw. nur dort betrachte wo es sinnvoll ist.

    Als Einführungsbuch habe ich den C++ Primer bestellt. Dann sollte es nun ja wohl klappen!

    Danke noch einmal und viele Grüße

    Ohne_Ahnnung (der den Namen absichtlich falsch geschrieben hat)


Anmelden zum Antworten