Anfängerfrage zu Klassenattributen

  • Original von AndreasA
    Original von Lucas de Vil
    Eine Klasse meint ein Klassenobjekt, ein Objekt ein Instanzobjekt.
    Was sollen da Metaklassen?

    Übrigens braucht doch eh keiner so etwas Sinnloses wie Klassen.
    Naja, Smalltalk, ObjC, C#, PHP, ObjJ und C++ vielleicht. ;)


    Kann man irgendwo Software-Filosofie studieren?

    Höchstens mit PH.
    Vielleicht lässt sich ja Informatik und Philosophie kombinieren?
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Höchstens mit PH.


    Wenn ich jetzt sage: Mit F war Absicht; ob mir das dann jemand glaubt?


    Also bei uns in der Firma haben die Menschen an
    den "entscheidenden" Stellen mit Sicherheit
    sowas wie "politische Informatik" studiert...

    Da werden Entscheidungen nach ganz seltsamen Kriterien getroffen..
    Ewig erstaunt...
  • Original von AndreasA
    Höchstens mit PH.

    Wenn ich jetzt sage: Mit F war Absicht; ob mir das dann jemand glaubt?

    Ich für meinen Teil schon.
    Allerdings habe ich auch die blöde Angewohnheit, auf rhetorische Fragen zu antworten. ;)

    Original von AndreasA
    Also bei uns in der Firma haben die Menschen an
    den "entscheidenden" Stellen mit Sicherheit
    sowas wie "politische Informatik" studiert...

    Da werden Entscheidungen nach ganz seltsamen Kriterien getroffen..

    Na, immerhin werden Entscheidungen getroffen.
    Das Emu-Prinzip ist nämlich auch recht verbreitet.

    Das hat jetzt aber gar nichts mehr mit Klassenobjekten und Instanzobjekten zu tun, höchstens mit Meta-Diskussion. ;)
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Original von AndreasA
    Die Abbildung – in Objective-C, C++ usw. – ist so, dass eine Instanz eine Entität darstellen soll und die Klasse den Entitätstypen. Von diesem Konzept ausgehen, können Klassen in der Programmiersprache keine konkreten Werte haben. Sie können nur mittels Konstanten beschreiben, was eine Entität ist.


    Ja, das entspricht eigentlich auch meinem Gedankenmodell, wenn ich programmiere.



    Ich habe dennoch meinen Gedanken das eine Klasse ein Objekt einer Metaklasse ist,
    mal weiterverfolgt und bin dabei auf folgendes gestossen. Ich finde es zumindest
    eine interessante Betrachtung.

    sealiesoftware.com/blog/archiv…sses_and_metaclasses.html

    Hier hast du die Langfassung

    Metaklassen sind aber ob der 1-zu-1-Beziehung nur ein Trick des Laufzeitsystems. Ich führe den Grund genauer aus. Für das Verständnis von Objective-C sind sie unerheblich.

    Wenn man auf Sprachebene das weiterdenkt, kommt man unweigerlich zu Prototypen anstelle von Klassen.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von Lucas de Vil
    Eine Klasse meint ein Klassenobjekt, ein Objekt ein Instanzobjekt.
    Was sollen da Metaklassen?

    Übrigens braucht doch eh keiner so etwas Sinnloses wie Klassen.
    Naja, Smalltalk, ObjC, C#, PHP, ObjJ und C++ vielleicht. ;)

    Das solltest du ernst meinen. Man braucht das wirklich nicht und letztlich ist es gekünstelt:
    de.wikipedia.org/wiki/Prototypenbasierte_Programmierung
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von Amin Negm-Awad
    Original von Lucas de Vil
    Eine Klasse meint ein Klassenobjekt, ein Objekt ein Instanzobjekt.
    Was sollen da Metaklassen?

    Übrigens braucht doch eh keiner so etwas Sinnloses wie Klassen.
    Naja, Smalltalk, ObjC, C#, PHP, ObjJ und C++ vielleicht. ;)

    Das solltest du ernst meinen. Man braucht das wirklich nicht und letztlich ist es gekünstelt:


    Ich weiß.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • nochmals Danke!

    Hallo zusammen.

    Nochmals danke für die vielen Antworten. Ich sehe nicht in allen Einschränkungen ein Vorteil. Insofern bleibe ich bei meiner o. g. Zusammenfassung. Objective-C ist nicht meine 1. Programmiersprache, die ich lerne und wird auch nicht die letzte sein. Insofern bin ich es gewohnt, dass bestimmte Dinge in der einen Sprache besser oder schlechter gelöst sind als in einer anderen Sprache. Ich wollte hier lediglich sicherstellen, dass ich nichts übersehen habe. :)
  • RE: nochmals Danke!

    Original von Metro
    Hallo zusammen.

    Nochmals danke für die vielen Antworten. Ich sehe nicht in allen Einschränkungen ein Vorteil. Insofern bleibe ich bei meiner o. g. Zusammenfassung. Objective-C ist nicht meine 1. Programmiersprache, die ich lerne und wird auch nicht die letzte sein. Insofern bin ich es gewohnt, dass bestimmte Dinge in der einen Sprache besser oder schlechter gelöst sind als in einer anderen Sprache. Ich wollte hier lediglich sicherstellen, dass ich nichts übersehen habe. :)

    Ja, schlechte Angewohnheiten wird man dann besonders schlecht los, wenn man sie schon lange hat. :)
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Das hat nichts mit schlechten Angewohnheiten zu tun.

    Ein Werkzeug soll den Benutzer dort unterstützen, wo es geht. Da nützt es nichts, wenn Du in die theoretische Informatik abtauchst und mir erklärst was Entitäten und Entitätstypen sind, um mir zu erklären, wie toll der theoretische Ansatz hier in der Realität verfolgt wird.

    Deine Verwendung von Singletons als Ersatz von Klassenattributen folgt sicher auch nicht der reinen Lehre. Hier wird das Singleton-Pattern für etwas benutzt, für das es nicht gedacht war. Ok. Damit habe ich kein Problem.

    Was ich gerne wissen will (hatte ich oben auch schon mal als Beispiel gebracht):
    Wie macht Objective-C die Instanzzählerei mit den Befehlen retain und release. Wird da intern ein Array geführt mit den Referenzen und einem Zähler? Oder hängt der Zähler an der (Meta-)Klasse?
  • Original von Metro
    Das hat nichts mit schlechten Angewohnheiten zu tun.

    Ein Werkzeug soll den Benutzer dort unterstützen, wo es geht. Da nützt es nichts, wenn Du in die theoretische Informatik abtauchst und mir erklärst was Entitäten und Entitätstypen sind, um mir zu erklären, wie toll der theoretische Ansatz hier in der Realität verfolgt wird.

    Deine Verwendung von Singletons als Ersatz von Klassenattributen folgt sicher auch nicht der reinen Lehre. Hier wird das Singleton-Pattern für etwas benutzt, für das es nicht gedacht war. Ok. Damit habe ich kein Problem.

    Was ich gerne wissen will (hatte ich oben auch schon mal als Beispiel gebracht):
    Wie macht Objective-C die Instanzzählerei mit den Befehlen retain und release. Wird da intern ein Array geführt mit den Referenzen und einem Zähler? Oder hängt der Zähler an der (Meta-)Klasse?

    Na ja, falsche Modellierung führt früher oder später zu Problemen. Aber sei es drum.

    Nein, es werden nicht die Referenzen gehalten, sondern lediglich ein Zähler benutzt. Der wird bei +alloc und -copy mit 1 initialisiert und mit -retain erhöht mit -release (einschl. autorelease) um eins vermindert.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?