
악의보다 실수를 먼저 의심하라, 핸런의 면도날(Hanlon’s Razor)
새로 산 노트북은 처음 몇 달 동안 무척 빠릅니다. 그런데 운영체제와 프로그램을 몇 번 업데이트하고 나면 어느새 예전 컴퓨터처럼 버벅거리기 시작합니다. 칩은 해마다 빨라지는데 체감 속도는 좀처럼 나아지지 않는 이 묘한 현상을 한 문장으로 꼬집은 말이 있습니다. 그것이 바로 ‘워스의 법칙(Wirth’s Law)’입니다.
워스의 법칙이란 쉽게 말해 ‘소프트웨어가 느려지는 속도가 하드웨어가 빨라지는 속도보다 더 빠르다’는 경험 법칙을 의미합니다. 하드웨어가 아무리 좋아져도 소프트웨어가 그 몫을 먼저 먹어 치우기 때문에, 사용자가 느끼는 속도는 제자리걸음을 하거나 오히려 뒷걸음질한다는 뜻입니다.
본 자료에서는 워스의 법칙이 어디서 나왔는지부터, 소프트웨어가 무거워지는 까닭, 오늘날 우리 주변에서 보이는 사례, 그리고 가벼운 소프트웨어를 만들기 위한 방법까지 차례로 살펴보겠습니다.
빨라진 칩을 따라잡는 무거운 소프트웨어
워스의 법칙은 어디서 왔을까?

이 법칙의 이름은 스위스의 컴퓨터 과학자 니클라우스 워스(Niklaus Wirth)에게서 왔습니다. 워스는 1970년에 프로그래밍 언어 파스칼(Pascal)을 발표했고, 1984년에는 컴퓨터 과학의 노벨상이라 불리는 튜링상을 받은 인물입니다.
(1) 「가벼운 소프트웨어를 위한 호소」
워스는 1995년 학술지 「컴퓨터(Computer)」에 「가벼운 소프트웨어를 위한 호소(A Plea for Lean Software)」라는 글을 실었습니다. 그는 이 글에서 “소프트웨어는 하드웨어가 빨라지는 것보다 더 빠르게 느려지고 있다”는 말을 동료 마르틴 라이저(Martin Reiser)의 말로 소개했고, 이 문장이 훗날 워스의 법칙으로 불리게 되었습니다.
(2) 숫자로 본 비대해진 소프트웨어
워스는 약 25년 전만 해도 대화형 문서 편집기를 8,000바이트로 만들 수 있었고, 컴파일러는 32킬로바이트 안에 들어가야 했다고 적었습니다. 그런데 그 후손들은 메가바이트 단위의 메모리를 요구하며, 하드웨어가 천 배쯤 빨라지지 않았다면 쓸 수조차 없었을 것이라고 비판했습니다.
(3) 무어의 법칙과 짝을 이루는 관찰
무어의 법칙(Moore’s Law)이 반도체에 들어가는 트랜지스터 수가 꾸준히 두 배씩 늘어난다는 예측이라면, 워스의 법칙은 그렇게 얻은 성능이 사용자에게 고스란히 돌아가지 않는다는 반대편의 관찰입니다. 워스는 1978년부터 1993년까지 인텔 80×86 계열 프로세서의 성능이 335배 좋아졌다고 적으면서도, 소프트웨어의 끝없는 식욕이 줄어들 기미는 보이지 않는다고 덧붙였습니다.
소프트웨어는 왜 점점 무거워질까?

워스는 소프트웨어가 커지는 현상을 사람들이 쉽게 받아들이는 이유로 두 가지를 꼽았습니다. 하나는 하드웨어 성능이 너무 빠르게 좋아진다는 점이고, 다른 하나는 꼭 필요한 기능과 있으면 좋은 기능을 구별하지 못하는 소비자의 태도입니다.
(1) 기능 덧붙이기(Feature Creep)
새 버전을 낼 때마다 기능을 하나둘 더하다 보면, 대부분의 사람이 거의 쓰지 않는 기능까지 쌓여 프로그램이 무거워집니다. 워스는 사람들이 복잡함을 세련됨으로 착각한다고 꼬집었습니다.
(2) 겹겹이 쌓인 층(Layers of Abstraction)
개발을 쉽게 해 주는 도구와 라이브러리를 여러 겹 쌓으면 만들기는 빨라지지만, 실행할 때 거쳐야 하는 단계도 그만큼 늘어납니다.
(3) 빠른 하드웨어에 대한 믿음
‘어차피 컴퓨터가 빨라질 테니 최적화는 나중에 해도 된다’는 생각이 퍼지면 효율을 다듬는 작업이 뒤로 밀립니다. 워스가 인용한 또 다른 말처럼 소프트웨어는 쓸 수 있는 메모리를 가득 채울 때까지 늘어납니다.
오늘날 우리 곁의 워스의 법칙

워스의 법칙은 시대마다 이름을 바꿔 가며 되풀이되었습니다. 1990년대에는 “인텔이 준 것을 마이크로소프트가 가져간다”는 농담이 유행했고, 2009년 구글 개발자 행사에서는 세르게이 브린이 같은 현상을 공동 창업자 래리 페이지의 이름을 따 ‘페이지의 법칙’이라 부르기도 했습니다.
- 메신저 앱(Messenger Apps): 글자를 주고받는 일은 예나 지금이나 같지만, 앱 하나가 수백 메가바이트의 메모리를 차지하는 일이 흔해졌습니다.
- 웹 페이지(Web Pages): 기사 몇 문단을 읽는 데 광고와 추적 코드, 동영상 재생기까지 함께 내려받느라 화면이 늦게 뜹니다.
- 문서 편집기(Word Processors): 글을 넣고 지우고 옮기는 기본 일은 그대로인데, 설치 용량과 시작 시간은 버전마다 늘어났습니다. 창과 아이콘이 생겼다고 편집기의 본래 임무가 바뀐 것은 아니라는 것이 워스의 지적입니다.
- 휴대전화 업데이트(OS Updates): 새 운영체제가 최신 기기에 맞춰 만들어지면, 몇 년 된 기기는 같은 일을 하면서도 눈에 띄게 느려집니다.
가벼운 소프트웨어를 만드는 방법

워스는 비판에서 멈추지 않고 직접 본보기를 만들었습니다. 그는 동료 위르크 구트크네히트(Jürg Gutknecht)와 함께 1986년부터 1989년까지 오베론(Oberon)이라는 운영체제를 단 두 사람의 힘으로 만들었고, 같은 이름의 프로그래밍 언어도 함께 설계했습니다. 편집기와 컴파일러를 포함한 오베론의 핵심은 200킬로바이트도 되지 않았습니다.
(1) 본질에 집중하기
꼭 필요한 기능부터 정하고, 나머지는 필요한 사람만 덧붙여 쓸 수 있게 나누어 둡니다.
(2) 성능을 꾸준히 재기
새 기능을 넣을 때마다 실행 속도와 메모리 사용량을 재어, 조금씩 무거워지는 흐름을 일찍 알아챕니다.
(3) 덜어 내는 용기
워스는 프로그래밍에서 가장 큰 만족은 무언가를 빼는 데 성공했을 때 온다고 말했습니다. 쓰이지 않는 코드를 지우는 일도 기능을 더하는 일만큼 중요합니다.
워스의 법칙은 하드웨어의 발전이 소프트웨어의 군살을 감춰 주는 동안 우리가 놓치기 쉬운 비용을 일깨워 줍니다. 칩이 빨라진 만큼 사용자가 더 빠른 경험을 누리려면, 만드는 사람이 처음부터 효율과 단순함을 기준으로 삼아야 합니다. 이는 전력과 기기 교체 비용을 줄이는 일과도 맞닿아 있습니다.
더하기보다 덜어 내기를 먼저 고민하는 것, 그것이 빠르고 오래가는 소프트웨어 개발의 첫걸음입니다.




