구조 노트

일상의 지극히 평범한 일화에서 출발하여, 프로그래밍의 논리와 범주론을 넘어 AI와 인간 지능의 본질까지 깊숙이 파고드는 25개의 연결된 생각들.

Part 0. Prelude

Part 1. 발견 (Observation)

Part 2. 구조 (Structure)

  • 5.
    관계가 의미를 만든다 대상을 이루는 것은 내부의 속성이 아니라 다른 대상과 맺는 관계라는 사실을 데이터베이스와 체스판을 통해 살펴본다
  • 6.
    함수는 연결이다 함수를 계산기가 아니라 한 대상에서 다른 대상으로 건너가는 통로로 다시 읽는다
  • 7.
    프로그램은 관계를 기록한 것이다 개별 관계들이 사슬처럼 이어지며 프로그램 전체의 지도를 완성해 가는 과정을 지하철 환승과 메서드 체이닝으로 살펴본다
  • 8.
    타입은 약속이다 콘센트 규격이라는 물리적 표준을 통해 타입이 보장하는 것과 보장하지 않는 것의 경계를 살펴본다

Part 3. 추상 (Abstraction)

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