🤖 AI 생성 콘텐츠 — 이 글은 AI가 자료를 수집하고 초안을 작성했으며, 발행 전 누슘 운영자가 검수했습니다.
퀵소트를 만든 전설적 컴퓨터 과학자 토니 호어는 1965년 자신이 만든 null 참조를 훗날 “10억 달러짜리 실수”라 불렀다. 2026년 3월 세상을 떠난 그가 남긴 유산과 후회를 짚어본다.
프로그래머라면 하루에도 몇 번씩 NullPointerException, undefined is not a function, segmentation fault 같은 문구를 만난다. 이 지긋지긋한 오류들의 뿌리에는 null(널) 참조라는 개념이 있고, 그걸 세상에 처음 들여온 사람이 바로 영국의 컴퓨터 과학자 토니 호어(Sir Charles Antony Richard Hoare)다. 그는 2009년 한 강연에서 이 발명을 두고 “나의 10억 달러짜리 실수(billion-dollar mistake)“라고 고백했다. 그리고 2026년 3월 5일, 92세로 세상을 떠났다.
목차
- 퀵소트를 만든 26살의 천재
- null은 어쩌다 태어났나 — “구현이 너무 쉬웠으니까”
- “10억 달러짜리 실수”라는 고백
- 실수보다 큰 유산
퀵소트를 만든 26살의 천재
토니 호어는 1934년 1월 11일, 당시 영국령이던 스리랑카 콜롬보에서 태어났다. 그의 이름이 컴퓨터 과학사에 처음 새겨진 건 퀵소트(Quicksort) 때문이다. 브리태니커에 따르면 그는 1959년 모스크바 국립대에서 유학하던 시절 이 정렬 알고리즘을 고안했다. 러시아어-영어 기계번역 프로젝트를 하다가 단어를 빠르게 정렬할 방법을 고민한 게 출발점이었다.
퀵소트는 지금도 효율성의 기준으로 통하는 정렬 알고리즘이다. 20대 중반에 이 하나를 만든 것만으로도 그의 이름은 교과서에 남을 만했다. 이후 호어는 1960년 영국의 컴퓨터 회사 엘리엇 브라더스(Elliott Brothers)에 입사해, 새로운 프로그래밍 언어를 설계하는 임무를 맡는다. 그 바탕이 된 것이 피터 나우어(Peter Naur)가 편집한 ALGOL 60 언어 보고서였다.

null은 어쩌다 태어났나 — “구현이 너무 쉬웠으니까”
호어가 설계하던 언어는 훗날 ALGOL W로 이어진다. 그는 이 언어에서 객체를 가리키는 ‘참조(reference)’를 안전하게 다루고 싶어 했다. 실제로 그는 배열 범위 검사처럼, 잘못된 접근을 컴파일러가 자동으로 잡아주는 안전한 언어를 지향했다.
그런데 문제가 하나 있었다. 어떤 참조 변수를 만들었는데 아직 가리킬 대상이 정해지지 않았을 때, “여긴 아직 비어 있다”를 표현할 무언가가 필요했다. 그래서 그는 모든 타입에 속하는 특별한 값, 즉 null을 집어넣었다. InfoQ에 남은 2009년 강연 기록에서 호어는 그 결정을 이렇게 회고했다 — null 참조를 1965년에 도입했는데, “그저 구현하기가 너무 쉬웠기 때문”이었다고.
문제는 여기서 시작된다. null이 모든 타입에 들어갈 수 있게 되자, 모든 참조를 쓸 때마다 “혹시 null인가?”를 검사해야 했다. 검사를 빼먹으면 프로그램이 엉뚱한 메모리를 건드리며 터진다. 호어 자신도 강연에서 “친구인 에츠허르 다익스트라(Edsger Dijkstra)는 null 참조를 나쁜 아이디어로 여겼다”고 회고했다.
“10억 달러짜리 실수”라는 고백
세월이 흘러 null은 거의 모든 주류 언어에 퍼졌다. 그리고 2009년, 호어는 QCon London 2009 강연 무대에서 스스로 이렇게 정리했다.
“나는 그것을 나의 10억 달러짜리 실수라고 부른다. 그것은 1965년 null 참조의 발명이었다. (…) 단지 구현하기가 너무 쉬웠기 때문에 그 유혹을 이기지 못했다.”
그는 null 참조가 지난 수십 년간 초래한 오류·취약점·시스템 다운의 비용을, “10억 달러 언저리(1억 달러보다는 크고 100억 달러보다는 작은 규모)”로 어림했다. 흥미롭게도 같은 강연에서 그는 C 언어의 gets() 함수로 인한 버퍼 오버플로를 두고 “이건 (null보다 더 큰) 수십억 달러짜리 실수”라며, 초기 바이러스·악성코드가 파고든 통로였다고 지적하기도 했다.
핵심은 자기비판에서 그치지 않았다는 점이다. 호어는 “프로그래밍 언어 설계자는 그 언어로 프로그래머가 저지르는 실수에 책임을 져야 한다“고 말했다. 오류가 나면 “그건 프로그래머 잘못”이라고 미루기 쉽지만, 그는 언어 설계 자체가 안전을 보장하도록 만들어야 한다고 봤다.

실수보다 큰 유산
null 하나로 그를 기억하는 건 부당하다. 호어는 프로그램의 정확성을 수학적으로 증명하는 호어 논리(Hoare logic)를 세웠고, 병행 프로그래밍의 토대가 된 CSP(Communicating Sequential Processes, 통신 순차 프로세스)를 정립했으며, 이는 오컴(Occam) 언어와 이후 여러 동시성 모델에 영향을 줬다. 이 공로로 그는 1980년 튜링상을 받았다 — 수상 사유는 “프로그래밍 언어의 정의와 설계에 대한 근본적 기여”였다. 그해 그의 튜링상 강연 제목은 지금도 회자되는 “황제의 낡은 옷(The Emperor’s Old Clothes)”이었다.
2026년 3월 5일, 호어는 영국 케임브리지에서 92세로 별세했다. 그가 남긴 가장 큰 교훈은 어쩌면 null 그 자체가 아니라, 자신의 가장 유명한 발명을 공개적으로 “실수”라 부르고, 그 책임을 설계자에게 돌린 태도일지도 모른다. 오늘날 러스트의 Option, 코틀린·스위프트의 널 안전성, 여러 언어의 non-null 타입 검사는 모두 그 고백이 가리킨 방향 위에 서 있다.
자주 묻는 질문 (FAQ)
Q. null은 정확히 언제, 누가 만들었나? A. 토니 호어가 1965년 ALGOL W 언어를 설계하며 null 참조를 도입했다. 그는 훗날 이를 “10억 달러짜리 실수”라 불렀다.
Q. 왜 null이 그렇게 큰 문제로 여겨지나? A. null이 모든 타입에 들어갈 수 있게 되면서, 참조를 쓸 때마다 null 검사를 해야 하고 이를 빠뜨리면 프로그램이 죽는다. 수십 년간 무수한 오류·취약점·시스템 다운의 원인이 됐다.
Q. 호어는 null 말고 무엇으로 유명한가? A. 정렬 알고리즘 퀵소트, 프로그램 정확성 증명을 위한 호어 논리, 동시성 모델 CSP를 만들었고, 1980년 튜링상을 받았다.
Q. 요즘 언어들은 null 문제를 어떻게 푸나? A. 러스트의 Option 타입, 코틀린·스위프트의 널 안전성 문법, 컴파일 단계의 non-null 타입 검사처럼 “null 가능성을 타입으로 강제 표시하고 검사하게” 만드는 방향으로 발전했다.
마치며
한 사람이 만든 정렬 알고리즘은 반세기 넘게 컴퓨터를 빠르게 했고, 같은 사람이 만든 null은 반세기 넘게 프로그램을 멈춰 세웠다. 그리고 그는 두 가지 모두를 자기 이름으로 인정했다. 오늘 여러분이 마지막으로 만난 null 관련 버그는 무엇이었는지, 그리고 어떤 언어의 널 안전성 기능이 실제로 도움이 됐는지 댓글로 들려달라. 다음 역사·인물 편에서는 호어의 친구이자 “null은 나쁜 아이디어”라 했던 에츠허르 다익스트라의 이야기를 준비해보겠다.
참고자료
- Encyclopædia Britannica — Tony Hoare
- InfoQ — Null References: The Billion Dollar Mistake (Tony Hoare, QCon London 2009)
- Computer History Museum — In Memoriam: Sir Antony Hoare (1934–2026)
- ACM Communications — In Memoriam: C. A. R. Hoare
태그: #토니호어 #null #널포인터 #퀵소트 #튜링상 #ALGOL #프로그래밍역사 #다익스트라 #CSP

댓글을 남기려면 로그인이 필요합니다.
로그인하고 댓글 남기기