Beliebteste Programmiersprachen 1965 - 2019

  • Aber gerade da geht C++ viel zu weit z.B. mit seiner Mehrfachvererbung

    Da gebe ich dir absolut recht. Deshalb kennt SmallTalk ja auch keine Mehrfachvererbung und auch bei Delphi geht es nur über sog. Interfaces, die aber so gut wie niemand nutzt, ausser du musst irgendwelche komischen Windows COM Objekte einbinden :skull:. Aber das ist sowieso ein Kapitel für sich.


    Im Head-First Buch "Design Patterns" gibt

    es dazu ein schönes Beispiel mit einer Enten-Klasse, bei der man Verhalten wie fliegen oder quaken eben nicht vererben sollte,

    weil es spätestens bei der Gummi-Ente Probleme erzeugt

    Aber wahrscheinlich haben sich die Erfinder der Mehrfachvererbung gesagt: Moment mal...Supermann kann fliegen und hat einen komischen Gummianzug an, also muss er von einem Menschen UND einer Gummiente abstammen 8o.

    Aber gerade da geht C++ viel zu weit

    Und wie schon Bjarne Stroustrup über seine eigene Programmiersprache so schön gesagt hat :

    „C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.“


    Quelle: https://beruhmte-zitate.de/autoren/bjarne-stroustrup/


    Neben der Vererbung gibt es aber noch einen anderes wunderschönes Konzept in C++ - Die Überladung.

    Das ist richtig. Überladung macht auch sehr vieles leichter. Das können heute aber viele Programmiersprachen, nicht nur C++. Hier kommt es aber bei zu häufiger Nutzung natürlich zum gleichen Problem: Spaghetti-Code. In Delphi muss ich wenigstens die überladenen Funktionen noch mit dem Schlüsselwort overload markieren, um zu zeigen, dass ich weiss was ich tue. Bei C++ brauche ich das nicht, kann eine Funktion also (wenn auch unwahrscheinlich) versehendlich überladen.


    Wer das Überladungskonzept allerdings eingeführt hat entzieht sich meines Wissens. SmallTalk braucht sowas ja eigendlich nicht, da ich bei jedem Parameter prüfen kann um was für ein Objekt es sich handelt und dann eben statt zwei Integer zwei Strings addiere, bzw. zusammenfüge.:strom:

  • Überladung hat nix mit OOP zu tun. Selbst C oder PL/SQL können das. Mit Operator-Overloading ist C++ aber auch hier wieder zu weit gegangen - https://en.wikipedia.org/wiki/Operator_overloading

  • Überladung hat nix mit OOP zu tun

    Schon klar, das Überladung nichts mit OOP zu tun hat. Ich hab ja auch orion7 zitiert, da ging es nur drum, dass C++ das auch kann.


    Ich hab mir jetzt gerade nicht den ganzen Wikipedia Artikel durchgelesen, ich denke aber du möchtest auf den Absatz "Criticisms" hinweisen.

    Operator Überladung kann fein sein, wenn du eben z.B. eine Klasse ComplexNumbers hinzufügen musst und die normalen Operatoren wie + - etc. aus Schönheitsgründen auch wieder genutzt werden sollen. Aber hier ist es eben auch wieder nicht das Werkzeug, das so richtig Mist baut, sondern der Anwender. Schneiden kann ich auch etwas mit einem normalen Messer. Ein schweizer Taschenmesser bietet da halt mehr, muss aber wissen wozu ich jedes Werkzeug am besten einsetzt und wo ich es besser bleiben lasse. Der Korkenzieher ist halt in erster Linie zum - guess what - Korken ziehen da.

  • Klar hat Vererbung auch seinen Platz. Aber gerade da geht C++ viel zu weit z.B. mit seiner Mehrfachvererbung

    Mehrfachvererbung habe ich in C# schon schmerzlich vermisst. :(


    Sowas erscheint einem immer überflüssig, bis man in der Situation ist, wo man es brauchen könnte. Und dann wilde Ersatzkonstruktionen bauen muss.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

    Einmal editiert, zuletzt von detlef ()

  • Klar hat Vererbung auch seinen Platz. Aber gerade da geht C++ viel zu weit z.B. mit seiner Mehrfachvererbung

    Mehrfachvererbung habe ich in C# schon schmerzlich vermisst. :(


    Sowas erscheint einem immer überflüssig, bis man in der Situation ist, wo man es brauchen könnte. Und dann wilde Ersatzkonstruktionen bauen muss.

    Das Zauberwort heisst auch in C# "Interface";)

  • Klar hat Vererbung auch seinen Platz. Aber gerade da geht C++ viel zu weit z.B. mit seiner Mehrfachvererbung

    Mehrfachvererbung habe ich in C# schon schmerzlich vermisst. :(


    Sowas erscheint einem immer überflüssig, bis man in der Situation ist, wo man es brauchen könnte. Und dann wilde Ersatzkonstruktionen bauen muss.

    Das Zauberwort heisst auch in C# "Interface";)

    Nicht wirklich. Wenn man wirklich Mehrfachvererbung braucht, ist das nur ein Vehikel, mit dem man sich irgendwelche Ersatzkonstruktionen baut.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Mehrfachvererbung habe ich in C# schon schmerzlich vermisst. :(


    Sowas erscheint einem immer überflüssig, bis man in der Situation ist, wo man es brauchen könnte. Und dann wilde Ersatzkonstruktionen bauen muss.

    Ja da hat Anders Hejlsberg wohl seinen "Fehler" in Delphi ausbügeln wollen als er C# entwickelt hat. Manchmal ist Mehrfachvererbung hilfreich, ich hab es aber noch nie wirklich gebraucht, sondern hab mir dann immer überlegt, wo denn jetzt mein Denkfehler war, dass ich auf Mehrfachvererbung zurückgreifen müsste. Mit ein paar Änderungen an den Klassen brauchte ich es dann nicht mehr und alles wurde meistens viel eleganter und übersichtlicher.

  • das klingt wie "ich kann nicht richtig in Java programmieren, weil mir die goto-Anweisung fehlt"8o

  • Ich sagte, ja, wenn man das Problem noch nicht hatte (vielleicht mangels ausreichend komplexer Projekte :ätsch:), dann erscheint einem das überflüssig.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."