내 접근 방식. 코어 - 엔진.

 

이 스레드에서는 프로그래밍에 대한 접근 방식에 대해 이야기하고 싶습니다. 미리 경고합니다. GUI에 대한 논의는 없을 것입니다. 내가 그것에 대해 이야기한다면 내 솔루션 작업의 예 로만 .

처음에는 OOP가 이해하기 쉽고 가까웠습니다. 나는 철학적 맥락에서 "객체", "구조", "클래스"가 무엇인지 알고 있었습니다. 나는 철학에 대한 프로그래밍의 심화와 관심을 불러일으키는 것을 정말 좋아했습니다. 그리고 본격적으로 공부를 할 뻔 했는데... 그런데 그 과정에서 저항이 커지는 걸 느꼈어요. 다른 사람의 철학을 거부합니다. 그리고 이 분노는 커져만 갔다.

나는 어린 시절부터 철학적으로 생각하는 데 익숙했습니다. 그리고 프로그래밍에서 철학을 찾았습니다. 어느 순간 그녀가 마음에 들었다. 그러나 내 생각은 항상 다른 사람의 개념을 깨뜨리려고했습니다. 그녀와 싸워라. 무엇을 위해? - 승리하고 주문을 확립하십시오.

태곳적부터 철학적 개념은 서로 "싸웠다". 그리고 타고난 철학자인 저에게 OOP의 개념은 개인적인 도전이 되었습니다.


그러나 이것은 미리보기일 뿐입니다.

그리고 모든 것이 거의 4년 전에 시작되었습니다.

그런 다음 간단한 절차 스타일로 패널을 만들었습니다. 그리고 그래픽 개체의 속성을 하나의 배열로 결합하는 아이디어를 얻었습니다. 편리할 거라 생각했습니다. 무엇을 위해?

  1. 개체를 반복하고 속성을 변경합니다.
  2. 개체를 서로 연결합니다.
  3. 단순히 배열에 액세스하여 개체 속성 값을 검색합니다.

이것이 "코어"의 아이디어가 탄생한 방법입니다.

OOP에는 "커널"이라는 개념이 없습니다. OOP는 클래스와 구조의 앙상블을 구축할 것을 제안하지만 프로그램의 실제 중심을 제공하지는 않습니다. 조건부만. OOP의 객체는 실제로 참조입니다. 설명 및 액세스 키 수단. 많은 클래스는 복잡한 분산 네트워크와 유사합니다. OOP는 프로그램의 아키텍처를 구축할 때 더욱 강화되었습니다. 즉, 올바른 프로그램 아키텍처를 구축하는 것이 OOP의 주요 목표입니다.

내 접근 방식에는 개체 개념도 있습니다. 그러나 내 접근 방식의 "객체"는 훨씬 더 유형적입니다. 이것은 속성의 집합입니다. 그렇게 함으로써 내 접근 방식은 특정 프로그램 아키텍처의 중요성을 무시합니다. 아키텍처는 프로그래머의 편의가 아닌 프로그램의 효율성 요구 사항에 따라 형성됩니다. 이것은 구문을 단순화하고 규칙의 수를 줄입니다.

자연에서 코어의 개념은 어디에나 존재합니다. 신체의 모든 세포에는 핵이 있습니다. 천체에는 핵이 있습니다. 지구에서 태양. 커널은 새로운 식물이 나타나는 식물의 열매에 있습니다. 그리고 자연의 어느 곳에서나 건축은 효율성보다 우선시됩니다. 따라서 자연은 직선을 만들지 않으며 생물은 블록으로 구성되지 않습니다. 그러나 사람은 자연보다 약하고 기억에 남는 계획, 배열, 분류가 필요합니다. 사람은 세계를 조각으로 인식하고 조각에서도 재생산합니다.

OOP의 개념은 인간의 본성을 잘 반영하고 있습니다.

그러나 내 접근 방식으로 돌아갑니다.

  • 따라서 OBJECT는 속성의 집합입니다.
  • Core는 Object가 존재하는 메모리 공간입니다.

실제로, - 코어는 매트릭스입니다. 객체는 벡터입니다.

행렬에는 많은 벡터가 포함될 수 있습니다. 그리고 이것은 내 접근 방식의 기본 규칙의 경계입니다. 다음으로, 이를 사용하여 수행할 수 있는 작업의 예를 보여 드리겠습니다.







 
즉시 질문은 다음과 같습니다. 오픈 소스는 어디에 있습니까?
 
Vladimir Karputov :
즉시 질문은 다음과 같습니다. 오픈 소스는 어디에 있습니까?

코드와 예제를 게시하겠습니다. 이것은 서문입니다.

 
Реter Konow :

코드와 예제를 게시하겠습니다. 이것은 서문입니다.

오픈 소스?

 

에! 자, Peter, 나도 당신의 접근 방식에 관심이 있습니다. 코드가 없어도 (블라디미르, 사람 귀찮게하지 말고 먼저 들어 보자).

 
다시 모르타르에 물
 

데자뷰가 느껴집니다.

하지만 그때부터 이제 읽을 특별한 것이 없습니다. Peter의 다음 주제는 괜찮을 것입니다.

 

Zhenya, Vasya, 당신은 참을성이 없습니다... 남자가 말하게 하십시오!

 
Georgiy Merts :

Zhenya, Vasya, 당신은 참을성이 없습니다... 남자가 말하게 하십시오!

아니, 왜 참을성이 없어. Peter는 그가 이 대화에 참여하는 모든 논쟁을 꺼내려고 노력하고 있지만 꽤 주제입니다.

 

Core에 표시된 그래픽 요소 선언의 예:

_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. 요소 선언: _OBJECTS_SET,BUTTON,


2. 요소 내에서 개체 선언 - _NEW_OBJECT

또한 Object 선언 후 속성 값이 있습니다. 크기, 다양한 상태의 색상, 개체 간의 바인딩...


이 모든 것이 하나의 요소인 버튼의 프로토타입입니다.

이 프로토타입은 빌드 단계에서 Core에 작성됩니다. 그런 다음 생성자 파일을 읽고 이 값 위에 사용자 정의 값을 씁니다.

가장 중요한 것은 내 접근 방식에서 Element와 Object의 표현 형식입니다. 그녀는 표 형식입니다. 이를 통해 개체 데이터를 압축하고 작은 공간에 많은 속성을 맞출 수 있습니다. OOP 규칙에 따라 작성하면 거대한 발보로 변합니다.




 
Реter Konow :

OOP에는 "커널"이라는 개념이 없습니다. OOP는 클래스와 구조체의 앙상블을 구축할 것을 제안하지만 프로그램의 실제 중심을 제공하지 않습니다...

OOP는 매우 유연한 방법론이므로 "코어" 개념과 같은 선험적 아이디어가 없습니다. 그러나 OOP를 사용하면 여기에서 논의되는 커널 모델을 아주 잘 구축할 수 있습니다. 따라서 그 진술은 완전히 정확하지 않습니다.

사유: