Wie am Besten einsteigen?



  • @john-0 sagte in Wie am Besten einsteigen?:

    Was die Literatur betrifft, da bin ich nicht auf dem neusten Stand was Einsteigerliteratur betrifft. Aber bloß kein zuerst C und C++. Das sorgt nur für einen Programmierstil von den jeder erfahrenen C++-Programmierer nur wegwill. C is evil.

    Kannst du das genauer ausführen?
    Software kümmert sich nicht um Stil, sie soll eine Aufgabe erfüllen und die verwendete Programmiersprache eine Brücke dahin darstellen. Bestenfalls nachher lesbar sein.

    Was also hast Du gegen C oder C++?

    (Btw, C++ brauch ich fast nie)



  • @Sarkast

    C++ brauch ich fast nie

    Die Amish brauchen auch keine Autos. Ich fahre trotzdem nicht mit der Kutsche.

    Als Dennis Ritchie C vor rund 50 Jahren entworfen hat, war es eine geniale Idee. Heute ist es veraltete Technologie.





  • @manni66 sagte in Wie am Besten einsteigen?:

    @Sarkast

    C++ brauch ich fast nie

    Die Amish brauchen auch keine Autos. Ich fahre trotzdem nicht mit der Kutsche.

    Als Dennis Ritchie C vor rund 50 Jahren entworfen hat, war es eine geniale Idee. Heute ist es veraltete Technologie.

    Witzig. Ich schreibe fast nur hardwarenahes Zeug, aber es läuft so runtime- optimiert, daß ich mir keine Gedanken machen muß, die Compiler sind verdammt gut geworden, gilt bei größeren Sachen auch für C++. Es ging ja um die Einsteiger- Frage und nicht um den Ferrari. Da ist C++ keine dumme Wahl. Wie alt der Ansatz ist, spielt für mich eine untergeordnete Rolle, er muß zweckdienlich sein.
    Mit C(++) kann ich alles machen, aber schreib mal in Haskell einen Systemtreiber. 🤔



  • @Sarkast sagte in Wie am Besten einsteigen?:

    Kannst du das genauer ausführen?
    Software kümmert sich nicht um Stil, sie soll eine Aufgabe erfüllen und die verwendete Programmiersprache eine Brücke dahin darstellen. Bestenfalls nachher lesbar sein.

    Es geht darum wie man C++ lernen sollte. C++ ist eine eigenständige Programmiersprache, und es haben sich mittlerweile so viele Unterschiede in C++ zu C entwickelt, dass man mit zuerst C lernen und danach C++ lernen sich die Sache unnötig schwer macht.

    Ein wesentlicher Unterschied ist, dass C++ eine deutlich strenger typisierte Sprache als C ist. Das hat Konsequenzen. Dazu benutzt man in C++ so gut war keine nackten Pointer mehr. Man macht das nur, wenn es sehr triftige Gründe dafür gibt. Der Regelfall ist daher unique_ptr, shared_ptr, array oder vector zu nutzen. RAII funktioniert in C nun einmal nicht.

    Was also hast Du gegen C oder C++?

    Ich habe weder gegen das eine noch das andere etwas. Aber C zu lernen, um C++ zu lernen, ist kontraproduktiv. D.h. man lernt in C massenhaft Dinge, die man sich bei C++ gleich wieder abgewöhnen sollte. Z.B. was nützt das Wissen über malloc & free, wenn man es in C++ nie nutzen wird? Ok, man weiß wie man etwa numa_alloc_on_node nutzen kann, aber das ist doch schon sehr speziell. Zumal dann auch noch wissen muss wie man ein placement new auf dem freien Speicher ausführen muss.



  • @RBS2 sagte in Wie am Besten einsteigen?:

    C ist sexy.
    https://thebittheories.com/advantages-of-c-over-c-f31f61873997
    🐱

    Ich hätte einen Smiley hinzufügen sollen. P.S. Der Link ist wieder einmal …
    Dan Saks cppcon 2016 Vortrag



  • @john-0 sagte in Wie am Besten einsteigen?:

    Es geht darum wie man C++ lernen sollte. C++ ist eine eigenständige Programmiersprache, und es haben sich mittlerweile so viele Unterschiede in C++ zu C entwickelt, dass man mit zuerst C lernen und danach C++ lernen sich die Sache unnötig schwer macht.

    Ein wesentlicher Unterschied ist, dass C++ eine deutlich strenger typisierte Sprache als C ist. Das hat Konsequenzen. Dazu benutzt man in C++ so gut war keine nackten Pointer mehr. Man macht das nur, wenn es sehr triftige Gründe dafür gibt. Der Regelfall ist daher unique_ptr, shared_ptr, array oder vector zu nutzen. RAII funktioniert in C nun einmal nicht.

    Was also hast Du gegen C oder C++?

    Ich habe weder gegen das eine noch das andere etwas. Aber C zu lernen, um C++ zu lernen, ist kontraproduktiv. ...

    Ich habe das auch nicht behauptet, wollte auch eigentlich keinen Tip abgeben. Meine Vorliebe für C ruht darin, daß ich gerne verstehe, was nach Compiler- und Linkerlauf in der CPU landet. Bei C ist mir das klar, bei C++ nicht mehr, wie Klassen aufgelöst/instantiiert werden. Eine Art Kontrollverlust, die ich nicht mag.
    Nur, als Performance- Süchtiger kann ich mittlerweile sagen, daß gegen C++ als Einsteiger nichts spricht. Ist so ne Art Schweizer Armeemesser. Nur brauch ich persönlich weder Schere, noch Feile, Zahnstocher, Angelhaken nebst Nylonschnur im Gehenk.
    Aber man kann's problemlos nachordern bei C++, bei C wird's deutlich schwerer.



  • @Sarkast sagte in Wie am Besten einsteigen?:

    Bei C ist mir das klar, bei C++ nicht mehr, wie Klassen aufgelöst/instantiiert werden. Eine Art Kontrollverlust, die ich nicht mag.

    Das muss nicht so sein. Ich schau öfter mal den generierten Assemblercode an und kann mir eigentlich auch gut sehr gut vorstellen, was da passiert. Zumindest, an den relevanten Stellen.
    Außerdem könnte ich mich eigentlich auch als Performance-süchtigen bezeichnen, und ich finde, in C++ gibts viel mehr Tools, mit denen man viel einfacher performante Programme schreiben kann. Bzw., man kann viel einfacher geeignete Datenstrukturen aufbauen, als das mit C möglich wäre.



  • @Sarkast sagte in Wie am Besten einsteigen?:

    Meine Vorliebe für C ruht darin, daß ich gerne verstehe, was nach Compiler- und Linkerlauf in der CPU landet. Bei C ist mir das klar, bei C++ nicht mehr, wie Klassen aufgelöst/instantiiert werden. Eine Art Kontrollverlust, die ich nicht mag.

    Mich stört an C die mannigfaltigen Möglichkeiten sich selbst in den Fuß zu schießen. Resourcenverwaltung im Fehlerfall ist mit C eine Pein.

    Nur, als Performance- Süchtiger kann ich mittlerweile sagen, daß gegen C++ als Einsteiger nichts spricht.

    Ich habe in der Zwischenzeit durch HPC-Probleme aktuelles Fortran zu schätzen gelernt. Allerdings ist Fortran 77 oder gar 66 ist ein widerlicher Krampf. Leider gibt es in den Naturwissenschaften noch viel zu viel diesen alten Mist.



  • @Mechanics sagte in Wie am Besten einsteigen?:

    @Sarkast sagte in Wie am Besten einsteigen?:

    Bei C ist mir das klar, bei C++ nicht mehr, wie Klassen aufgelöst/instantiiert werden. Eine Art Kontrollverlust, die ich nicht mag.

    Das muss nicht so sein. Ich schau öfter mal den generierten Assemblercode an und kann mir eigentlich auch gut sehr gut vorstellen, was da passiert. Zumindest, an den relevanten Stellen.
    Außerdem könnte ich mich eigentlich auch als Performance-süchtigen bezeichnen, und ich finde, in C++ gibts viel mehr Tools, mit denen man viel einfacher performante Programme schreiben kann. Bzw., man kann viel einfacher geeignete Datenstrukturen aufbauen, als das mit C möglich wäre.

    Ja, damit sind wir d'accord, mit C++ geht praktisch alles. Um den OP zu zitieren, ging es um den Einstieg und damit liegt man zumindest nicht völlig daneben.