C nicht OOP?



  • Guten Abend,
    ich hatte vorhin mal einer meiner Brainstormphasen, in der mir soviele Fragen einfallen. Eine davon, fand ich selbst sehr intressant. Structs sind auch eine Art Klasse. Sie haben einen Ctor, Dtor, public, private, können für Mehrfachvererbung genutzt werden und all die schönen Dinge.

    Meine Frage nun : Wieso gilt C nicht als OOP, wenn Structs doch eig. fast das gleiche wie Klassen sind, immerhin sehe ich den einzigsten unterschied nur im Namen bisher. Mir ist klar, dass Structs nur genutzt werden, um eine Ansammlung von Daten zu verwalten und zu halten und nicht genutzt werden, um Funktionen und sonstiges zu vertreten. ABER, es ist möglich. Da es möglich ist, sollte C doch als OOP angesehen werden, oder sehe ich das falsch? Es zeugt zwar von schlechtem Stil, aber solange die Funktionalität erhalten ist, sollte man sie auch anerkennen.

    mfg



  • FreakY<3Cpp schrieb:

    Structs sind auch eine Art Klasse. Sie haben einen Ctor, Dtor, public, private, können für Mehrfachvererbung genutzt werden und all die schönen Dinge.

    Aber nicht in C.



  • Hm okay, stimmt, danke. Aber wenn ich schon grad dabei bin. Warum, auch wenn es hier nicht hingehört, ich jedoch denke das ihr das wisst, wurde denn Structs dann erweirtet und sozusagen zu Klassen gemacht?



  • FreakY<3Cpp schrieb:

    Hm okay, stimmt, danke. Aber wenn ich schon grad dabei bin. Warum, auch wenn es hier nicht hingehört, ich jedoch denke das ihr das wisst, wurde denn Structs dann erweirtet und sozusagen zu Klassen gemacht?

    weils einfacher ist, nur eine sorte zu haben als zwei. c++ ist nähmlich ganz drauf angelegt, eine einfache sprache zu sein.



  • volkard schrieb:

    weils einfacher ist, nur eine sorte zu haben als zwei. c++ ist nähmlich ganz drauf angelegt, eine einfache sprache zu sein.

    ... jaja, und wer "nämlich" mit "h" schreibt ist d*****h und c++ ist eine einfache Sprache für Informatik- Analphabeten.
    Kinder können so gemein sein, was? :p



  • pointercrash() schrieb:

    volkard schrieb:

    weils einfacher ist, nur eine sorte zu haben als zwei. c++ ist nähmlich ganz drauf angelegt, eine einfache sprache zu sein.

    ... jaja, und wer "nämlich" mit "h" schreibt ist d*****h und c++ ist eine einfache Sprache für Informatik- Analphabeten.
    Kinder können so gemein sein, was? :p

    sorry, meine sprache tut sich manchmal sich dem niwo der unterhaltung anpassen und manchmal macht sie das sogar im vorraus.



  • volkard schrieb:

    sorry, meine sprache tut sich manchmal sich dem niwo der unterhaltung anpassen und manchmal macht sie das sogar im v******.

    Joh, aber das war ja nur der erste Teil 😉 - Du findest C++ wirklich "einfach"?

    Aber whatsoever, diese "kann C OOP?"- Diskussion haben wir zyklisch immer wieder und im fünften Durchlauf verliert sie dann deutlich an Witz. Wat macht ihr, daß ihr nicht an niwo verliert?



  • volkard schrieb:

    weils einfacher ist, nur eine sorte zu haben als zwei. c++ ist nähmlich ganz drauf angelegt, eine einfache sprache zu sein.

    c++ hat doch zwei. 'class' ist ja nicht bloss ein #define class struct
    🙂



  • pointercrash() schrieb:

    volkard schrieb:

    weils einfacher ist, nur eine sorte zu haben als zwei. c++ ist nähmlich ganz drauf angelegt, eine einfache sprache zu sein.

    ... jaja, und wer "nämlich" mit "h" schreibt ist d*****h und c++ ist eine einfache Sprache für Informatik- Analphabeten.
    Kinder können so gemein sein, was? :p

    Ich vermute mal er meinte mit "einfach" nicht "einfach zu bedienen", sondern einfach "einfach".

    Ein einfaches Brett ist einfacher als ein Surfbrett. Mit dem Surfbrett ist es aber einfacher zu surfen.

    ABER, es ist möglich

    Möglich ist es in jeder Sprache. Die Frage ist nur, ob eine Sprache objektorientierte Programmierung auch unterstützt. Das tut C nicht.



  • Nagila Hawa schrieb:

    Ich vermute mal er meinte mit "einfach" nicht "einfach zu bedienen", sondern einfach "einfach".

    nö, er hat bloss einen scherz gemacht.
    🙂



  • +fricky schrieb:

    nö, er hat bloss einen scherz gemacht.
    🙂

    das stimmt. einen der einfachsten scherze auf kosten von c++. 🤡



  • Yahoooooooo, der monatliche C ist not OOP Thread 😃

    FreakY<3Cpp schrieb:

    Meine Frage nun : Wieso gilt C nicht als OOP, wenn Structs doch eig. fast das gleiche wie Klassen sind, immerhin sehe ich den einzigsten unterschied nur im Namen bisher.

    weil für diese Menschen eine Sprache nur dann eine OOP-Sprache ist, wenn man folgendes machen kann

    obj->methode(data);
    

    und das

    methode(obj, data);
    

    ist der Inbegriff der Nicht-OOP. Das Problem ist, C hat keinen syntaktischen Zucker fpr OOP, d.h. OOP ist in C mühselig und (als Bibliothek Entwickler) den Programmier sehr vertrauen. GTK+ ist das schönste Bsp für OOP in C, eine Klasse in GTK+ zu schreiben ist leider alles ander als trivial (in andere Sprachen wäre das deutlich einfacher).



  • Ojemine ... ist etwa ++C auch in VB geschrieben ? 😉



  • supertux schrieb:

    weil für diese Menschen eine Sprache nur dann eine OOP-Sprache ist, wenn man folgendes machen kann

    obj->methode(data);
    

    und das

    methode(obj, data);
    

    ist der Inbegriff der Nicht-OOP.

    demnacch wäre C eine reinrassige OO-sprache. ersteres geht nämlich auch in C.
    🙂



  • +fricky schrieb:

    demnacch wäre C eine reinrassige OO-sprache. ersteres geht nämlich auch in C.
    🙂

    ich nehme an, di meinst sowas?

    void f();
    struct object{
    	void(*methode)();
    };
    
    int main()
    {
    	struct object *obj=malloc(sizeof(*obj));
    	obj->methode=f;
    	obj->methode();
    


  • volkard schrieb:

    ich nehme an, du meinst sowas?

    ja, es geht sogar obj.methode(); in C. das sieht noch mehr nach OOP aus (weil's Java-ähnlich ist).
    🙂



  • supertux schrieb:

    FreakY<3Cpp schrieb:

    Meine Frage nun : Wieso gilt C nicht als OOP, wenn Structs doch eig. fast das gleiche wie Klassen sind, immerhin sehe ich den einzigsten unterschied nur im Namen bisher.

    weil für diese Menschen eine Sprache nur dann eine OOP-Sprache ist, wenn man folgendes machen kann

    obj->methode(data);
    

    und das

    methode(obj, data);
    

    ist der Inbegriff der Nicht-OOP.

    Schade. Dann muss ich Ada95 wohl beiseite legen. Nichtmal Objektorientierte Programmierung ist möglich. 😞



  • +fricky schrieb:

    demnacch wäre C eine reinrassige OO-sprache. ersteres geht nämlich auch in C.
    🙂

    dreh mir die Worte nicht im Thead, das habe ich nicht gesagt.



  • supertux schrieb:

    weil für diese Menschen eine Sprache nur dann eine OOP-Sprache ist, wenn man folgendes machen kann

    Wow, Pawlow hätte seine helle Freude.



  • pointercrash() schrieb:

    jaja, und wer "nämlich" mit "h" schreibt ist d*****h

    Und wer "nämlich" ohne "h" schreiben will, sollte konsequenterweise dann auch "nämlic" schreiben ...


Log in to reply