Il mio approccio. Il nucleo è il motore. - pagina 135

 
Реter Konow:

Lì c'è un problema diverso. La limitazione degli elementi di base e dei parametri. So quale dovrebbe essere la soluzione. Non ho ancora avuto la possibilità di farlo.

Ecco perché lo chiedo. Se hai 21 corde cucite nel kernel, non è molto buono e non puoi semplicemente aggiustarlo.

Reg Konow:

No. È codice esterno scritto per il costruttore. Questo riproduce la tabella. Poi clicco sul pulsante e tutti i file di connessione e il kernel di avvio del motore vengono stampati. Allora tutto funziona.

Da quanto ho capito è un autogeneratore che genera il codice di autoconnessione più parte del codice del kernel. Questa è una soluzione interessante.

 
Vasiliy Sokolov:

Non l'ho ancora testato.

Per me funziona. Ma sembra esserci un problema con la chiusura di una riga quando viene attivato uno stop. A volte la fila rimane. Questo è un problema di rilevamento degli ordini chiusi nel codice che ho scritto. Il tavolo non c'entra niente.

 
Vasiliy Sokolov:

1. Ecco perché lo chiedo. Se hai 21 linee nel kernel, non va bene e non puoi semplicemente aggiustarlo.

2. Ho capito che è un autogeneratore che genera il codice di autoconnessione più parte del codice del kernel. Soluzione interessante.

1. Esattamente. Un numero limitato di elementi può essere prescritto nel costruttore. Di conseguenza, una tabella dinamica deve consistere in un numero limitato di righe, ma allo stesso tempo essere illimitata. La soluzione è solo quella di creare array speciali per i parametri aggiunti e scorrere i loro valori attraverso le celle della tabella.

2. Sì. Il costruttore crea il kernel per il motore in base al codice che hai citato. + stampa i file di connessione. Poi, ho messo il kernel nel motore (DRIVE). Dopo di che, il motore può riprodurre la GUI desiderata. I file di interfaccia si connettono all'EA e iniziano a interagire con esso.

 

Per non essere infondato, vi darò infine un esempio del "kernel" stesso. Più precisamente, è un file di avvio. Ci sono diversi kernel.

Vi ricordo che viene stampato automaticamente, in base al codice KIB. Poi messo nel motore. Inoltre, il motore funziona con esso.

File:
 
Реter Konow:

Nikolay, parliamo dell'argomento. Prendete la classe CCanvas, per esempio, che ho già trattato. Così, ho eliminato tutte le funzioni da esso. Li ha resi indipendenti dal wrapper della classe. In che modo è peggio ora? È diventato più facile lavorare con loro. Ho fatto un'animazione usando queste funzioni. Prima di questo, non ho quasi mai visto animazioni con questa classe.

Allora perché questo involucro?

Anche tu stai disegnando su una tela. Si potrebbe semplicemente chiamare una funzione specifica e disegnare. Ma no. Avvolgi e avvolgi e avvolgi. Allora spiegami, perché?

Sì, perché è mega conveniente. Ma questo è molto difficile da capire finché non si comincia ad usarlo da soli.
E non è affatto un wrapper, ma un elemento multifunzionale separato, che non è solo comodo da usare nell'editor a causa della visibilità della sua lista di proprietà e parametri, ma anche comodo da modificare e usare in altri programmi come un modulo specifico.
 
Nikolai Semko:
Sì, perché è mega-comodo. Ma è molto difficile da capire fino a quando non si inizia ad usarlo in prima persona.
E non è un wrapper, ma un elemento multifunzionale separato, che non è solo comodo da usare nell'editor a causa della visibilità della sua lista di proprietà e parametri, ma anche comodo da modificare e usare in altri programmi come un modulo specifico.

Non sono in grado di pensare in un modo che mi faccia comodo. Pertanto, non è conveniente per me. Avvolgere, rappresentare l'orientamento dell'oggetto. Classificare quando è necessario e non necessario...

Si ha l'impressione che l'OOP stesso si metta davanti al meccanismo che dovrebbe servire. Cioè, il meccanismo deve tendere all'integrità, quindi al minor numero dei suoi blocchi. Ma OOP costringe questi blocchi a moltiplicarsi per qualsiasi motivo. Il risultato è che la struttura dei meccanismi è a pezzi e non funzionano bene. E si sviluppano anche peggio.


Nikolay, inizia a creare mega-meccanismi (10 volte più grandi della classe Kanvas), e capirai dove e come l'OOP diventa scomoda.

 
Реter Konow:

Non so come pensare in un modo che mi faccia sentire a mio agio. Perciò, per me, è scomodo. Avvolgere, ritrarre l'orientamento degli oggetti. Classificare quando è necessario e non necessario...

Si ha l'impressione che l'OOP stesso si metta davanti al meccanismo che dovrebbe servire. Cioè, il meccanismo deve tendere all'integrità, quindi al minor numero dei suoi blocchi. Ma OOP costringe questi blocchi a moltiplicarsi per qualsiasi motivo. Il risultato è che la struttura dei meccanismi è a pezzi e non funzionano bene. E si sviluppano anche peggio.

Nikolay, inizia a creare mega-meccanismi (10 volte più grandi della classe Kanvas), e capirai dove e come l'OOP diventa scomoda.

Le sue parole dicono solo una cosa:


 
C'era una volta un simpatico programmatore, programmava per se stesso, non conosceva il dolore, era felice, ma era un grande oppositore di OOP.
Gli anni passarono, il nostro programmatore invecchiò, e ora sente che è giunta la sua ora, così chiama i suoi nipoti e parenti e dice:
- Portatemi un portatile, farò un foglio di calcolo usando OOP!
Tutti sono sorpresi e dicono:
- Come mai, hai lavorato tutta la vita sul tuo tablet, senza un OOP. Che cosa è successo?
E il programmatore risponde:
- Farò un foglio di calcolo con OOP, poi morirò e ci sarà un OOP-er in meno.
 
Nikolai Semko:

...

Nikolai, ti è mai venuto in mente che il tuo amore per l'OOP non è giustificato da quasi nulla se non da ragioni astratte?

Diciamo che se tu stessi creando meccanismi giganteschi con questa OOP, sarebbe chiaro perché ne hai bisogno così tanto. Giustifichi specificamente perché hai bisogno di OOP. Ma si creano meccanismi relativamente piccoli. Non c'è abbastanza codice per trarre conclusioni su svantaggi e vantaggi di questo o quell'approccio. Ma tu continui a parlare di OOP comunque. Mentre OOP è solo uno strumento e non ha senso da solo. Cioè se non c'è nessun meccanismo da fare, OOP non è necessario. Ma se c'è un meccanismo, dovrebbe essere abbastanza serio da richiedere OOP durante la sua creazione.

La maggior parte di coloro che si battono per l'OOP non fanno nulla di serio. Fanno solo piccole cose. Tuttavia, la loro fede in OOP è incrollabile. Altri che fanno meccanismi molto più seri sono molto meno propensi a gridare la grandezza di OOP. Alcuni si esprimono anche con critiche (ci sono state un paio di volte).

Quindi, la sua argomentazione deve essere sostenuta dalla pratica, non solo dalla teoria. Io, per esempio, posso discutere dei vantaggi di OOP nello sviluppo di GUI con Anatoly, perché possiamo confrontare le soluzioni e le loro sfumature nella pratica. Ma, con te, non posso dispiegare il mio argomento perché non lo capisci. Lo farai, ma non lo capirai (senza offesa). Anatoly, al contrario, può capirlo molto bene. La differenza di esperienza nella creazione di meccanismi globali è la ragione principale dell'incomprensione.

SZY. Come praticante vi dirò questo: l'approccio deve essere tale da massimizzare il potenziale del cervello di un particolare programmatore. Ho trovato un tale approccio per me stesso.

 
Реter Konow:


Beh, se non pubblico niente di grande non significa che non ho niente di grande. È solo che condivido solo le piccole cose.
Ho anche resistito al paradigma OOP per molto tempo, perché ho imparato a programmare quando OOP non era ancora una cosa. E OOP è stata per me una necessità forzata, quando stavo iniziando a impantanarmi nel codice procedurale di un grande progetto. E mi dispiaceva per il tempo perso nella programmazione procedurale, quando ho capito in pratica tutto il fascino e la potenza di OOP.