Minha abordagem. O núcleo é o motor.

 

Neste tópico, quero falar sobre minha abordagem da programação. Seja avisado com antecedência - aqui não haverá discussão sobre a GUI. Se alguma vez eu falar sobre isso, será apenas como um exemplo de como minhas soluções funcionam.

No início, o OOP foi claro para mim, e até perto disso. Eu sabia o que eram "Objeto", "Estrutura", "Classe" em um contexto filosófico. O aprofundamento da programação em filosofia realmente me atraiu e despertou meu interesse. E eu quase iniciei um estudo sério... Mas, no processo, eu senti uma resistência crescente. Uma rejeição da filosofia de outras pessoas. E essa rejeição estava crescendo.

Estou acostumado a pensar filosoficamente desde que eu era criança. E eu encontrei a filosofia na programação. A certa altura, eu gostei. Mas, meu pensamento invariavelmente procurava quebrar o conceito de outra pessoa. Para derrotá-la. Para fazer o que? - Para derrotar e estabelecer minha própria ordem.

Durante séculos, os conceitos filosóficos têm estado em guerra uns com os outros. E para mim, como filósofo nato, o conceito de OLP se tornou um desafio pessoal.


Mas, isso é apenas uma pré-história.

E assim, tudo começou há quase 4 anos.

Naquela época, em estilo de procedimento simples, eu estava criando painéis. E eu tive a idéia de combinar as propriedades dos objetos gráficos em uma matriz. Pensei que seria conveniente. Para fazer o que?

  1. Para percorrer os objetos e alterar suas propriedades.
  2. Para unir objetos.
  3. Para obter os valores das propriedades do objeto através do simples acesso à matriz.

Foi assim que nasceu a idéia do "núcleo".

No OOP, não existe o conceito de "kernel". OOP oferece a construção de um conjunto de classes e estruturas, mas não dá o centro real do programa. Apenas um condicional. Os objetos no OOP são, de fato, referências. Meios de descrição e chaves de acesso. O pacote de classes se assemelha a uma rede complexa não centralizada. O OOP está fundamentado na construção da arquitetura de um programa. OU SEJA, CONSTRUIR A ARQUITETURA CORRETA DO PROGRAMA É O OBJETIVO PRINCIPAL DA OOP.

Minha abordagem, também tem noções de Objeto. Entretanto, o "Objeto" em minha abordagem, é muito mais real. É um conjunto de propriedades. Ao fazer isso, minha abordagem ignora a importância da Arquitetura específica do programa. A arquitetura é montada de acordo com as exigências de eficiência do programa, não de conveniência do programador. Isto simplifica a sintaxe e reduz o número de regras.

Na Natureza, o conceito do grão está presente em todos os lugares. Cada célula de um organismo tem um núcleo. Os corpos celestiais têm um núcleo. A Terra, o Sol. Há um núcleo no fruto das plantas que dá origem a novas plantas. E NUNCA na Natureza, o Arquétipo é colocado acima da Eficiência. Portanto, a Natureza não cria linhas retas e os seres vivos não são feitos de blocos. Mas, o Homem é mais fraco que a Natureza e precisa de esquemas memoráveis, arranjo, classificação. O homem percebe o mundo em fragmentos e o reproduz também em fragmentos.

O conceito de OOP reflete muito bem a natureza humana.

Mas, voltando à minha abordagem:

  • E assim, um OBJETO é um conjunto de propriedades.
  • O kernel é o espaço de memória no qual os Objetos existem.

Na prática, - O núcleo é uma matriz. Um objeto é um vetor.

Uma matriz pode conter muitos vetores. E este é o limite das regras básicas da minha abordagem. A seguir, vou mostrar exemplos do que pode ser feito com ele.







 
Uma pergunta imediata: onde está o código fonte aberto?
 
Vladimir Karputov:
Uma pergunta imediata: onde está o código fonte aberto?

Vou postar o código e os exemplos. Este é um prefácio.

 
Реter Konow:

Vou postar o código e os exemplos. Este é um prefácio.

Código fonte aberto?

 

Lá ! Vamos Peter, estou interessado em sua abordagem também, mesmo sem nenhum código (Vladimir, não incomode o homem, vamos ouvi-lo primeiro).

 
Mais água em um balde
 

Eu tenho uma sensação de déjà vu.

Mas como não há muito o que ler no momento, outro tópico de Peter servirá perfeitamente.

 

Zhenya, Vasya, você está impaciente... Deixe que o homem tenha sua palavra !

 
Georgiy Merts:

Zhenya, Vasya, você está impaciente... Que o homem tenha sua opinião!

Bem, por que a impaciência. Eu lhes digo - é um tema e tanto, embora esta conversa Peter esteja provavelmente tentando levar cada polêmica onde ele participa.

 

Um exemplo de uma declaração de um elemento gráfico representado no 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. Declaração dos elementos - _OBJECTS_SET,BUTTON,


2. Declaração de um objeto dentro de um item:_NEW_OBJECT

Em seguida, após a declaração de Objeto, há valores de propriedade. Dimensões, cores para os diferentes estados, ligação entre objetos...


Tudo isso junto é um protótipo de um elemento - Botão.

Este protótipo está escrito no Kernel na fase de construção. Em seguida, o arquivo do construtor é lido e sobre esses valores, os valores do usuário são escritos.

O principal é a forma de representação de Elemento e Objeto em minha abordagem. É tabular. Isto nos permite comprimir os dados do objeto e encaixar muitas propriedades em um espaço pequeno. Se isto for escrito de acordo com as regras do OOP, se tornaria uma enorme bagunça.




 
Реter Konow:

No OOP, não existe o conceito de "kernel". O OOP sugere a construção de um conjunto de classes e estruturas, mas não dá o centro real do programa...

O OOP é uma metodologia muito flexível, de modo que lhe falta qualquer idéia a priori como o conceito de "kernel". Entretanto, com o OOP você pode muito bem construir aqui o modelo de núcleo em questão. Portanto, a afirmação não é totalmente correta.