스택: Cmd+Z와 「스택 오버플로」의 비밀
두 번째 수납 방식은 접시 더미처럼 생겼어요: 맨 위에서만 넣고, 맨 위에서만 꺼낼 수 있어요 — 이게 스택이에요. 제약이 커 보이죠? 그런데 매일 누르는 실행 취소 키, 프로그램의 함수 호출마다, 전부 이것에 기대고 있어요. 이 강의는 문서를 마음껏 망가뜨린 뒤 한 번에 되돌리고, 마지막으로 「스택 오버플로」 사고를 구경해요 — 세계 최대 프로그래머 Q&A 사이트 Stack Overflow의 이름은 그 사고에서 왔어요.
왼쪽은 미니 문서예요. 네 버튼으로 마음대로 만져 보세요. 오른쪽을 눈여겨보세요: 매 단계 조작이 카드 한 장으로 푸시되어 「조작 스택」에 쌓여요 — 나중에 한 일이 위에 올라가요. 충분히 만졌으면 「⌘Z 실행 취소」를 몇 번 연타해 보고, 어떤 순서로 되돌아가는지 봐요.
📄 미니 문서
마음대로 만지세요, 아깝지 않아요
🥞 조작 스택
매 단계마다 카드 한 장; 맨 위 = 가장 최근
AI에게 「저녁 만들기」를 시키면, 하다가 채를 썰어야 하고, 썰다가 칼이 무뎌서 갈아야 해요…… 「하던 일을 멈추고 다른 일을 할」 때마다 프로그램은 현재 진행을 스택에 푸시해요. 아래 애니메이션을 보세요(여기로 스크롤하면 자동으로 한 번 재생돼요). 각 작업이 끝난 뒤 프로그램이 어떻게 자동으로 이전 작업을 다시 찾는지 눈여겨보세요.
스택 용량은 유한해요. 아래 함수는 자기 자신을 호출해요(이걸 재귀라고 해요). 왼쪽은 코드, 오른쪽은 호출 스택. 먼저 종료 조건을 체크하지 않고 한 번 돌려 보고 무슨 일이 생기는지 봐요; 그다음 체크하고 다시 돌려 비교해 보세요.
✅ 이 강의가 전하고 싶은 것
- 스택 = 접시 더미: 꼭대기에서만 넣고 꺼냄, 후입선출(LIFO)
- 실행 취소 키의 진짜 모습: 매 단계가 카드 한 장; Cmd+Z는 언제나 가장 최근 장을 먼저 팝
- 함수 호출은 스택으로 길을 기억: 꼭대기를 팝하면, 한 단계 위 멈춘 자리로 자동 복귀
- 스택 오버플로 = 푸시만 하고 팝 없음: 종료 조건 없는 재귀가 스택을 가득 채워 프로그램이 그 자리에서 붕괴
- Agent의 퓨즈: 최대 걸음 수 제한 — 작업 스택의 「무한 재귀」를 막는 장치