구조 노트
일상의 지극히 평범한 일화에서 출발하여, 프로그래밍의 논리와 범주론을 넘어 AI와 인간 지능의 본질까지 깊숙이 파고드는 25개의 연결된 생각들.
Part 0. Prelude
- 0. 들어가며 — 왜 또 프로그래밍 책인가? 사고방식을 탐구하는 이 연작을 시작하며
Part 1. 발견 (Observation)
- 1. 무엇이 무엇이 똑같을까 물리적으로 다른 두 대상을 서슴없이 같다고 부르는 순간들을 여러 영역에서 관찰한다
- 2. 기준이 같음을 만든다 왜 우리는 서로 다른 대상을 굳이 같다고 부르는지, 그 판단 뒤에 숨은 기준을 추적한다
- 3. 차이는 언제 의미를 갖는가 같은 값도 어떤 해상도에서는 다르게 취급되어야 하는 이유를 부동소수점과 NaN을 통해 살펴본다
- 4. 이름을 붙인다는 것 동치관계로 묶인 대상들에 이름을 붙이는 행위가 무엇을 압축하고 무엇을 약속하는지 살펴본다
Part 2. 구조 (Structure)
- 5. 관계가 의미를 만든다 대상을 이루는 것은 내부의 속성이 아니라 다른 대상과 맺는 관계라는 사실을 데이터베이스와 체스판을 통해 살펴본다
- 6. 함수는 연결이다 함수를 계산기가 아니라 한 대상에서 다른 대상으로 건너가는 통로로 다시 읽는다
- 7. 프로그램은 관계를 기록한 것이다 개별 관계들이 사슬처럼 이어지며 프로그램 전체의 지도를 완성해 가는 과정을 지하철 환승과 메서드 체이닝으로 살펴본다
- 8. 타입은 약속이다 콘센트 규격이라는 물리적 표준을 통해 타입이 보장하는 것과 보장하지 않는 것의 경계를 살펴본다
Part 3. 추상 (Abstraction)
- 9. 추상화는 무엇을 버리는가 약속 뒤에 감춰지는 것의 정체를 자동차 핸들과 함수 하나를 통해 살펴본다
- 10. 인터페이스는 무엇을 남기는가 버려진 자리에 남는 약속의 정체를 엘리베이터 버튼판과 결제 수단을 통해 살펴본다
- 11. 디자인 패턴은 왜 반복되는가 진동벨과 옵저버 패턴을 통해 서로 무관한 문제들이 자꾸 같은 모양의 해법으로 풀리는 이유를 살펴본다
- 12. 재사용은 기억의 경제다 GoF 디자인 패턴 책과 오픈소스 패키지를 통해 재사용이 실제로 저장하는 것이 코드가 아니라 관계의 모양임을 살펴본다
Part 4. 범주 (Category)
- 13. 객체보다 관계 화이트보드 위 동그라미와 화살표를 통해, 대상의 내용을 지워도 구조가 그대로 남는다는 사실을 확인한다
- 14. 같은 구조라는 생각 조직도와 선수과목 체계도가 우연히 같은 모양이 될 때, 무엇이 같아야 진짜로 같다고 부를 수 있는지 살펴본다
- 15. 모양을 옮겨도 남는 것 축척 모형과 Optional.map을 통해, 한 구조를 다른 구조로 옮기는 행위가 정확히 무엇을 보존해야 하는지 살펴본다
- 16. 다른 길로 옮겨도 어긋나지 않는다 주문 목록에서 이메일을 찾는 두 가지 경로를 통해, 서로 다른 옮김들 사이에서도 지켜지는 일관성을 살펴본다
Part 5. 지능 (Intelligence)
- 17. 아이는 어떻게 개념을 배우는가 정의 없이 사례만으로 개념의 경계를 찾아가는 과정을 개와 고양이를 구분하는 아이를 통해 살펴본다
- 18. LLM은 무엇을 학습하는가 다음 단어 맞추기라는 단순한 목표 하나가 어떻게 문법과 문맥을 만들어내는지, 그리고 그것이 아이의 학습과 어디서 갈라지는지 살펴본다
- 19. 추상화와 일반화 특정 환경에 맞춘 재전송 타임아웃 값이 다른 환경에서 무너지는 사례를 통해 추상화와 일반화가 같은 동작의 양면임을 살펴본다
- 20. 지능은 구조를 발견하는 과정인가 지금까지 지나온 스무 개의 장면을 관통하는 하나의 동작을 되짚으며, 그것이 무엇을 알려주고 무엇을 알려주지 않는지 살펴본다
Part 6. 다시 구체로 (Back Again)
- 21. 좋은 API는 왜 아름다운가 IDE 자동완성이 다음 메서드를 고민 없이 띄워 주는 순간을 통해, 좋은 API가 실제로 지키고 있는 약속을 살펴본다
- 22. 리팩터링은 왜 가능한가 원본 서비스 자리에 프록시를 끼워 넣었던 경험을 통해, 서비스의 정체성이 구현이 아니라 관찰 가능한 행동에 있음을 확인한다
- 23. 무엇을 끝까지 지켜야 하는가 리플렉션으로 짜여 있던 직렬화 코드를 코드 생성으로 갈아치웠던 경험을 통해, 편리함과 본질을 가르는 기준을 살펴본다
- 24. 프로그래머는 세상을 어떻게 보는가 팀장을 맡으며 겪었던 조직과 코드 경계의 반복을 다시 떠올리며, 이 연작을 관통해 온 감각의 정체를 되짚는다
Part 7. Epilogue
- 25. 나가며 — 다시, 처음의 질문으로 연작을 마치며 처음의 질문으로 돌아온다