본문 바로가기
프로그래머

비 전공자 개발자 되기 - 03. 추상화 훈련

by kaosoft 2023. 1. 6.

호랑이, 여우, 사슴, 고양이, 개는 동물이다.

고양이, 개는 가축이다. 그러면서도 동물이다.

 Line, Polyline, Circle, Rectangle은 모두 Curve이다. [공학도용 예재]

추상화란 도메인의 복잡성을 단순화하고 직관적인 메타 모델을 만드는 데 사용할 수 있는 가장 기본적인 인지 수단이다.  

조금 풀어서 이야기해보자. 세상만사는 객체(오브젝트)이고 특성을 공유하는 객체들을 동일한 타입으로 분류하는 것은 일종의 추상화다.  위의 동물이란 그룹은 동물의 특성을 가지고 있다는 것이고, 동물, 가축은 집합에서 포함관계가 있다. 이런 특성을 가진다는 것은(동물은 움직이는 특징을 가졌는데)  모든 동물을 후려쳐서 "움직이는 것"이라고 간략화하는 것을 추상이다라고 할 수 있다. 또한 메타모델이라는 것은 "움직이는 것"이라는 특징으로 우리는 말, 사자 등을 동물로 만들어 낼 수도 있다는 것이다. 잘 이해 안 되더라도 그냥 넘어가시길, 하다 보면 알게 된다. 

더해서 우리는 "행위"자체도 추상화가 가능하다. 즉 행위의  객체(오브젝트) 화다. "꽥꽥", "꼬끼오", "부엉부엉", "멍멍" 등은 어떤 추상을 가지고 있는가? 맞다 울음이라는 행위 추상을 가지고 있다. 이제 개발에 있어 모든 행위, 객체 외에 또 다른 어떤 개념이든 모든 사물의 추상화를 염두에 두어야 한다.

개발을 할때 데이터 모델링이라는 게 자주 등장하는데 데이터를 모델링하는 데 있어서 어떤 산업, 업무(즉 도메인)에 가서 업무담당자와 추상화시키는 작업을 하는 것이다. 이 말을 깊이 새겨 두어야 한다. 언젠가 이것이 맘에 와닿길 바란다.

사물과 행위와 관계를 간추리고 요약하고 추상으로 끌어올리는 능력을 기른다 (AI 인공지능 DALL-E가 그린 그림)

김연아, 박지성, 손흥민은 많은 훈련을 해왔다. 개발자 훈련이라는 것은 추상화 훈련을 언제 어디서든 모든 사물과 행위와 개념들로 해볼 수 있다. 

추상화는 때로 쓸데없는 것을 생략해 버리는 것도 포함된다.

한 사람을 추상화해서 표현해 보면 재미있을 것 같은 생각이 든다. 어떤 사람이 하루종일 하는 생각과 행동이 다양해 봤자 얼마나 다양할까, 결국 사람도 추상화하면 일정 용량을 벗어나진 못할 것이다. 이런 패턴을 뽑아내고 행위를 분석한다면 추상화 훈련에 도움을 줄 것이다. 요즈음은 AI가 발달해서 이런 건 쉬운 일이기도 하다. 자신을 추상화해 보는 걸 추천한다. 외형부터 행동까지 하루라는 시간 단위, 혹은 살아왔던 날들을 써 내려가 보면 프로그래밍 추상화 훈련이상의 자기 객관화가 생길지도 모르겠다.

요약해 보면, 사물, 행위, 그 관계들을 간추리고 요약하고 추상으로 끌어올리는 일련의 작업을 우리는 모델링이라고 한다.

 

 

 

 

 

 

 

 

 

 

 

 

댓글