Mein Ansatz. Der Kern ist der Motor.

 

In diesem Thema möchte ich über meine Herangehensweise an die Programmierung sprechen. Seien Sie vorgewarnt - es wird hier keine Diskussion über die grafische Benutzeroberfläche geben. Wenn ich jemals darüber spreche, dann nur als Beispiel dafür, wie meine Lösungen funktionieren.

Am Anfang war OOP für mich klar, und sogar nahe dran. Ich wusste, was "Objekt", "Struktur" und "Klasse" in einem philosophischen Kontext bedeuten. Die Vertiefung der Programmierung in die Philosophie hat mich sehr angesprochen und mein Interesse geweckt. Und ich hätte beinahe ein ernsthaftes Studium aufgenommen... Aber ich spürte dabei einen wachsenden Widerstand. Eine Ablehnung der Philosophie anderer Leute. Und diese Ablehnung wurde immer größer.

Ich bin es seit meiner Kindheit gewohnt, philosophisch zu denken. Und ich habe die Philosophie im Programmieren gefunden. Irgendwann hat es mir gefallen. Aber meine Gedanken waren immer darauf ausgerichtet, das Konzept eines anderen zu durchbrechen. Um sie zu besiegen. Um was zu tun? - Um meine eigene Ordnung zu besiegen und zu etablieren.

Seit Jahrhunderten bekriegen sich die philosophischen Konzepte gegenseitig. Und für mich als geborenen Philosophen ist das PLO-Konzept zu einer persönlichen Herausforderung geworden.


Aber das ist nur eine Vorgeschichte.

Und so begann alles vor fast 4 Jahren.

Damals habe ich im einfachen prozeduralen Stil Panels erstellt. Dabei kam mir die Idee, die Eigenschaften von grafischen Objekten in einem Array zusammenzufassen. Ich dachte, es wäre praktisch. Um was zu tun?

  1. Zum Durchlaufen der Objekte und Ändern ihrer Eigenschaften.
  2. Um Objekte miteinander zu verbinden.
  3. Um die Werte der Objekteigenschaften durch einfachen Zugriff auf das Array zu erhalten.

So wurde die Idee des "Kerns" geboren.

In der OOP gibt es kein Konzept des "Kerns". OOP bietet die Möglichkeit, ein Ensemble von Klassen und Strukturen zu erstellen, gibt aber nicht den eigentlichen Kern des Programms vor. Nur eine bedingte. Objekte in OOP sind in Wirklichkeit Referenzen. Mittel zur Beschreibung und Zugangsschlüssel. Das Klassenbündel ähnelt einem komplexen, nicht zentralisierten Netz. OOP basiert auf dem Aufbau der Architektur eines Programms. DAS HEISST, DAS HAUPTZIEL VON OOP IST DER AUFBAU DER RICHTIGEN PROGRAMMARCHITEKTUR.

Bei meinem Ansatz geht es auch um den Begriff des Objekts. Das "Objekt" in meinem Ansatz ist jedoch viel realer. Es handelt sich um eine Zusammenstellung von Eigenschaften. Dabei ignoriert mein Ansatz die Bedeutung der spezifischen Architektur des Programms. Die Architektur wird nach den Anforderungen der Programmeffizienz und nicht nach der Bequemlichkeit des Programmierers zusammengestellt. Dadurch wird die Syntax vereinfacht und die Anzahl der Regeln reduziert.

In der Natur ist das Konzept des Kerns überall präsent. Jede Zelle eines Organismus hat einen Zellkern. Die Himmelskörper haben einen Kern. Die Erde, die Sonne. In den Früchten der Pflanzen befindet sich ein Kern, aus dem neue Pflanzen hervorgehen. Und NIEMALS wird in der Natur die Archäologie über die Effizienz gestellt. Deshalb schafft die Natur keine geraden Linien, und Lebewesen sind nicht aus Blöcken gemacht. Aber der Mensch ist schwächer als die Natur und braucht einprägsame Schemata, Arrangements und Klassifizierungen. Der Mensch nimmt die Welt in Bruchstücken wahr und reproduziert sie auch in Bruchstücken.

Das Konzept der OOP spiegelt die menschliche Natur sehr gut wider.

Aber zurück zu meinem Ansatz:

  • Ein OBJEKT ist also eine Ansammlung von Eigenschaften.
  • Der Kernel ist der Speicherbereich, in dem die Objekte existieren.

In der Praxis: - Der Kernel ist eine Matrix. Ein Objekt ist ein Vektor.

Eine Matrix kann viele Vektoren enthalten. Und dies ist die Grenze der Grundregeln meines Ansatzes. Als Nächstes werde ich Beispiele zeigen, was man damit machen kann.







 
Sofort eine Frage: Wo ist der offene Quellcode?
 
Vladimir Karputov:
Sofort eine Frage: Wo ist der offene Quellcode?

Ich werde den Code und die Beispiele veröffentlichen. Dies ist ein Vorwort.

 
Реter Konow:

Ich werde den Code und die Beispiele veröffentlichen. Dies ist ein Vorwort.

Offener Quellcode?

 

So! Komm schon Peter, ich bin auch an deinem Ansatz interessiert, sogar ohne Codes (Vladimir, störe den Mann nicht, lass es uns zuerst hören).

 
Mehr Wasser in einem Eimer
 

Ich habe ein Déjà-vu-Gefühl.

Aber da es im Moment nicht viel zu lesen gibt, ist ein anderes Thema von Peter genau das Richtige.

 

Schenja, Wasja, du bist ungeduldig... Lassen Sie den Mann zu Wort kommen!

 
Georgiy Merts:

Schenja, Wasja, du bist ungeduldig... Lassen Sie den Mann zu Wort kommen!

Nun, warum die Ungeduld. Ich sage Ihnen, das ist ein sehr interessantes Thema, auch wenn Peter wahrscheinlich versucht, jede Polemik, an der er teilnimmt, zu führen.

 

Ein Beispiel für die Deklaration eines im Kernel dargestellten grafischen Elements:

_OBJECTS_SET,BUTTON,
//------------T------X----Y----W-----H----B_TYPE-- MOB---PXL-----------G------------C----SG--SC--OBJSCR--NEUTRAL----GRADIENT--A1--B1--C1-----------A2----B2--C2----------A3----B3--C3--------A4--B4--C4-------OBH--OBI--C5--D5--E5--------------------------------------------------------------------------------------------------------------ACT-STATUS--CURRENT-----CURRENT---LAST--------------------------------------------
//Основание кнопки--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_NEW_OBJECT,  5,     0,   0,   100,  25,  _STRIP, _CNVS, 1,  _aw1,BUTTON,   0,_MOB,    0,    _aw1, C'245,245,245',  FR_32,  _C2C,_CNVS, 0,  FR_33,  _C2C,_CNVS, 0,   FR_32, 0,    0,   0,   A4, 0, 0,  0,    A5,0,  0,  0,  0,  0,   A6,  0,    A7, 0,       0,        0,        0,        0,       FR_32,        FR_33,       0,      0,       0,       0,         0,         0,       0,       0,   A8,  0,  0,  0,  

             A9, CLICKED_RELEASED, C'230,230,230',  0,  _C_PIXEL,  _C_PIXEL,    _C_PIXEL,    _C_PIXEL,    C'245,245,245',   _PL_END,
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Лейбл кнопки--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_NEW_OBJECT,  5,     0,    0,   0,  0, _LABEL, _CNVS,  0,  _aw3,BUTTON,  _EL,   0,   0,    _aw1, _NS_gr1,   A1, _X2X, _aw1,   7,   A2,  _C2C,  _aw1,  0,  A3,  0,    0,   0,   A4,  0, 0,  0,      A5,0,0, _aw1,  0,  0,   A6,  0,    A7,0,    0,        0,        0,        0,        0,        0,    0,      0,       0,       0,         0,         0,       0,       0,   A8,  0,  0,  0,  

             A9, 0, 0,   0, 0,   0,  0,    0,    0,  0,  0,  0,  0,  0,  0,     _PL_END,
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Текст наименования кнопки --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_NEW_OBJECT,  5,     0,   0,    0,  0,  _TEXT_, _CNVS,  0,  _aw2,BUTTON,_OCN,   0,    0,    _aw1, 0,     A1,  _C2C,_aw1,  0,   A2, _C2C,_aw1, 0,     A3,  0,    0,   0,   A4,  0, 0,  0,    A5,0,  0,  0,  0,  0,  A6,  0,  A7, 0,       0,        0,        0,        0,        0,        0,        0,      0,       0,       0,         0,         0,       0,       0,   A8,  Microsoft_JhengHei_Light, FW_NORMAL,  8,   

             A9, 0, 0,  0, C'100,100,100',   C'100,100,100',  0,    0,    0,  0,  0,  0,  0,  0,  0,   2,1,1,   1,0,  _PL_END,
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
_END_,

  1. Elementdeklaration - _OBJECTS_SET,BUTTON,


2. Deklaration eines Objekts innerhalb eines Elements:_NEW_OBJECT

Nach der Deklaration von Object folgen die Eigenschaftswerte. Abmessungen, Farben für verschiedene Zustände, Bindung der Objekte aneinander...


All das zusammen ist der Prototyp eines Elements - Button.

Dieser Prototyp wird in der Konstruktionsphase in den Kernel geschrieben. Dann wird die Datei des Konstruktors gelesen und über diese Werte werden die Benutzerwerte geschrieben.

Die Hauptsache ist die Form der Element- und Objektdarstellung in meinem Ansatz. Sie ist tabellarisch. Dadurch können wir die Objektdaten komprimieren und viele Eigenschaften auf kleinem Raum unterbringen. Wenn dies nach den OOP-Regeln geschrieben wird, würde es zu einem riesigen Durcheinander werden.




 
Реter Konow:

In der OOP gibt es kein Konzept des "Kerns". OOP schlägt den Aufbau eines Ensembles von Klassen und Strukturen vor, gibt aber nicht das eigentliche Zentrum des Programms vor...

OOP ist eine sehr flexible Methodik, so dass es keine a priori Ideen wie das Konzept des "Kernels" gibt. Mit OOP können Sie jedoch sehr wohl das hier in Frage stehende Kernelmodell erstellen. Die Aussage ist also nicht ganz richtig.