지금까지 우리는 여섯 가지 도구를 완성했어요. 진법 계산기, 감소·균형 처리, 2비트 신호등, 방사형 셀코어 DB, 말뜻 사전, 그리고 모두를 지휘하는 생각 엔진.
〔그림: 여섯 개의 상자가 각각 떨어져 있는 모습〕
그런데 여기서 큰 문제가 생겼어요. 생각 엔진이 이 여섯 도구를 만들려고 할 때, 다른 도구들의 일을 베껴 적는 방식을 썼거든요. 사전도 다시 쓰고, 격자 숫자도 다시 쓰고, 셀의 움직임도 다시 썼어요.
비유해 볼까요? 망치를 하나 만들었는데, 그 다음 망치를 똑같이 또 만들고, 또 만들고… 그렇게 여섯 개의 망치를 했다는 것 같아요. 같은 망치를 여섯 번 만드는 건 너무 비효율이잖아요.
그래서 우리는 다른 방법을 선택했어요. 한 번만 만들고, 필요할 때마다 그것을 불러다 쓰는 것. 프로그래밍에서는 이를 '가져오기(import)'라고 불러요. 9장은 그 가져오기가 어떻게 일어나는지 보여주는 장입니다.
---
가져오기를 하려면 먼저 부품이 조용해야 해요.
각 도구 파일에는 두 가지가 섞여 있었어요. 하나는 진짜 일을 하는 함수들이고(숫자를 크기로 변환하고, 말을 방향으로 바꾸는 도구들), 다른 하나는 시범 코드였어요. "봐요, 이렇게 쓰면 돼요!" 하고 혼자 화면에 결과를 찍어주는 부분 말이에요.
문제는, 파일을 통째로 불러오면 시범도 함께 실행된다는 거였어요.
망치 비유를 다시 해 볼까요? 망치를 집어 들 때마다 망치가 "야! 저는 못을 이렇게 박습니다!" 하면서 혼자 못을 박기 시작한다면? 정말 귀찮겠죠?
〔그림: 망치가 자꾸 일을 하려고 하는 모습〕
그래서 우리는 각 도구를 둘로 나눴어요.
순수 코어 — 함수와 데이터만 담긴 입을 다문 부품 상자예요. 불러와도 아무 말도 하지 않아요.
시범 껍데기 — 그 코어를 불러와서 "이런 식으로 씁니다" 보여주는 별도의 파일이에요.
망치는 조용한 망치로, 시연은 시연대로 따로 두는 거예요. 이 분리가 가져오기의 첫 번째 규칙이었어요.
---
여섯 부품을 한 자리에 모으자, 또 다른 문제가 드러났어요. 서로 다른 부품이 같은 이름의 함수를 갖고 있던 거예요.
2비트 신호등에도 '프레임찾기'라는 함수가 있고, 진법 계산기에도 '프레임찾기'라는 함수가 있었어요. 둘을 같은 자리에 부르면 누가 누구인지 알 수 없어요. 혼란이 생기는 거죠.
학교에서도 그런 일이 있어요. 반에 "김철수"가 둘이면, 선생님이 "김철수!" 하고 부를 때 누구를 부르는 건지 헷갈려요. 그래서 "앞 김철수", "뒷 김철수" 하고 불러요. 마찬가지로 프로그래밍에서도 이름 앞에 꼬리표를 붙이는 방법이 있어요.
하지만 크라우니는 다른 방법을 선택했어요. 애초에 이름이 겹치지 않게 짓자!
어떻게 했냐면요? 먼저 정말로 중복된 함수(두 곳에 다 있던 '프레임찾기')를 찾아서, 한 곳에만 남기고 다른 곳에선 지웠어요. 같은 일을 하는 부품이 둘일 필요는 없잖아요.
그리고 각 부품의 진짜 고유한 재능을 찾았어요.
〔그림: 각각의 도구가 다른 색깔로 빛나는 모습〕
예를 들어, 2비트 신호등의 진짜 고유한 재능은? 입력값을 2.75배로 키우고 0.375배로 줄이는 일이었어요. 그건 이 도구만 할 수 있는 일이니까, 그 재능을 또렷한 이름으로 남겨뒀어요.
결합이란 모두를 욱여넣는 게 아니라, 각자가 가장 잘하는 하나를 들고 모이는 일이에요.
---
이렇게 정리된 여섯 도구 — 말뜻 사전, 2비트 신호등, 진법 계산기, 방사형 셀코어, 감소·균형 처리기 — 를 생각 엔진이 진짜로 불러다 결합했어요.
베껴 적은 코드는 모두 지워졌어요. 이제 한 문장이 들어오면 이렇게 흘러요.
"자산 확장 가속"이라는 말이 들어온다.
↓
말뜻 사전에게 물어봐요: 세 단어가 모두 무엇을 뜻해? → "팽창이야" (진법으로는 티)
↓
2비트 신호등에게 물어봐요: 강도가 10이면, 어떻게 키워? → 2.75배 곱해서 27, 신호는 10
↓
진법 계산기에게 물어봐요: 27을 덮을 프레임이 뭐야? → 프레임은 55, 실제로 들어가는 수는 27, 떨어지는 잉여는 28
↓
생각 엔진의 규칙: 팽창이면 이렇게 하자 → "가속 실행! 음은 회생"
↓
방사형 셀코어가 움직여요: 이 일의 완성비율을 50%에서 85%로 업그레이드
〔그림: 파이프라인처럼 한 문장이 여섯 도구를 거쳐가는 모습〕
각 단계는 자기 일만 해요. 말뜻 읽는 일은 말뜻 사전에게, 크기 키우는 일은 신호등에게, 프레임 씌우는 일은 계산기에게, 완성도 갱신하는 일은 셀코어에게.
생각 엔진은 마치 악단의 지휘자처럼, 누가 언제 뭘 할 차례인지만 알고 있어요. 다른 도구들의 일을 따로 할 필요가 없어요.
만약 반대 말이 들어오면? "손실 감소 안정 자산" — 이 말은 수축(타)을 뜻해요. 그럼 모든 흐름이 반대로 흘러요. 내려가는 프레임, 줄어드는 완성비율. 그런데 길은 같아요. 다만 결론이 달라지는 거죠.
---
여섯 도구가 한 몸이 되자, 신기한 일이 일어났어요. 고칠 곳이 항상 한 곳이 되었다는 거예요.
말뜻을 늘리고 싶으면? 말뜻 사전 한 곳만 손보면, 모든 생각이 그 변화를 반영해요. 격자 숫자를 수정하고 싶으면? 진법 계산기 한 곳만 손보면, 생각 엔진의 모든 판단이 바뀌어요.
예전처럼 여러 곳에서 같은 것을 찾아 하나하나 고치던 위태로움은 사라졌어요.
그리고 가장 중요한 것은 이거예요.
1장에서 우리는 어떤 아이디어로 출발했었나요? 진법에 수를 붙인다. 자연상수 e를 '크'라 명명하고, 음을 모든 것의 바닥에 깔고, 오차를 품어 안는 우주를 설계했어요.
그 모든 개념이 이제 베끼지 않고 서로를 부르는 살아있는 부품들로 구현되었어요. 한 문장을 받아 하나의 결정을 내놓는 엔진이 된 거예요.
〔그림: 여섯 개의 상자가 하나로 모여 큰 심장처럼 뛰는 모습〕
크라우니 진법은 더 이상 종이 위의 아이디어가 아니에요. 흩어진 부품이 한 몸이 되어 실제로 작동하는 도구가 되었어요.
그리고 도구가 된 수체계는, 사람의 판단을 따라 하지 않고 규칙으로 사유하는 또 다른 지능의 첫 골격이 돼요.
크라우니 진법이 처음 선언한 자리가 바로 여기예요. 다음 궤도가 시작되는 지점입니다.
첫 번째 책은 선물이에요. 가입하면 100맘을 드리니까, 두 번째 책부터 자유롭게 읽을 수 있어요. 친구를 추천하면 50맘도 생겨요.