Ein neuer Ansatz

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Kevin K. schrieb:

    Pointer-Programmierung wie in C wird prinzipiell auch möglich sein, nur eher im Hintergrund, denn ich habe mir da ein gutes Verfahren ausgedacht:
    Bei einer Variablenübergabe an eine Funktion geht die IDE automatisch von schreibgeschützten (const) Referenzen (&) auf Objekte aus. Hierzu muss der Funktion nur ein Zeiger auf den Speicherbereich, an dem das Objekt liegt, mitgegeben werden (Aufwand: Kopieren eines Prozessorwortes, i.d.R. 32 Bit auf einem 32Bit Prozessor). Da die Variable schreibgeschützt ist, können auch problemlos Literale und Konstanten übergeben werden, da diese aus Prinzip nicht verändert werden dürfen. Diese Konvention deckt denke ich mal 70-80% aller Parameterübergaben ab. Wenn der Programmierer unbedingt eine Kopie oder eine schreibbare Referenz haben möchte, gibt er dies explizit an. Desweiteren werden Objekte die weniger oder genau so groß sind wie die Wortbreite des Prozessors, wie zB. Ganzzahlen, direkt auf den Stack geschrieben, was auch der üblichen Konvention entspricht, da sie eh nicht als dynamische Objekte behandelt werden, sondern nur zur Übergabe von Einzelwerten benutzt werden.

    Schau dir hierzu doch mal Wertparameter (call by value) [de.wikipedia.org/wiki/Wertparameter] und Referenzparameter (call by reference) [de.wikipedia.org/wiki/Referenzparameter] an. Übergibst du einen Zeiger auf ein Objekt sind damit die Eigenschaften des Objektes nicht schreibgeschützt, selbst wenn du die Adresse als Konstante oder Literal übergibst.

    Kevin K. schrieb:

    Die IDE an sich soll sehr modular aufgebaut sein, heißt nur wenige bis gar keine fest eingebauten Konstrukte haben, die Sprache soll von Grund auf aus Erweiterungen bestehen, die man auch selber erstellen kann. Das Allgemeinste was es gibt ist das Objekt. Ein Objekt represetiert einfach nur einen Speicherbereich, der nach einem festgelegten Muster aufgebaut ist, bspw. eine Zahl, eine Funktion, ein String. Auf alle diese Speicherbereiche kann mit bestimmten Funktionen zugegriffen werden, die so oder so als ersten Parameter eine Referenz auf das zu bearbeitende Objekt benötigen, also Methoden. Fertig ist die Objektorientierte Programmierung, die auf alles anwendbar ist, und da auf jeglichen Overhead verzichtet wird, bis er benötigt wird, kann man somit die gleiche Performance erreichen, wie mit einem komplizierten C-Programm, welches nur aus losen Structs und Funktionen besteht.

    Fertig ist die Objektorientierte Programmierung damit noch lange nicht. Siehe dazu de.wikipedia.org/wiki/Objektorientierte_Programmierung. Was ist denn z.B. mit Polymorphie und Vererbung die nun mal zentrale Bestandteile der OOP sind?
  • Marcus Gnaß schrieb:

    [...]
    Schau dir hierzu doch mal Wertparameter (call by value) [de.wikipedia.org/wiki/Wertparameter] und Referenzparameter (call by reference) [de.wikipedia.org/wiki/Referenzparameter] an. Übergibst du einen Zeiger auf ein Objekt sind damit die Eigenschaften des Objektes nicht schreibgeschützt, selbst wenn du die Adresse als Konstante oder Literal übergibst.
    [...]
    Fertig ist die Objektorientierte Programmierung damit noch lange nicht. Siehe dazu de.wikipedia.org/wiki/Objektorientierte_Programmierung. Was ist denn z.B. mit Polymorphie und Vererbung die nun mal zentrale Bestandteile der OOP sind?
    Okay, also zum ersten Punkt, das war keine Feststellung, sondern eine Festlegung. In meinem Modell sind die Objekte, die ohne nähere Angabe übergeben werden, schreibgeschützt. Siehe hierzu (Zitat von vias.org):
    "there is a nice feature in C++, called const, that can make reference parameters just as safe as value parameters."
    Also, der Zugriff auf Eigenschaften des Objektes ist schreibgeschützt. Diese Festlegung wird auch nur gebraucht, um transparent Literale und Konstanten, neben richtigen variablen Objekten, übergeben zu können. Weil ein Call-By-Reference auf ein Literal würde den Compiler in den Selbstmord treiben ;)

    Okay, das zweite ist echt etwas salopp formuliert, das geb ich zu! Ich meinte nur das damit der Grundstein für eine reine Objektorientierte Programmierung gelegt ist. Auf Polymorphie geh ich ein andermal ein, ich hab da auch wieder sehr krasse Ideen, die manchen vielleicht zum Weinen bringen würden ^^. Aber das ist auf jednefall enthalten, eines der wichtigsten Konzepte überhaupt! :)

    Schönen Gruß und ich hoffe ich hab mich jetzt klar genug ausgedrückt.

    Nachtrag:
    "Wikipedia schreibt: Moderne (optimierende) Compiler können bei Übergabe von Wertparametern ermitteln, ob eine Kopie nötig ist und gegebenenfalls darauf verzichten."
    Also okay, dieses Verfahren wird wohl schon angewendet, naja also so ist es wenigstens standardmäßig so.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Kevin K. ()

  • Mir ist neulich das Programm XMind vor die Augen gekommen. Es ist OpenSource & Kostenlos, in der Standardversion, es gibt desweiteren noch eine kostenpflichtige PRO Version, die halt etwas mehr kann. Wenn jemand ne Idee davon bekommen will, wie ich mir meine Programmierumgebung vorstelle, dann kann er sich ja mal XMind ansehen, also es trifft meine Gedanken schon sehr gut, bis halt auf die Tatsache, das XMind, wie der Name schon sagt, für Mindmaps gedacht ist, aber es ist ziemlich praktisch, vielleicht schreibe ich mein Konzept einmal in XMind auf, das wäre ziemlich witizg ;)