"이름은 boss drop 이야. 매뉴얼 읽어서 받는 게 아니라 레벨을 깨야 떨어져."
왜 이 track 이 맨 앞이 아니라 여기야?
교과서라면 이게 1장이지. "시작하기 전에 용어부터 정의한다: Abstraction, Inheritance, Polymorphism, Encapsulation..."
정확히 거꾸로야.
이 quest 를 따라왔으면 표에 있는 도구를 이미 다 썼어. Mob 상속 트리를 추적했고, 같은 동사가 전치사마다 다른 뜻이 되는 걸 가설로 세워 봤고, 아빠가 손자 문장을 한 자리만 바꿔 새 무대에 옮긴 것도 봤어. 맛의 조절판으로 레시피 없이 첫 요리 가설도 세웠고.
그걸 하는 데 정의는 필요 없었어. 정의는 지식이 아니야 — 다 채운 병에 나중에 붙이는 라벨이지.
이 track 은 정리야. 깔끔한 인벤토리 화면. 도구를 늘어놓고 이름을 붙이고, 각각이 뭘 하는지 정확히 알게 되는 순간 — 이미 다 휘둘러 봤으니까.
인벤토리 전체
Abstraction (추상화)
뭐냐: 본질 구조만 남을 때까지 세부를 걷어내는 것.
이미 한 것:
- 영어 phrasal verb 를 root image 와 방향감으로 짚어 보고, 관용으로 굳은 뜻은 용례로 확인
- 레시피를 짠맛 + 단맛 + 기름 + 감칠맛 + 향의 조절판으로 시작하되, 산미와 식감, 온도와 시간을 다시 집어넣음
- 인내에 대한 격언 전부를 "계속 내딛으면 결과가 따라온다" 로 졸임
한 줄로: 거푸집이 아닌 걸 다 걷어내서 거푸집을 찾는 행위.
함정: 너무 걷어내면 신호까지 날아가. "모든 건 연결돼 있다" 는 따지고 보면 맞는 말이지만 실용적으론 쓸모가 없어. 좋은 추상화는 불변식, 그러니까 인스턴스가 바뀌어도 안 바뀌는 부분을 남기고 나머지를 버려. 나쁜 추상화는 쓸 만한 게 하나도 안 남을 때까지 다 버리고.
Inheritance (상속)
뭐냐: 이미 아는 것 위에 새 이해를 얹는 것.
이미 한 것:
- 평지 mob 지식으로 비행 변형을 바로 읽음 (80% 상속)
- 처음 보는 영어 표현을 root verb 에서 물려받아 이해
- 낯선 나라 요리를 다섯 축 조절판으로 먼저 읽고, 산미와 식감처럼 모델 밖의 차이로 고침
- 손자의 2,500 년 된 틀을 요즘 가족 투자에 적용
한 줄로: 누군가 (또는 뭔가) 이미 이런 문제를 풀어 놔서 공짜로 받는 80%.
아빠 공식: parent class 에서 80% 상속 (이미 아는 것) + 새것의 polymorphism 10% (다르게 만드는 것) + 안전하게 덮어 둘 10% (지금 몰라도 되는 것).
함정: 엉뚱한 parent class 에서 상속받기. 그게 Track 9 전체의 얘기야. 지금은 이것만 기억해 — 살려 주는 비빌데가 가두는 우리가 되기도 해.
Polymorphism (다형성)
뭐냐: 같은 뿌리가 맥락에 따라 다른 행동을 만드는 것.
이미 한 것:
- "break" 의 root image 와 전치사 방향감으로 뜻을 짚고, 관용구 반례로 모델의 범위를 좁힘
- 한국, 이탈리아, 일본 요리에서 겹치는 조절 축과 지워지지 않는 차이를 함께 봄
- "계속 내딛어라" 가 나이키, 공자, 노자, 한국 속담의 옷을 입은 걸 봄
- 같은 공격 버튼을 단검으로도, 대검으로도 눌러 봄
한 줄로: 같은 진리가 무대가 다르면 못 알아볼 만큼 달라 보이는 이유 — 그리고 뿌리를 보면 그게 왜 상관없어지는지.
딸린 도구 둘 (Track 3 에서 해금):
Overriding — 코드에서는 물려받은 구현을 자식이 갈아 끼우는 정식 개념이야. 國之大事 → 家族之大事 나 Malenia 의 회복 규칙은 그 구조를 빌려 읽는 비유고, "break a leg" 같은 자연어 관용구는 정식 overriding 이 아니야. 한 줄로: "물려받긴 했는데 이 구현은 다르게 돌아가".
Overloading — 코드에서는 같은 이름을 서로 다른 매개변수 목록에 이어 붙이는 정식 개념이야. "break down" 의 다의성이나 맥락 따라 달라지는 공격 버튼은 닮은 구조를 보는 비유지, 같은 정의는 아니고. 한 줄로: 같은 이름, 구분되는 입력 형태, 다른 구현.
Encapsulation (캡슐화)
뭐냐: 지금 몰라도 되는 것의 뚜껑을 일부러 닫아 두는 것.
이미 한 것:
- 마이야르 반응의 화학을 모른 채로 요리
- 피해 공식을 모른 채로 게임
- 어원 역사를 모른 채로 영어 표현 사용
- path integral 을 "가능한 경로마다의 복소 진폭을 더한다" 는 최소 인터페이스로 다루고, 단순한 확률 합으로 오해하지 않기
한 줄로: Encapsulation 은 뭘 private 으로 둘지 아는 규율이야 — 없어서가 아니라, 상자를 한꺼번에 다 열면 빠져 죽으니까.
•
private = 있는데, 지금은 안 열기로 함•
null = 아예 없음Encapsulation 은 언제나
private 이지 null 이 아냐. "화학 몰라도 돼" 는 지혜, "화학은 안 중요해" 는 오만.함정: 진짜 중요한 걸 덮어 버리기. Malenia 의 회복 메커니즘을 "그냥 어려운 보스" 로 덮으면 죽어. *뭘* 덮어도 되는지 알려면, 그 판단이 될 만큼은 알아야 해. Track 9 에서 다시 다뤄.
Multiple Inheritance 와 Composition
뭐냐: Multiple inheritance 는 한 class 가 둘 이상의 base class 를 직접 상속하는 정식 코드 구조야. 여러 특성을 섞는 행위는 보통 composition 이나 delegation, trait 조합으로 갈라 불러.
이미 한 것:
- 전사 + 마법사 + 탱커 특성을 섞은 게임 빌드는 대개 composition 의 비유
- 주홍 부패를 늪 + 독 + 고유 부패 메커니즘의 합성으로 봄
- 대기 원근법을 미술 + 물리 + 불확실성 + 게임 엔진 렌더링으로 이해
- 아빠가 한 대화 안에서 손자 + 버핏 + 요리 + 게임을 끌어오는 걸 봄
한 줄로: 직접 부모가 둘 이상이면 multiple inheritance, 독립된 부품을 엮으면 composition. 분야를 넘나드는 사고는 둘을 갈라 놓고 나서 비유로 써.
함정: 정식 multiple inheritance 에는 Diamond Problem 처럼 어느 부모 구현을 따를지 충돌하는 문제가 생겨. 현실의 조합을 전부 다중 상속이라 부르면 이 중요한 경계가 흐려져.
Singleton (싱글톤)
뭐냐: 인스턴스가 딱 하나만 있도록 생성을 통제하고, 그 하나에 닿는 지점을 열어 주는 디자인 패턴.
이미 한 것:
- Malenia 는 고유한 보스지만 singleton 패턴은 아니라는 경계를 확인
- 전설 고유 무기가 세계관상 하나뿐이어도, 코드 구조가 singleton 인지는 따로 확인해야 함을 봄
- 고유함, 희귀함, 정식 singleton 을 서로 다른 개념으로 갈라 놓음
한 줄로: Singleton 은 특별해서 하나인 게 아니라, 시스템이 하나만 만들도록 통제해서 하나야.
함정: 특별함, 유일함, 희귀함을 singleton 과 헷갈리기. Malenia 든 역사 속 인물이든 유일해 보여도, 생성 통제와 단일 접근이라는 구조가 없으면 정식 singleton 패턴이 아니야.
No Final Class
뭐냐: 어떤 class 도 궁극이고 불변인 진리로 선언하기를 거부하는 것.
이미 한 것:
- "명백한" 진리가 시대를 가로질러 계속 다시 표현되는 걸 봄 (final 이 아니라 계속 진화하는 중)
- 게임 메타가 어떻게 바뀌는지 봄 (오늘의 최적 빌드가 내일 패치)
- (예고) Track 10 에서 과학과 원자, 우주 자체에 적용되는 걸 볼 거야
한 줄로: final class 는 "이걸 override 할 일이 영원히 없을 것" 이라는 선언이야. 과학도, 역사도, 우주도 그렇지 않다고 말해 왔고.
표
참조용. 인벤토리 화면에 핀으로 꽂아 둬.
| 도구 | 한 줄로 | 처음 나온 곳 |
|---|---|---|
| Abstraction | 거푸집이 아닌 걸 다 걷어내서 거푸집 찾기 | Track 1 (The Straw) |
| Inheritance | 이미 풀린 데서 공짜로 받는 80% | Track 2 (Evolution) |
| Polymorphism | 같은 뿌리, 맥락마다 다른 행동 | Track 2 (Evolution) |
| Overriding | 물려받긴 했는데, 내 판본은 여기서 다르게 돌아가 | Track 3 (Language) |
| Overloading | 같은 인터페이스, 넣는 값마다 다른 실행 | Track 3 (Language) |
| Encapsulation | 지금 필요 없는 것 뚜껑 닫기 (private 이지 null 아님) | Track 2 (Evolution) |
| Multiple Inheritance / Composition | base class 둘 이상 직접 상속 / 독립 특성 조합을 갈라 보기 | Track 5 (Game builds) |
| Singleton | 생성을 통제해서 인스턴스를 딱 하나만 내주기 | Track 7 (formal boundary) |
| No Final Class | 마지막 말인 건 아무것도 없어 | Track 2 (Evolution) |
거푸집 사냥
이 track 자체가 한 겹 위에 있어. 위의 도구 표가 그 자체로 거푸집이거든 — Track 0-6 에서 한 모든 걸 눌러 담은 추상화야. 각 줄이 "개념 → 한 줄 요약 → 처음 쓴 자리" 라는 패턴의 인스턴스고.
그리고 이 quest 의 "경험 먼저, 이름 나중" 구조 자체가 어떤 root class 의 인스턴스야:
이해는 정의에서 안 와. 해 보는 데서 와.
學 vs 習, "레시피 따르는 사람 vs 맛을 아는 사람", track 마다 나온 거푸집 사냥 — 같은 학습 패턴을 계속 다시 본 거야.
보이지? 거푸집 하나. 이 quest 전체가 거기서 찍혀 나왔어.
피파의 고백
Quest Prompt — 자기 AI 와 대화하기
통합 연습이야:
"상황 하나 줄게. OO 도구를 다 짚어 봐 — 단 기술 용어를 먼저 말하지는 마. 무슨 일이 벌어지는지 일반적인 말로 묘사하고, 이름은 내가 붙일게.
상황: 방콕 길거리 노점상과 파리 미슐랭 셰프가 둘 다 훌륭한 음식을 만들어. 방콕 노점상은 정식 훈련을 받은 적이 없고, 파리 셰프는 15 년을 훈련했어. 음식 맛은 완전히 다른데 둘 다 통해. 둘이 하는 일 중에 구조적으로 같은 게 뭐고, 다른 게 뭐고, 각자 자기 일을 하는 데 몰라도 되는 게 뭔지 설명해 줘."
답을 받고 나서 직접 도구를 붙여 봐:
- 둘을 견줄 때 쓸 수 있는 재사용 가능한 패턴은 뭐야? (Abstraction)
- 방콕 노점상이 전통에서 물려받은 건 뭐고, 파리 셰프가 정식 훈련에서 물려받은 건 뭐야? (Inheritance — 다른 부모, 같은 목적지)
- 음식 맛을 다르게 만드는 건? (Polymorphism)
- 각자 자기 훈련에서 갈아 끼운 기법은? (Overriding)
- 둘 다 몰라도 되는 건? (Encapsulation)
- 둘 중 누가 더 유일한 사람이냐가 아니라, 시스템이 인스턴스를 하나로 통제하는 singleton 구조가 실제로 있느냐? (Singleton 경계)
이름은 네가 붙이는 거야. AI 가 아니라. 그게 연습이야. 이름은 자기 손에서 나와야지, 정의 찾아보기에서 나오는 게 아니고.