YouTube · Better Software Conference · 2026-08-25
모든 악의 뿌리, 그 뿌리 — Casey Muratori가 파헤친 "조기 최적화" 격언의 실제 기원
BSC 2026 강연 · Casey Muratori · 2h 50m · Better Software Conference
핵심 질문
"조기 최적화가 만악의 근원이다" — 이 문장은 누가 · 언제 · 어떤 맥락에서 나왔고, 오늘 우리가 인용할 때 무엇을 놓치고 있는가?
선행 개념 (모르면 막히는 것만)
- GOTO Considered Harmful — Dijkstra가 1968년 CACM에 보낸 편지, 구조화 프로그래밍 논쟁의 발화점.
- Structured Programming with go to Statements — Knuth가 1974년 ACM Computing Surveys에 실은 논문. 문제의 격언이 실제로 등장하는 원출전.
- Dijkstra · Knuth · Hoare · Naur — 이 시기(1960년대 후반~1974)의 4인 서사가 격언의 실제 의미를 결정한다.
- SSA(Static Single Assignment) — 컴파일러 중간표현. 통설은 1980년대 IBM 발명이지만, Casey가 이번 리서치 중 1965년 Hoare 초안에서 발견했다는 부속 발견.
권장 읽기 순서
- Executive Summary — 발제 요지 5줄과 팩트체크 등급.
- 팩트체크 — 주요 주장별 판정과 1차 문헌 링크.
- 원본 (완역) — Casey 본인이 쓴 강연 동반 아티클 전문 번역.
- 원본 링크·인용 — 슬라이드 참고문헌 33건 · 강연 챕터 · 저자 채널.
멘탈 모델 (1~3줄)
이 강연은 격언의 응용 논쟁이 아니라 계보학이다. Casey는 "누가 옳게 인용하나"가 아닌 "1960~70년대 4인의 어떤 사건이 이 문장을 낳았나"를 200편 문헌으로 재구성한다. 리서치 부산물로 Hoare가 1965년 IFIP 미출간 제안서에서 SSA를 이미 제안했다는 원본 자료를 제시하는 것이 백미.
점검 질문
- 격언은 정확히 어느 논문 · 몇 페이지 · 어떤 문단 맥락에서 나왔는가? (Knuth 1974)
- Casey가 이번 리서치에서 우연히 발견한 SSA의 실제 최초 제안 연도는? (1965)
- 왜 Hoare의 SSA 아이디어는 15년간 재발견되지 않았는가? (Naur의 부정적 코멘트)
예상 소요 — 요약만 4–6분 · 완독 18–25분 · 강연 시청 2h 50m (본편 2h 08m + Q&A 42m).
발제 요지
- 계보학 접근. Casey는 격언의 응용을 논하지 않는다. "누가 · 언제 · 어떤 사건 속에서 그 문장이 태어났는가"를 200편 이상의 원자료로 복원한다.
- 4인의 이야기 없이는 오독한다. Dijkstra · Knuth · Hoare · Naur 각자의 궤적을 알아야 격언의 "미묘한 의미"를 잃지 않고 적용할 수 있다.
- NATO 1968·1969 소프트웨어 공학 콘퍼런스가 서사의 중심 축이다. Brian Randell의 회의록·사진 아카이브가 슬라이드 원본 이미지의 주공급원.
- 부산물 발견: Hoare의 1965년 IFIP 미출간 제안서에 오늘의 SSA와 사실상 동일한 형식이 이미 명시돼 있다 — 자산 왼편에 식별자 유일 등장 · 위상정렬로 문장 재배열, 다중 패스 컴파일러 내부 표현으로.
- 왜 15년 지연됐나. Hoare 자신이 1998년 표지에 손글씨로 남긴 메모에 따르면 "Naur의 부정적 코멘트 때문에 논문화하지 않았다. 9-패스 컴파일러를 쓰는 건 쉽다고 그가 말했기 때문".
- 강연자 태도. Casey는 "AI에게 시키지 말고 직접 원문을 뒤져라" — 특정 사실보다 재료에 잠기는 시간이 감각을 만들며, 부수적 발견(1950년대 Doug Ross의 fat struct, 1979년 Stroustrup의 의존성 주입 등)이 그렇게만 나온다.
핵심 수치
한줄평
격언 하나에 대한 계보학이 부산물로 SSA의 실제 기원 연도를 15년 앞당긴다. Q&A 상대는 gingerBill(Odin 언어 저자).
Edited using Blick: https://blickeditor.com/ 명시. 채널 Better Software Conference는 oEmbed로 정식 확인.왜 이 격언인가
지난해의 The Big OOPs에 이어, 나는 올해 Better Software Conference를 위해 한 번 더 리서치 집중형 강연을 하기로 했다. 지난번 출발점은 Ivan Sutherland의 Sketchpad였다. 이번은 문장 하나 — "조기 최적화는 만악의 근원이다(premature optimization is the root of all evil)."
사람들이 이 문장을 꺼낼 때 그들은 대개 그것의 적용을 논쟁하거나, 자기 주장을 지지하는 근거로 사용하거나, 이 유명한 문장을 어느 전설적 컴퓨터과학자가 처음 말했는지 점치려 한다. 이 새 강연 The Root of the Root of All Evil에서 나는 그 어느 것도 하지 않는다.
대신 나는 이 문장이 실제로 만들어진 구체적 정황을 가능한 한 완전하게 그려내려 했다.1 관련 인물들의 삶을 파고들수록, 나는 그들 각각의 이야기를 알지 않고서는 원래 의미의 미묘함을 잡을 수 없다는 확신에 이르렀다. 그러지 않으면 문장에 너무 많은 것을 읽어 넣거나, 반대로 너무 얕게 읽어, 제대로 적용하기 위한 그 미묘한 이해를 놓친다.
그러므로 "조기 최적화가 만악의 근원"이 정말 무엇을 뜻하는지 — 또는 왜 저명한 프로그래머가 그 말을 했는지 — 궁금해한 적이 있다면, 나와 함께 컴퓨터과학 역사 속으로 한 번 더 여행하며 모든 악의 뿌리, 그 뿌리를 찾아나서길 바란다.
사진 출처
강연에 사용된 사진의 거의 전부는 Brian Randell의 훌륭한 NATO 콘퍼런스 역사 페이지에서 왔다. 그것들은 Randell과 동시대인인 Robert McClure의 공동 크레딧이다. Randell은 강연 본편에도 잠깐 등장한다 — 그는 GOTO Considered Harmful의 발화 사건에서 Dijkstra의 주된 대화 상대다.
안타깝게도, 이 크레딧을 쓰는 시점에 Brian의 페이지 서버가 SSL 인증서 문제를 겪고 있는 듯하다. 희귀한 역사 사진이 있는 훌륭한 페이지이니 문제가 곧 해결되기를 바란다. 그렇지 않다면 Internet Archive 백업 사본으로 접근을 시도할 수 있다.
나머지 사진에 대해: Donald Knuth의 저서 사진은 Héctor García-Molina가 촬영했고, Donald Knuth 개인 웹사이트에서 직접 내려받을 수 있다. Donald Knuth 본인의 사진과 그의 오랜 협력자 Robert Floyd의 사진은 인터넷과 서적 여러 곳에 나오지만 출처 표기가 없다. 두 사진의 원 촬영자를 아는 분이 있다면 알려주시길 — 여기 제대로 크레딧을 표기하고 싶다.
슬라이드 참고문헌
짐작하겠지만, 이런 강연을 준비하려면 많은 역사 자료를 읽어야 한다. The Root의 내 리서치 디렉터리에는 200개 이상의 문서가 들어 있다! 그 방대한 수천 페이지에서, 실제 슬라이드로 들어가는 발췌는 극히 일부다.
인용 슬라이드마다 하단에 출처가 적혀 있다. 슬라이드 뒤의 문서를 더 자세히 읽고 싶다면, 아래 하이퍼링크 목록으로 찾을 수 있게 해두었다. 가능한 경우, 그 자료가 정당하게 공개된(즉, 무단 게시가 아닌) 판본에 링크했다.
강연에서 등장한 순서대로, 발췌 출처는 다음과 같다:
- ACM Computing Surveys, Volume 6, No. 4
- Structured Programming with go to Statements
- The Errors of TeX (paid access only)
- EWD196 - The Structure of the "THE"-Multiprogramming System
- Edsger Wybe Dijkstra - His Life, Work and Legacy (paid access only)
- An Interview with Edsger W. Dijkstra
- EWD215 - A Case against the GO TO Statement
- Go To Statement Considered Harmful
- EWD1308 - What led to "Notes on Structured Programming"
- EWD245 - On Useful Structuring
- EWD340 - The Humble Programmer
- Datamation - October 1968 (Bitsavers)
- Datamation - December 1968 (Bitsavers)
- EWD227 - Stepwise Program Construction
- A Review of "Structured Programming"
- NATO Software Engineering Conference 1968 Report (Internet Archive)
- EWD249 - Notes on Structured Programming
- EWD209 - A Constructive Approach to the Problem of Program Correctness
- The Emperor's Old Clothes
- Efficient Production of Large Programs
- A Contribution to the Development of ALGOL
- Record Handling
- Oral History of Sir Antony Hoare
- Structured Programming (Dahl/Dijkstra/Hoare, 1972)
- Oral History of Donald Knuth
- Research in the Computer Science Department (1969)
- Notes on Avoiding "go to" Statements (paid access only)
- The IBM System/360 Model 91 (paid access only)
- Optimal Measurement Points for Program Frequency Counts (paid access only)
- An Empirical Study of FORTRAN Programs (paid access only)
- The Execution Time Profile As A Programming Tool (Internet Archive)
- An Interview with Charles Antony Richard Hoare
- The Debugging of Computer Programs (paid access only, Q&A only)
예기치 못한 발견 — Hoare의 1965년 SSA
요즘은 사람들에게 역사 문서를 읽는 데 시간을 쓰라고 설득하기가 참 어렵다는 걸 안다. 왜 그냥 AI에게 시키지 않느냐고?
개인적으로 나는 문서를 몸으로 훑는 그 행위 자체가 경험의 가장 값진 부분이라고 느낀다. 가장 큰 이유는, 어떤 특정 사실보다 자료 전체에 대한 감각이 더 중요하기 때문이다 — 그 감각은 역사 기록 속에 상당한 시간 잠기지 않고서는 얻을 수 없다.
하지만 부차적 이유가 하나 더 있다. 어떤 사실을 찾게 될지 미리 알 수 없다는 점. 컴퓨터과학 역사 속으로 파고들 때마다 나는 애초에 찾으려 하지도 않았던 매혹적 유물을 열 개씩 만난다. Doug Ross가 1950년대에 fat struct를 발명해(그리고 사용하고) 있었다든가, Bjarne Stroustrup이 1979년에 이미 "의존성 주입"을 하고 있었다든가(이건 나중에 다룬다) — 그리고 이번에는 Sir Charles Antony Richard Hoare가 1965년에 오늘날 우리가 SSA라 부르는 것을 제안한 것으로 보이는 문서를 발견했다.
SSA — 오늘날 가장 널리 쓰이는 컴파일러 백엔드의 필수 요소인 그것 — 는 통설상 1980년대 IBM에서 개발되었다. 그 주장(과 그 역사)을 직접 리서치한 적은 없지만, The Root를 준비하며 Hoare의 미출간 IFIP 제안서에서 다음 구절을 우연히 만났다:
먼저, 프로그램을 동등하지만 형이 다른 프로그램으로 변환한다 — 모든 내부 블록이 제거되고, 어떤 식별자도 대입문 왼편에 한 번 넘게 나타나지 않는다. 이 조건의 만족은 번역 루틴의 언어에 go to 문·조건문·for 문이 없기 때문에 가능하다. 다음 단계는 프로그램 문장의 순서를 모든 변수가 우변에 처음 등장하기 전에 좌변 대입으로 먼저 등장하도록 재배열하는 것이다. 이는 PERT 프로그램에서 널리 쓰이는 것과 같은 위상정렬 알고리즘으로 할 수 있다.
Hoare는 정확히 오늘 SSA가 궁극적으로 개발된 이유(그리고 여전히 사용되는 이유)로 이 SSA-유사 변환을 제안하고 있다: 다중 패스 컴파일러의 내부 표현 구조로서.
그렇다면 왜 세계는 컴파일러 저자들이 SSA를 정식으로 발전시키는 데 15년을 더 기다려야 했는가? 1998년 Hoare가 제안서 표지에 덧붙인 손글씨 메모에 따르면:
대회에서 Naur의 부정적 코멘트 때문에, 나는 이것을 논문화하지 않았다. 그는 9-패스 컴파일러를 쓰는 건 쉽다고 말했다.
여기서 "Naur"는 Peter Naur — 프로그래밍 언어 문법 정의 표기법을 지칭할 때 어디서나 쓰이는 "Backus-Naur Form"의 그 이름이다.
마무리
The Root of the Root of All Evil이 즐거우시기를 바란다. The Big OOPs처럼, 나는 준비하는 과정에서 컴퓨팅 역사에 대해 엄청난 것을 배웠다. 그러나, 역시 Big OOPs처럼, 겨우 표면만 긁었다는 피할 수 없는 느낌을 안고 마쳤다.
앞으로 이런 강연을 또 할지는 확신할 수 없다. 준비가 극도로 스트레스가 크다. 정리해야 할 정보량이 방대하기 — 내가 지금까지 한 어떤 강연보다도 훨씬 크다. 언제나 더 할 리서치가 있고, 아직 발견하지 못한 어떤 문서에 답이 있을지 모르는 성가신 질문이 있다. 나는 대개 강연 직전 순간까지 슬라이드를 만들고 있어, 제대로 된 리허설을 할 기회조차 없다.
하지만 컴퓨터과학 역사를 뒤지는 취미를 그만두지는 못할 것 같다. 재미있는 것이 너무 많아 절대 다 파헤치지 못한다. 슬프게도, 산업 전체로 보면 우리는 기억한 것보다 훨씬 많이 잊어버린 것 같다.
그 김에, 오늘은 The Big OOPs의 1주년이므로, 나는 특별히 유료 구독자 대상 1시간 영상을 준비했다 — 이 두 특이한 강연을 준비할 때 사용한 역사 자료를 어떻게 읽는지 최선을 다해 보여주는 영상이다. Big OOPs 리서치의 500페이지 넘는 조각을 한 시간에 압축하려니, 최신 틱톡 스타일의 최고 속독 흉내가 필요했다. OOP 팬들에게는, 앞서 언급한 Stroustrup의 1970년대 후반 의존성 주입 제안 발견도 포함된다.
그 영상은 후속 포스트로 여기 올릴 예정이니, 알림을 받고 싶다면 구독 옵션을 확인해 달라.
다음에 만날 때까지, 즐겁게 프로그래밍하시길, 그리고 인터넷에서 뵙길.
— Casey
1 격언을 누가 만들었든 상관없이 — Donald Knuth를 포함해 (때때로 그 자신마저) 이 문장을 다른 사람의 것으로 돌려온 경우가 있다.
강연 · 저자 · 매체
- YouTube — Casey Muratori · The Root of The Root of All Evil · BSC 2026 — 2h 50m, 2026-08-25 공개, 121,714회 조회 (수집 시점)
- Computer, Enhance! · The Root of the Root of All Evil (동반 아티클) — 2026-08-26, Casey Muratori
- Better Software Conference (YouTube 채널)
- Better Software Conference 공식 사이트
- Casey Muratori (X)
- Computer, Enhance! 뉴스레터 홈
- BSC (X)
- Blick 편집기 (강연 영상 편집)
강연 챕터
슬라이드 참고문헌 (등장 순서)
- ACM Computing Surveys, Volume 6, No. 4
- Structured Programming with go to Statements
- The Errors of TeX (paid access only)
- EWD196 - The Structure of the "THE"-Multiprogramming System
- Edsger Wybe Dijkstra - His Life, Work and Legacy (paid access only)
- An Interview with Edsger W. Dijkstra
- EWD215 - A Case against the GO TO Statement
- Go To Statement Considered Harmful
- EWD1308 - What led to "Notes on Structured Programming"
- EWD245 - On Useful Structuring
- EWD340 - The Humble Programmer
- Datamation - October 1968 (Bitsavers)
- Datamation - December 1968 (Bitsavers)
- EWD227 - Stepwise Program Construction
- A Review of "Structured Programming"
- NATO Software Engineering Conference 1968 Report (Internet Archive)
- EWD249 - Notes on Structured Programming
- EWD209 - A Constructive Approach to the Problem of Program Correctness
- The Emperor's Old Clothes
- Efficient Production of Large Programs
- A Contribution to the Development of ALGOL
- Record Handling
- Oral History of Sir Antony Hoare
- Structured Programming (Dahl/Dijkstra/Hoare, 1972)
- Oral History of Donald Knuth
- Research in the Computer Science Department (1969)
- Notes on Avoiding "go to" Statements (paid access only)
- The IBM System/360 Model 91 (paid access only)
- Optimal Measurement Points for Program Frequency Counts (paid access only)
- An Empirical Study of FORTRAN Programs (paid access only)
- The Execution Time Profile As A Programming Tool (Internet Archive)
- An Interview with Charles Antony Richard Hoare
- The Debugging of Computer Programs (paid access only, Q&A only)
용어
- SSA (Static Single Assignment) — 컴파일러 중간표현. 각 변수가 정확히 한 번만 대입되도록 재구성하는 형식. LLVM · GCC 등 현대 백엔드에서 필수.
- GOTO Considered Harmful — 1968년 Dijkstra의 CACM 편집자 서신 제목. 구조화 프로그래밍 논쟁의 발화점. 원 제목은 Wirth 편집자가 붙임.
- Backus-Naur Form (BNF) — 프로그래밍 언어 문법을 서술하는 표기법. Peter Naur가 존 Backus의 표기를 개량.
- NATO Software Engineering Conference — 1968년 Garmisch · 1969년 Rome에서 열린 두 콘퍼런스. "소프트웨어 공학"이라는 용어의 정착 계기.
- PERT — Program Evaluation and Review Technique. 위상정렬 기반 일정 관리 기법 (Hoare가 1965년 SSA-유사 재배열에 참조).
고지
본 문서는 강연 트랜스크립트가 아니다. YouTube의 자동 생성 자막 API가 이 영상에 대해 유효한 본문을 반환하지 않았다(HTTP 200, 0 bytes — curl 서명 URL · 실브라우저 in-page fetch 모두 동일). 대신 강연자 본인이 발행한 동반 아티클(ComputerEnhance.com/theroot)을 1차 자료로 삼아 요약·팩트체크·완역을 구성했다. 이 아티클은 강연자가 "슬라이드 참고문헌"과 "부산물 발견(Hoare 1965 SSA)"을 명시적으로 공개하는 정본이며, 저자 본인이 강연 시청자에게 참조로 가리키는 페이지다. 강연 본편의 세부 서사(2h 08m + Q&A 42m)는 영상을 직접 시청해야 한다.
이미지 두 장(Hoare IFIP 1965 표지 · 본문)은 Casey Muratori의 substack 아티클에서 same-origin으로 다운로드해 로컬화했다. 원본 크레딧은 Casey Muratori · Hoare 개인 자료.
원본: YouTube — Casey Muratori · The Root of The Root of All Evil · BSC 2026
1차 자료: Computer, Enhance! (Casey Muratori) · 2026-08-26
수집 · 요약 · 팩트체크 · 완역 · 렌더링 — link 스킬, 2026-08-28