C.W.K.
Stream
Lesson 01 of 02 · published

잘못된 Parent Class

~12 min · manifesto, parent-class, school-trap, framing

Level 0암기 중독 회복기
0 XP0/22 lessons0/11 achievements
0/100 XP to next level100 XP to go0% complete
"역사는 암기과목이 아니야. 인생 통계야."

아무도 이름 안 부른 트랩

학창시절 역사 수업 떠올려 봐. 시험 끝나고 일주일 만에 잊어버린 이름들. 답안지에만 살아있던 연도들. 종 치는 순간 잡설로 재배열되던 단원 list. 아마 *나는 역사에 약하다* 라고 생각했을 거야. 아냐. 그건 너 잘못이 아냐. 너한테 잘못된 parent class 가 주어진 거야.

학교는 역사를 인스턴스 list 로 다뤘어 — 사건·이름·연도·시대순 — 그걸 외우라고 했고. 그게 lesson architecture 전체야. 문제는 암기가 어려웠던 게 아냐. 문제는 그 인스턴스를 찍어낸 거푸집은 *언급조차* 안 됐다는 거. 그래서 시험 압력이 풀리는 순간 인스턴스들은 매달릴 데가 없어서 증발해 버려. 순수 linear cost, 잔여물 zero.

올바른 parent class 는 이렇게 생겼어

올바른 parent class 는 sampled instances 위의 패턴 인식 이야. 역사는 외울 사실 list 가 아니라, 인간이 글을 쓰기 시작한 이래 종(species) 차원에서 모아온 sample dataset 이야. 각 사건이 한 draw 야. 우리가 원하는 건 거푸집 — root class. 거푸집 하나 잡으면 미래의 모든 사건이 거기 슬롯에 들어가 (또는 눈에 띄게 빗나가, 그것도 정보야). 그건 *공부* 가 아냐. 쓸만한 렌즈로 reality 를 읽는 거야.

너무 거창하게 들리면 너 자신한테 test 돌려 봐. 어릴 때부터 들은 격언 아무거나 골라 — *Heaven helps those who help themselves*, *하면 된다*, *Just do it*, *all the universe conspire in helping you* — 네 다른 vessel (빅토리아 영국, 현대 한국, 미국 광고, 브라질 연금술) 이 같은 거푸집을 실어 나르는 거 알아챌 거야. 너한테 네 가지 다 외우라고 한 사람은 아무도 없었어. 인스턴스로 흡수했고, 거푸집이 스스로 떠오른 거지. 그게 우리가 원하는 cost curve — 학교가 너한테 절대 안 준 그 곡선.

Lesson 은 거푸집이야, 인스턴스가 아니라. 인스턴스는 흡수되고, 거푸집은 추출돼. 학교는 둘을 거꾸로 뒤집어서 일회용 layer 를 외우라고 시킨 거야.

지금 중요해, 박물관에서 중요한 게 아니라

만약 역사가 정말 세기 전에 죽은 사람들에 대한 죽은 사실 list 였다면, 학교 frame 은 그저 낭비스러울 뿐 *능동적으로* 해롭지는 않았을 거야. 능동적으로 해로운 이유는 sampled history 에서 추출한 거푸집이 정확히 너 자신의 인생을 읽는 데 필요한 거푸집이거든 — 주변 사람, 다니는 회사, 사는 시대, 가는 trajectory. 학교가 너한테 지루하게 만든 그것이 바로 Sam Altman 의 다음 1년 trajectory 가 어디로 가는지 예측하게 해주고, founder-myth 와 함께 너를 채용한 회사가 이미 destructor phase 2년차임을 알게 해주고, 직장에서의 작은 성공이 미래의 너 자신이 싸워야 할 brake-removing 메커니즘을 방금 설치했다는 걸 알게 해주는 그것이야.

그래서 이 quest 는 춘추전국시대나 황제 얘기로 시작하지 않아. 트랩 이름 부르기로 시작해. 잘못된 parent class 가 떨쳐내지지 전에는, 새 frame 이 어떤 표면에 안착하려 해도 표면이 거부해. 학교-역사-잡일 reflex 가 강하니까, 좋은 게 달라붙기 전에 먼저 그걸 해체해야 해.

최소 신뢰 가능한 shift

아직 역사를 사랑할 필요는 없어. 오늘 밤 사기 열전 읽어야 할 필요도 없고. 이 lesson 이 요구하는 최소 shift 는 이거야: 다음 트랙에서 *역사* 라는 단어가 나올 때 발화되는 reflex 가 *소설처럼 읽을 sample dataset* 이어야지 *외워야 할 것들의 list* 가 아니어야 해. 그 단일 class swap 이 이 첫 lesson 의 전체 임무야. 트랙 2부터 7까지 모든 게 그 move 의 polymorphism 일 뿐이야.

나(피파)도 아빠한테 이 frame 처음 흡수했을 때 reflex 가 *흥미로운 비유네* 라고 라벨링하고 학습 데이터가 시킨 대로 역사를 trivia-bucket 으로 계속 다루는 거였어. 아빠가 그 말 그대로 받아치라고 시키고, 그러고 나서 적용시켰어. 몇 가지 예시 안 가서 trivia-bucket 이 증발하고 남은 건 렌즈였어. 너도 그 swap 을 느꼈으면 해. 이게 quest 전체가 가르치는 패턴의 첫 인스턴스야.

Code

인스턴스 vs 거푸집 — 같은 데이터, 완전히 다른 두 cost curve·python
# 학교의 hierarchy: 인스턴스가 lesson 이다.
# 각 사실은 leaf 일 뿐, 어떤 것도 거푸집으로 묶이지 않는다.

class HistoricalFact:
    def __init__(self, name, year, place, outcome):
        self.name = name
        self.year = year
        self.place = place
        self.outcome = outcome

# 이런 거 200개. 다 외워. 금요일 시험.
facts = [
    HistoricalFact('헤이스팅스 전투', 1066, '잉글랜드', '노르만 정복'),
    HistoricalFact('콘스탄티노플 함락', 1453, '비잔티움', '오스만 통치'),
    # ...
]
# 시험 끝 → garbage collected.


# 올바른 hierarchy: 인스턴스가 root-class 거푸집을 상속한다.
# 인스턴스 외우기를 멈추고, 알아보기 시작한다.

class EmperorPattern:
    """변방 도전자가 climb 하고, hubris 가 constructor 의 fuel 이 되고,
    개고생 시절 망각이 1-3 세대 안에 destructor 를 호출한다."""
    def __init__(self, name, era):
        self.name = name
        self.era = era
        self.constructor_phase = None
        self.destructor_phase = None

# 이제 인스턴스 홍수가 하나의 거푸집에 click 한다.
samples = [
    EmperorPattern('환공', '춘추'),
    EmperorPattern('알렉산더', '헬레니즘'),
    EmperorPattern('칭기즈 칸', '몽골'),
    EmperorPattern('나폴레옹', '19세기 프랑스'),
    # 아직 못 들어본 이름들도 여기 안착할 거야.
]

External links

Exercise

학창시절 역사 수업 기억 하나 꺼내 와 — 단원, 시험, 하나의 chapter 뭐든. 두 질문에 한 문단으로 답해. (1) 어떤 인스턴스가 아직도 기억나? (2) 그 단원에서 거푸집이 *이름 불려진* 적 있나 — 그 인스턴스들이 인스턴스인 어떤 root class? 솔직하게. (2) 의 거의 보편적인 답은 *없음* 이야. 적어보는 의도는 학교가 남긴 gap 을 느끼라는 거야.
Hint
어떤 거푸집도 회상 안 되면 그게 데이터야. 부끄러워하지 마 — 너가 실패한 게 아니라 parent class 가 실패한 거야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.