C++ oder C#



  • Eisflamme schrieb:

    Freie Funktionen widersprechen reiner OOP imo schon, das ist ja gerade der Witz, dass nichts frei rumliegt. Aber Generics... wieso widersprechen die OOP?

    Sag mal das unter dem Gesichtspunkt Funktion == Objekt noch einmal. o.O



  • Eisflamme schrieb:

    Freie Funktionen widersprechen reiner OOP imo schon, das ist ja gerade der Witz, dass nichts frei rumliegt. Aber Generics... wieso widersprechen die OOP?

    Und was ist an statischen Funktionen in nicht instanzierbaren Pseudoklassen jetzt "objektiger" als an freien Funktionen?
    Konzeptuell mMn. nix.

    Wenn du das (=Funktionen sinnloserweise in Pseudoklassen packen) in C++ machst wird dir jeder nen Vogel zeigen. Wenn man es in C# oder Java macht ist es objektig und gut. Vollkommen logisch!!! 🤡



  • Funktionen sind für mich aber keine Objekte.

    hustbaer: Meine Rede. Aber ich habe ja nie behauptet, dass Java rein OOP ist 😉 Diese Inkonsequenz (die jedoch zeigt, dass reines OOP einfach Käse ist) sehe ich ja durchaus auch.



  • Eisflamme schrieb:

    Funktionen sind für mich aber keine Objekte.

    fuer dich vielleicht.
    In JavaScript zB hat eine Funktion intern immer einen this "Zeiger" und hat attribute und kann sogar funktionen als member haben...

    Funktionen sind ganz normale Objekte. In vielen Situationen kannst du zB garnicht zwischen Funktion und Objekt unterscheiden - betrachte zB mal predicates in STL Algos.



  • lolelotte schrieb:

    Wenn dir Performanzunterschiede von Faktor 2 (mehr kann man mit C++ auch nicht rausholen) egal sind, dann ist für dich vielleicht eine andere Sprache besser geeignet als C++.

    Es geht hier nicht um mich. Ich arbeite als C++ Entwickler und bin damit völlig zufrieden (liegt aber am Job und an dem was wir machen und nicht an der Sprache, die ist mir völlig egal). Es geht um die allgemeine Dikussion über Programmiersprachen und mich nervt, dass da plötzlich alle auf der Performance und irgendwelchen Peanuts rumreiten.
    2x ist sogar sehr viel. Ich glaube nicht, dass man das normal mit C++ rausholt. Eher 10%.



  • Mechanics schrieb:

    lolelotte schrieb:

    Wenn dir Performanzunterschiede von Faktor 2 (mehr kann man mit C++ auch nicht rausholen) egal sind, dann ist für dich vielleicht eine andere Sprache besser geeignet als C++.

    Es geht hier nicht um mich. Ich arbeite als C++ Entwickler und bin damit völlig zufrieden (liegt aber am Job und an dem was wir machen und nicht an der Sprache, die ist mir völlig egal). Es geht um die allgemeine Dikussion über Programmiersprachen und mich nervt, dass da plötzlich alle auf der Performance und irgendwelchen Peanuts rumreiten.
    2x ist sogar sehr viel. Ich glaube nicht, dass man das normal mit C++ rausholt. Eher 10%.

    Du bist C++ Entwickler, kaum so glauben, dabei bin ich Java Entwickler 🤡



  • Shade of Mine:
    Stimmt. Dann frage ich mich jedoch, wie man OOP überhaupt noch definieren möchte. Wenn eine freie Funktion OOP nicht widerspricht, dann lässt sich OOP ja fast nur noch von der Idee, die man beim Programmieren hat, widerspiegeln und nicht am Code oder an den Sprachfunktionen. Kann aber gut sein, dass man das ohnehin so macht und ich daher nicht ganz das richtige Bild im Kopf hatte.

    Und dann lässt sich doch auch kaum noch behaupten, dass C++ nicht rein objektorientiert ist. Anders gesagt: eine Definition von "reiner OOP" lässt sich in meinen Augen nur noch ganz schwer erarbeiten. Vielleicht braucht man diesen Begriff aber auch einfach nicht mehr?!



  • Eisflamme schrieb:

    Wenn eine freie Funktion OOP nicht widerspricht, dann lässt sich OOP ja fast nur noch von der Idee, die man beim Programmieren hat, widerspiegeln und nicht am Code oder an den Sprachfunktionen. Kann aber gut sein, dass man das ohnehin so macht und ich daher nicht ganz das richtige Bild im Kopf hatte.

    Objektorientierung ist, wenn man sich an Objekten Orientiert.

    Hoert sich doof an, aber OOP ist nur eine Idee/ein Konzept. Du kannst bei einem Gemaelde auch nicht nur ein paar Pinselstriche betrachten und dann das Bild klassifizieren als Surreal, Impressionistisch, Postmodern, etc. Du musst das ganze betrachten.

    Wenn wir zB die POSIX File API uns ansehen, so ist sie Objekt Orientiert. Es gibt das int Objekt und darauf operieren wir, wobei es egal ist ob es ein File auf der Platte ist oder ein Memory Mapped Objekt oder Socket, etc. Wir haben aber keine Klassen und nichtmal "richtige" Objekte.

    Aber das Konzept ist OO.

    eine Definition von "reiner OOP" lässt sich in meinen Augen nur noch ganz schwer erarbeiten. Vielleicht braucht man diesen Begriff aber auch einfach nicht mehr?!

    Reine OOP gibt es nicht. Jedes vernuenftige Programm wird Sachen haben die nicht Objekt Orientiert abbildbar sind. Stell dir ein einfaches sort() vor. Das geht nicht mit OOD. Dazu muesste man einen sort-Adapter auf einen Container anwenden und dann hat man dennoch wieder irgendwo einen std::sort() aufruf...



  • Gut, die Definition macht Sinn und dass es "reine OOP" nicht gibt, macht dann auch Sinn. 😉 Den Begriff hört man ja häufiger und ich hatte den auch relativ blind genutzt, aber zukünftig weiß ich Bescheid.



  • Eisflamme schrieb:

    Gut, die Definition macht Sinn und dass es "reine OOP" nicht gibt, macht dann auch Sinn. 😉 Den Begriff hört man ja häufiger und ich hatte den auch relativ blind genutzt, aber zukünftig weiß ich Bescheid.

    IMO "Rein OOP" wird dort benutzt wo die Syntax streng Subjekt-Verb-Objekt benutzt wird, dennoch ist OOP ein Top-Level-Konzept, dass auf Botton-Level-Konzepte wie Imperative (Java,...), Funktional (Haskell,...) oder Mixed (Scala,...) setzt muss, sowie ohne Sprachunterstützung, weil es auch ein Paradigma ist - OOP in C lässt Grüßen 😉


Anmelden zum Antworten