Gibt es eigentlich eine Sprache die noch komplexer ist als C++?



  • Konrad Rudolph schrieb:

    C++ ist sicherlich schwer zu lernen, aber C?

    Stroustrup argumentiert in dem Paper genau das Gegenteil (und zwar stichhaltig).

    Nein, er sagt aus, dass es in C schwieriger ist, äquivalenten Code hinzubekommen. Gerade sein Beispiel bei "Complexity" ist albern, da er die gleiche Sicherheit fordert - darum geht's aber gar nicht beim Erlernen. Beim Erlernen geht's darum, die Abläufe und die Logik zu verstehen. Ich will damit keinesfalls sagen, dass C++-Anfänger zuerst C lernen sollten - das ist ein ganz anderer Punkt, C++-Lerner sollen C++ lernen. Aber wenn man einfach nur C lernen will, ist das Verständnis meiner Meinung nach schneller vorhanden als bei einem C++-Lerner, eben weil dieser zusätzlich noch Klassen, Funktionsüberladung und weiß der Geier was lernen muss.

    Und mir gefällt auch C++ besser, mit C++ kann man idR effektiver arbeiten, was auch gerade für Anfänger wichtig ist. Aber wie gesagt, ich finde, dass die Sprache C einfacher zu "verstehen" ist 🙂



  • Badestrand schrieb:

    Gerade sein Beispiel bei "Complexity" ist albern, da er die gleiche Sicherheit fordert - darum geht's aber gar nicht beim Erlernen.

    Doch, darum geht es sehr wohl. Es bringt nichts, jemandem von Anfang an konsequent etwas Falsches beizubringen. Im Gegenteil sogar: Du glaubst gar nicht, wieviele professionelle Programmierer einfach weiterhin so programmieren, weil sie es so gelernt haben. Ich sage nur Buffer Overflows. Wieso gibt es solche Fehler heutzutage überhaupt noch? Weil professionelle Programmierer sich nicht um die Validierung ihrer Eingaben kümmern. Speicherlecks? Gleiches Problem.

    Das hat nichts mit der fehlenden Technologie zu tun, das sind schlicht und ergreifend didaktische Probleme.

    Beim Erlernen geht's darum, die Abläufe und die Logik zu verstehen.

    Das ist Mittel zum Zweck. Der *Zweck* des Lernens ist es, funktionierende Software zu schreiben. Leider wird das in der Uni auch immer missverstanden, und der Student hat vier Semester lang Algorithmenkurse und kann danach kein einziges Programm in Java schreiben.

    Aber wenn man einfach nur C lernen will, ist das Verständnis meiner Meinung nach schneller vorhanden als bei einem C++-Lerner, eben weil dieser zusätzlich noch Klassen, Funktionsüberladung und weiß der Geier was lernen muss.

    Muss man? Sagt wer? Wieso kann man diese Dinge nicht alle erst mal als Blackbox betrachten?



  • Ich hab das Gefühl, du verstehst nicht richtig, was ich eigentlich sagen wollte.

    Konrad Rudolph schrieb:

    Das ist Mittel zum Zweck. Der *Zweck* des Lernens ist es, funktionierende Software zu schreiben.

    Da stimme ich dir völlig zu. Und ich denke genauso auch, dass C zu lernen der falsche Weg ist in die Welt der guten Programmierung. Das Einzige, wirklich das Einzige was ich sagen wollte, war: C ist nicht schwer zu verstehen. Und das hat überhaupt gar nichts damit zu tun, ob man gut, sicher und/oder effizient in der Sprache programmieren kann.
    Ich hab mich da wahrscheinlich doof ausgedrückt, man lernt eine Sprache ja um sie zu "können", und dazu gehört natürlich "gute" Programmierung. Aber ich meinte eben "verstehen".



  • hey, ich meinte nicht ob C einfacher als C++ zu lernen ist oder andersrum. das ist für einsteiger wohl beides gleich schwer (auch wenn stroustrup noch 10 solcher papers schreibt wird seine ansicht nicht richtiger dadurch). ich meinte mehr sowas ähnliches wie basic. mal ein beispiel, die erste ungeraden zahlen von 1 bis 13 ausgeben:

    C, C++

    int i;
    for (i=1; i<14; i+=2)
    {
      printf ("%d\n", i);  // C
      std::cout << i << std::endl; // C++, sieht eher noch schlimmer aus
    }
    

    BASIC

    FOR i=1 to 13 STEP 2
       PRINT i
    NEXT i
    

    ...und jetzt versetzt euch mal in die lage eines absoluten noobs, der seine ersten gehversuche in der programmierung macht. was versteht er wohl eher?
    🙂



  • lern-freak schrieb:

    ...mal ein beispiel, die erste ungeraden zahlen von 1 bis 13 ausgeben:...

    C++

    for(int i=1; i<14; i+=2)
    {
        std::cout << i << std::endl;
    }
    

    lern-freak schrieb:

    ...und jetzt versetzt euch mal in die lage eines absoluten noobs, der seine ersten gehversuche in der programmierung macht. was versteht er wohl eher?

    Du wirst lachen, aber ich hatte schon mehrere die C++ Ausdrücke für logischer empfinden. Ja, Man muss etwas erklären, aber das "NEXT i" finde ich z.B. für genauso erklärungswürdig wie grundsätlich den Aufbau einer Schleife an sich.

    Über die Ausgabe lässt sich Streiten, aber ich ziehe die C++ Variante der C Variante vor (Hier hat Basic schon einen Vorteil), da man diese auch leicht erklären kann (Die "Pfeile zeigen in Richtung des Ziels und das "c" in cout und cin steht für Console, also dem Anzeigebereich) und nicht zwangsweise eine "Subsprache" für die Ausgabe benötigt, solange man nicht ans Formatieren angelangt.

    cu André



  • Badestrand schrieb:

    ...im Gegensatz zur "Lernsprache" Java, wo man sofort in's Klassen- und OOP-Konzept reingeworfen wird, ohne irgendwas zu verstehen....

    Das ist natürlich mit Zeigern, Arrays, malloc(), impliziten Konversionen, Formatkennzeichner, ... in C um Längen einfacher. 🙄 😉
    Ich will wahrlich nicht Java das Wort reden, aber da, wo man in Java "zu OO gezwungen" wird, wird man in C unnötig mit "Technik belastet".

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Badestrand schrieb:

    ...im Gegensatz zur "Lernsprache" Java, wo man sofort in's Klassen- und OOP-Konzept reingeworfen wird, ohne irgendwas zu verstehen....

    Das ist natürlich mit Zeigern, Arrays, malloc(), impliziten Konversionen, Formatkennzeichner, ... in C um Längen einfacher. 🙄 😉
    Ich will wahrlich nicht Java das Wort reden, aber da, wo man in Java "zu OO gezwungen" wird, wird man in C unnötig mit "Technik belastet".

    Gruß,

    Simon2.

    Wir sprechen doch von C++. 🙄 😡



  • Einwand schrieb:

    ...Wir sprechen doch von C++. 🙄 😡

    Ich weiß nicht, wer "wir" ist, aber:

    Badestrand schrieb:

    ...C hat halt relativ wenig Grundstrukturen, im Gegensatz zur "Lernsprache" Java, wo man sofort in's Klassen- und OOP-Konzept reingeworfen wird, ohne irgendwas zu verstehen. Ich will keinen Flammenkrieg (:)) vom Zaum brechen, aber ich denke nicht, dass C absolut ungeeignet ist um einen Einstieg in die Programmierung zu finden.

    Schau, schau: Schoschonen ! 😉

    Gruß,

    Simon2.



  • Da fühle ich mich doch glatt gezwungen zu reagieren: Ich finde Formatkennzeichner schön 🤡

    Nichtsdestotrotz hast du mit dem Gewurschtel bei C-Arrays und der unnötig belastenden Technik absolut recht!



  • Hallo

    asc schrieb:

    [ das "c" in cout und cin steht für Console, also dem Anzeigebereich) und nicht zwangsweise eine "Subsprache" für die Ausgabe

    Ich dachte immer, dass steht für character?

    chrische



  • FAQ von Bjarne Stroustrup schrieb:

    How do you pronounce "cout"?
    "cout" is pronounced "see-out". The "c" stands for "character" because iostreams map values to and from byte (char) representations.



  • Artchi schrieb:

    FAQ von Bjarne Stroustrup schrieb:

    How do you pronounce "cout"?
    "cout" is pronounced "see-out". The "c" stands for "character" because iostreams map values to and from byte (char) representations.

    Gut, dann hat man es mir nur früher falsch beigebracht 😉 Macht aber für die Erklärung auch nur einen geringen Unterschied.



  • Badestrand schrieb:

    Da fühle ich mich doch glatt gezwungen zu reagieren: Ich finde Formatkennzeichner schön 🤡...

    Über Geschmack lässt sich bekanntlich nicht streiten ... darüber, dass sie eine zusätzliche Fehlerquelle darstellen allerdings auch nicht. 😃

    Gruß,

    Simon2.



  • Naja, halt "schön" im Sinne von "visuell schön", nicht im Sinne von "schön sicher" 🤡



  • Badestrand schrieb:

    Naja, halt "schön" im Sinne von "visuell schön", nicht im Sinne von "schön sicher" 🤡

    Das hatte ich auch so verstanden und will dagegen auch nichts gesagt habe (wie gesagt: "Geschmäcker sind halt verschieden !" :D)

    Gruß,

    Simon2.



  • Hi,

    eins muß man aber C lassen, es ist mit Sicherheit eine der wenigen Sprache, wo man von klein auf lernt, sich genau zu überlegen was man tut.
    man gewöhnt sich gaaaaaanz schnell einen viel saubereren Stil an als z.B. bei Pascal, weil es eben keine 'zig Sicherheitsnetze gibt, sondern die einzige Sicherheit 30 cm vor dem Bildschirm sitzt.

    Gruß Mümmel



  • muemmel schrieb:

    eins muß man aber C lassen, es ist mit Sicherheit eine der wenigen Sprache, wo man von klein auf lernt, sich genau zu überlegen was man tut.
    man gewöhnt sich gaaaaaanz schnell einen viel saubereren Stil an als z.B. bei Pascal

    Das halte ich für'n Gerücht.



  • Also auch wenn ich damit recht alleine stehe, aber nachdem ich ursprünglich C gelernt habe und dann schnell zu C++ umgeschwenkt bin, habe ich irgendwann feststellen müssen, dass Komplexität relativ ist...
    Da ich ein ganz spezielles Programm schreiben wollte, dass sehr ungewöhnliche Fähigkeiten aufwies (Beispiel: domänenübergreifendes Arbeiten mit WMI-Informationen ohne Trusted Domains) habe ich festgestellt, dass C++ dies schlicht nicht kann.
    Nach VBasic, wxC++ und einigen anderen Programmiersprachen bin ich dann bei C# gelandet... Sicherheitsnetz ade und das Debuggen wird zu deinem besten Freund.
    Als wirklich objektorientierte Sprache mit allen Fähigkeiten die C++ hat und etlichem mehr, kann die Fehlersuche schon bei einfachen Programmen haarsträubend sein, wenn das Programm beispielsweise funktioniert, aber nicht unter jeder Bedingung... und es sind IMMER Programmierfehler!
    Wenn man es aber einmal geschafft hat, sind damit ganz herrliche und dynamische Programme realisierbar... 🙂



  • muemmel schrieb:

    ...
    eins muß man aber C lassen, es ist mit Sicherheit eine der wenigen Sprache, wo man von klein auf lernt, sich genau zu überlegen was man tut. ...

    Trifft noch mehr auf ASM zu.

    muemmel schrieb:

    ...
    ..man gewöhnt sich gaaaaaanz schnell einen viel saubereren Stil an ...

    Sehe ich in der Praxis aber nicht bestätigt.

    Gruß,

    Simon2.



  • in der praxis sieht man eher umso mehr flickenteppiche, je mehr fallstricke eine sprache bietet.


Anmelden zum Antworten