
단 16바이트로 무언가를 보여준다고?
혹시 "데모씬(demoscene)"이라는 문화를 들어보셨나요? 1980~90년대 유럽에서 시작된 컴퓨터 예술 운동인데, 한정된 용량과 자원 안에서 영상과 소리를 만들어내는 일종의 코딩 경연이에요. 그런데 최근 Hellmood라는 데모씬 작가가 공개한 "Wake up! 16b"는 그 극한을 보여줘요. 무려 16바이트짜리 실행 파일 안에 시각적 효과를 담아낸 작품이거든요. 16바이트면 한글로 "안녕하세요 반갑습니다" 정도의 길이밖에 안 되는데, 그 안에 그래픽 코드를 욱여넣은 거예요.
이런 게 왜 의미가 있을까요? 요즘 우리가 만드는 모바일 앱은 수십 메가바이트가 기본이고, 웹 페이지 하나도 몇 메가가 훌쩍 넘어가잖아요. 그런데 누군가는 여전히 "바이트 단위로 깎아내는 기술"을 갈고닦고 있어요. 이 흐름은 단순한 취미를 넘어서, 임베디드나 펌웨어처럼 자원이 제한된 환경에서 일하는 개발자들에게도 영감을 줘요.
16바이트 안에 무엇이 들어있나
작가의 라이트업을 보면, 작품은 DOS 환경의 .COM 실행 파일 형식을 사용해요. .COM 파일은 헤더 없이 코드가 그대로 메모리에 적재되는 아주 단순한 구조라, 1바이트도 낭비 없이 활용할 수 있어요. 핵심은 인텔 x86 명령어 중 가장 짧은 것들만 골라서, 각 바이트가 "여러 역할을 동시에 하도록" 설계한 거예요.
예를 들어, 어떤 바이트는 그 자체로는 명령어인데, 다음 명령어의 오퍼랜드(피연산자, 명령어가 사용할 값)로도 활용돼요. 또 VGA 메모리의 시작 주소인 0xA000:0000에 데이터를 쓰면 곧바로 화면 픽셀이 바뀌는 DOS 시절의 특성을 활용해서, 별도의 그래픽 라이브러리 호출 없이 직접 화면을 칠해요. CPU 레지스터 초깃값이 DOS에서 프로그램이 시작될 때 특정 값으로 설정된다는 점도 이용해요. 이걸 활용하면 "값을 설정하는 코드"를 아예 생략할 수 있거든요. 1바이트 절약을 위해서 OS의 동작 방식까지 다 알아야 가능한 트릭이에요.
그 결과 "Wake up!"이라는 글자 모양을 흩뿌려놓은 듯한 시각 효과가 화면에 나타나요. 16바이트 안에 글자 모양 데이터와 그리는 루틴, 애니메이션 효과까지 모두 들어있다는 게 믿기지 않을 정도예요.
데모씬의 전통과 현대적 의미
이런 "극한의 작은 코드" 경쟁에는 오랜 역사가 있어요. 256바이트 인트로, 4KB 인트로, 64KB 데모 같은 카테고리들이 있고, Revision이나 Assembly 같은 대형 페스티벌에서 매년 경연이 열려요. 4KB 안에 풀 3D 그래픽과 음악, 카메라 워크까지 담아내는 작품들도 있고요. 이런 작품들은 보통 자체 압축기, 절차적 텍스처 생성, 신디사이저까지 한 사람이 다 만들어요.
비슷한 맥락에서 최근에는 자바스크립트 1KB 챌린지인 js1k나, PICO-8 같은 가상 콘솔에서 작은 게임을 만드는 문화도 인기예요. 모두 "제약이 창의성을 키운다"는 철학을 공유하고 있어요. 또 한편으로는 이런 기술이 단순한 예술 영역을 넘어, 악성코드 분석이나 익스플로잇 개발 영역에서도 비슷한 패턴이 나타나요. ROP(Return-Oriented Programming) 같은 공격 기법도 "기존 바이트 조각을 재활용해서 새 의미를 만든다"는 점에서 데모씬과 통하는 부분이 있어요.
한국 개발자에게 주는 영감
실무에서 16바이트 프로그램을 짤 일은 없겠지만, 이 작품이 던지는 메시지는 곱씹어볼 만해요. 우리는 종종 "라이브러리 하나만 더 추가하면 되지"라는 생각으로 의존성을 늘리고, 그러다 보면 빌드 결과물이 점점 무거워져요. 그런데 이런 작은 코드 미학을 보면, "꼭 필요한 것만 남기는 능력" 이 얼마나 중요한지 다시 생각하게 돼요. 특히 임베디드 펌웨어, IoT, 웹어셈블리(WASM) 모듈처럼 용량이 곧 성능과 직결되는 분야에서는 이런 사고방식이 실제 무기가 되거든요.
또 컴퓨터의 밑단을 이해하는 공부 자료로도 훌륭해요. CPU 레지스터, 메모리 맵, 명령어 인코딩 같은 개념을 책으로만 배우면 추상적인데, 이런 작품의 라이트업을 따라가면서 "왜 이 1바이트가 두 가지 역할을 할 수 있는지"를 이해하다 보면 컴퓨터 구조에 대한 감이 확실히 잡혀요. 신입 개발자라면 한 번쯤 라이트업을 인쇄해서 천천히 읽어보는 것을 추천드려요.
마무리
수십 기가바이트의 게임이 흔한 시대에, 16바이트로 무언가를 만든다는 건 거의 시(詩)에 가까운 일이에요. 여러분이 마지막으로 "이 코드, 정말 꼭 필요한가"를 자문해본 게 언제였나요? 가끔은 더하는 것보다 빼는 게 더 어려운 일인 것 같아요.
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공