Il mio approccio. Il nucleo è il motore.

 

In questo thread, voglio parlare del mio approccio alla programmazione. Siate avvertiti in anticipo - non ci sarà alcuna discussione sulla GUI qui. Se mai ne parlerò, sarà solo come esempio di come funzionano le mie soluzioni.

All'inizio, OOP mi era chiaro, e anche vicino. Sapevo cosa fossero "Oggetto", "Struttura", "Classe" in un contesto filosofico. L'approfondimento della programmazione in filosofia mi piaceva molto e ha acceso il mio interesse. E ho quasi iniziato a studiare seriamente... Ma, nel processo, ho sentito una crescente resistenza. Un rifiuto della filosofia degli altri. E quel rifiuto stava crescendo.

Sono abituato a pensare in modo filosofico da quando ero bambino. E ho trovato la filosofia nella programmazione. A un certo punto, mi piaceva. Ma il mio pensiero cercava invariabilmente di rompere il concetto di qualcun altro. Per sconfiggerlo. Per fare cosa? - Per sconfiggere e stabilire il mio ordine.

Per secoli, i concetti filosofici sono stati in guerra tra loro. E per me, come filosofo nato, il concetto di OLP è diventato una sfida personale.


Ma questa è solo una preistoria.

E così, tutto è iniziato quasi 4 anni fa.

Allora, in semplice stile procedurale, creavo dei pannelli. E mi è venuta l'idea di combinare le proprietà degli oggetti grafici in un array. Ho pensato che sarebbe stato conveniente. Per fare cosa?

  1. Per scorrere gli oggetti e cambiare le loro proprietà.
  2. Per legare insieme degli oggetti.
  3. Per ottenere i valori delle proprietà dell'oggetto con un semplice accesso all'array.

È così che è nata l'idea del "kernel".

In OOP, non esiste il concetto di "kernel". OOP offre di costruire un insieme di classi e strutture, ma non dà il centro effettivo del programma. Solo un condizionale. Gli oggetti in OOP sono infatti dei riferimenti. Mezzi di descrizione e chiavi di accesso. L'insieme delle classi assomiglia a una rete complessa non centralizzata. OOP si basa sulla costruzione dell'architettura di un programma. CIOÈ, COSTRUIRE LA CORRETTA ARCHITETTURA DEL PROGRAMMA È L'OBIETTIVO PRINCIPALE DI OOP.

Il mio approccio ha anche nozioni di Oggetto. Tuttavia, l'"Oggetto" nel mio approccio è molto più reale. È un insieme di proprietà. Così facendo, il mio approccio ignora l'importanza dell'architettura specifica del programma. L'architettura è messa insieme secondo i requisiti dell'efficienza del programma, non della comodità del programmatore. Questo semplifica la sintassi e riduce il numero di regole.

In Natura, il concetto di kernel è presente ovunque. Ogni cellula di un organismo ha un nucleo. I corpi celesti hanno un nucleo. La Terra, il Sole. Nel frutto delle piante c'è un nucleo che dà vita a nuove piante. E MAI in Natura, l'Archectura è posta al di sopra dell'Efficienza. Pertanto, la natura non crea linee rette e gli esseri viventi non sono fatti di blocchi. Ma l'uomo è più debole della natura e ha bisogno di schemi memorabili, disposizioni, classificazioni. L'uomo percepisce il mondo in frammenti e lo riproduce anche in frammenti.

Il concetto di OOP riflette molto bene la natura umana.

Ma torniamo al mio approccio:

  • E così, un OBJECT è un insieme di proprietà.
  • Il kernel è lo spazio di memoria in cui esistono gli oggetti.

In pratica, - Il kernel è una matrice. Un oggetto è un vettore.

Una matrice può contenere molti vettori. E questo è il confine delle regole di base del mio approccio. In seguito, mostrerò degli esempi di ciò che si può fare con esso.







 
Subito una domanda: dov'è il codice open source?
 
Vladimir Karputov:
Subito una domanda: dov'è il codice open source?

Posterò il codice e gli esempi. Questa è una prefazione.

 
Реter Konow:

Posterò il codice e gli esempi. Questa è una prefazione.

Codice open source?

 

Ecco! Dai Peter, anche a me interessa il tuo approccio, anche senza codici (Vladimir, non disturbare l'uomo, sentiamo prima).

 
Più acqua in un secchio
 

Ho una sensazione di déjà vu.

Ma dato che non c'è molto da leggere al momento, un altro argomento di Peter andrà benissimo.

 

Zhenya, Vasya, siete impazienti... Lasciate che l'uomo dica la sua!

 
Georgiy Merts:

Zhenya, Vasya, siete impazienti... Lasciate che l'uomo dica la sua!

Beh, perché questa impazienza. Vi dico - è un bel tema, anche se questa conversazione Peter sta probabilmente cercando di condurre ogni polemica in cui partecipa.

 

Un esempio di dichiarazione di un elemento grafico rappresentato nel Kernel:

_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. Dichiarazione dell'elemento - _OBJECTS_SET,BUTTON,


2. dichiarazione di un oggetto in un elemento:_NEW_OBJECT

Poi, dopo aver dichiarato Object ci sono i valori delle proprietà. Dimensioni, colori per i diversi stati, legame degli oggetti tra loro...


Tutto questo insieme è un prototipo di un elemento - Button.

Questo prototipo è scritto nel Kernel in fase di costruzione. Poi, il file del costruttore viene letto e su questi valori vengono scritti i valori utente.

La cosa principale è la forma di rappresentazione degli elementi e degli oggetti nel mio approccio. È tabellare. Questo ci permette di comprimere i dati dell'oggetto e di inserire molte proprietà in un piccolo spazio. Se questo è scritto secondo le regole OOP, si trasformerebbe in un enorme casino.




 
Реter Konow:

In OOP, non esiste il concetto di "kernel". OOP suggerisce di costruire un insieme di classi e strutture, ma non dà il centro effettivo del programma...

OOP è una metodologia molto flessibile, quindi non ha idee a priori come il concetto di "kernel". Tuttavia, con OOP si può benissimo costruire il modello del kernel in questione. Pertanto, l'affermazione non è del tutto corretta.

Motivazione: