Mi enfoque. El núcleo es el motor.

 

En este hilo, quiero hablar de mi enfoque de la programación. Se advierte de antemano que aquí no se hablará de la interfaz gráfica de usuario. Si alguna vez hablo de ello, será sólo como ejemplo de cómo funcionan mis soluciones.

Al principio, la OOP estaba clara para mí, e incluso cerca. Sabía lo que era "Objeto", "Estructura", "Clase" en un contexto filosófico. Profundizar en la programación de la filosofía me atrajo mucho y despertó mi interés. Y casi me pongo a estudiar en serio... Pero, en el proceso, sentí una creciente resistencia. Un rechazo a la filosofía de los demás. Y ese rechazo fue creciendo.

Estoy acostumbrado a pensar de forma filosófica desde que era un niño. Y encontré la filosofía en la programación. En un momento dado, me gustó. Pero, mi pensamiento buscaba invariablemente romper el concepto de otro. Para derrotarlo. ¿Para hacer qué? - Para derrotar y establecer mi propio orden.

Durante siglos, los conceptos filosóficos han estado en guerra entre sí. Y para mí, como filósofo nato, el concepto de OLP se ha convertido en un reto personal.


Pero, eso es sólo una prehistoria.

Y así, todo comenzó hace casi 4 años.

Por aquel entonces, con un estilo procedimental sencillo, creaba paneles. Y se me ocurrió la idea de combinar las propiedades de los objetos gráficos en un array. Pensé que sería conveniente. ¿Para hacer qué?

  1. Para recorrer los objetos y cambiar sus propiedades.
  2. Para unir objetos.
  3. Para obtener los valores de las propiedades del objeto mediante un simple acceso al array.

Así nació la idea del "núcleo".

En la POO no existe el concepto de "núcleo". La POO ofrece construir un conjunto de clases y estructuras, pero no da el centro real del programa. Sólo una condicional. Los objetos en la POO son, de hecho, referencias. Medios de descripción y claves de acceso. El conjunto de clases se asemeja a una red compleja no centralizada. La POO se basa en la construcción de la arquitectura de un programa. ES DECIR, LA CONSTRUCCIÓN DE LA ARQUITECTURA CORRECTA DEL PROGRAMA ES EL OBJETIVO PRINCIPAL DE OOP.

Mi enfoque, también tiene nociones de Objeto. Sin embargo, el "Objeto" en mi enfoque, es mucho más real. Es un conjunto de propiedades. Al hacerlo, mi enfoque ignora la importancia de la Arquitectura específica del programa. La arquitectura se ha creado en función de los requisitos de eficacia del programa, no de la comodidad del programador. Esto simplifica la sintaxis y reduce el número de reglas.

En la Naturaleza, el concepto de núcleo está presente en todas partes. Cada célula de un organismo tiene un núcleo. Los cuerpos celestes tienen un núcleo. La Tierra, el Sol. En el fruto de las plantas hay un núcleo que da lugar a nuevas plantas. Y NUNCA en la Naturaleza, la Arqueología se sitúa por encima de la Eficiencia. Por tanto, la Naturaleza no crea líneas rectas y los seres vivos no están hechos de bloques. Pero, el Hombre es más débil que la Naturaleza y necesita esquemas memorables, ordenación, clasificación. El hombre percibe el mundo en fragmentos y lo reproduce también en fragmentos.

El concepto de OOP refleja muy bien la naturaleza humana.

Pero, volviendo a mi enfoque:

  • Así, un OBJETO es un conjunto de propiedades.
  • El núcleo es el espacio de memoria en el que existen los objetos.

En la práctica, - El núcleo es una matriz. Un objeto es un vector.

Una matriz puede contener muchos vectores. Y este es el límite de las reglas básicas de mi enfoque. A continuación, mostraré ejemplos de lo que se puede hacer con él.







 
Inmediatamente una pregunta: ¿dónde está el código abierto?
 
Vladimir Karputov:
Inmediatamente una pregunta: ¿dónde está el código abierto?

Voy a publicar el código y los ejemplos. Esto es un prefacio.

 
Реter Konow:

Voy a publicar el código y los ejemplos. Esto es un prefacio.

¿Código abierto?

 

¡Allí! Venga Pedro, a mí también me interesa tu planteamiento, incluso sin códigos (Vladimir, no molestes al hombre, que lo escuchemos antes).

 
Más agua en un cubo
 

Tengo una sensación de déjà vu.

Pero como no hay mucho que leer en este momento, otro tema de Pedro servirá.

 

Zhenya, Vasya, sois impacientes... Deja que el hombre opine.

 
Georgiy Merts:

Zhenya, Vasya, sois impacientes... ¡Deja que el hombre opine!

Bueno, por qué la impaciencia. Ya te digo que es todo un tema, aunque probablemente esta conversación la intente liderar Pedro en todas las polémicas en las que participa.

 

Un ejemplo de declaración de un elemento gráfico representado en el 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. Declaración de elementos - _OBJECTS_SET,BUTTON,


2. declaración de un objeto dentro de un artículo:_NEW_OBJECT

A continuación, después de declarar el objeto hay valores de propiedad. Dimensiones, colores para los diferentes estados, unión de objetos entre sí...


Todo ello es un prototipo de un elemento: el botón.

Este prototipo se escribe en el Kernel en la fase de construcción. Luego se lee el archivo del constructor y sobre estos valores se escriben los valores del usuario.

Lo principal es la forma de representación de elementos y objetos en mi enfoque. Es tabular. Esto nos permite comprimir los datos de los objetos y hacer caber muchas propiedades en un espacio reducido. Si esto se escribe de acuerdo a las reglas OOP, se convertiría en un gran lío.




 
Реter Konow:

En la POO no existe el concepto de "núcleo". La POO sugiere construir un conjunto de clases y estructuras, pero no da el centro real del programa...

La POO es una metodología muy flexible, por lo que carece de ideas a priori como el concepto de "núcleo". Sin embargo, con la POO se puede construir muy bien el modelo de núcleo en cuestión aquí. Por tanto, la afirmación no es del todo correcta.