처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.09.07 27

1024바이트로 만든 파이썬 인터프리터, 무엇을 배울 수 있나

Hacker News 원문 보기

주말마다 손으로 코드를 짠다는 개발자 오스틴 헨리(Austin Henley)가 이번에 스스로에게 낸 과제는 도발적이다. 오직 C 언어만으로, 매크로 꼼수나 외부 라이브러리 없이 1024바이트 안에 '파이썬처럼 보이는' 인터프리터를 구현하는 것. 그는 처음 512바이트를 목표로 잡았지만 곧 자신의 코드 골프 실력으로는 무리라는 걸 인정하고 한도를 두 배로 늘렸다. 이 짧은 실험은 단순한 취미 코딩을 넘어, 언어 처리기가 실제로 어떻게 동작하는지를 극단적으로 압축해 보여준다는 점에서 실무자에게도 곱씹을 만한 대목이 많다.

파이썬을 '흉내'낸다는 것

그가 목표로 삼은 것은 파이썬 전체가 아니라, 파이썬처럼 보이는 최소 부분집합이다. 기준으로 삼은 예제는 흔한 FizzBuzz 프로그램이었다. def, 콜론, 들여쓰기, 그리고 if 문에 괄호가 없다는 점만으로도 충분히 파이썬처럼 보인다는 것이 그의 판단이다. 그는 1 + 2 같은 가장 단순한 식에서 출발해 x = 1 + 2 * 3으로 연산자 우선순위를 넣고, if x > y: z = 3처럼 문장까지 확장했다. 그러나 이 시점에서 이미 계산기 수준이 되어버렸고 바이트 한도도 넘겨버렸다. 결국 '파이썬다워 보이는 요소' 목록을 다시 정리하고, 우선 동작시킨 뒤 줄이는 전략으로 방향을 틀었다.

컴파일 없이 실행하는 구조

실제 CPython은 소스를 토큰화하고 추상 구문 트리로 파싱한 뒤 분석과 최적화를 거쳐 바이트코드를 만들고 이를 해석한다. 반면 이 초소형 인터프리터에는 중간 표현이 아예 없다. 재귀 하향 파서가 식을 파싱하면서 그 자리에서 곧바로 실행한다. 상태는 몇 개의 전역 변수로만 유지되고, 원본 코드는 고정 길이 배열(현재 999바이트)에 담긴다. 변수와 함수 이름도 단일 배열에 들어간다. 변수명은 소문자 한 글자로 제한되는데, 덕분에 심볼 테이블 조회를 배열 인덱스처럼 직접 처리할 수 있다.

블록 실행 함수는 들여쓰기가 줄어들 때까지 계속 진행하다가, 줄어들면 호출자에게 제어를 돌려준다. 즉 파이썬의 블록 재귀를 C 프로그램 자체의 콜 스택에 그대로 얹은 셈이다. 컴파일된 것이 없으니 반복문은 매 반복마다 소스를 되짚어 다시 파싱하는 방식으로 동작한다. while과 for 모두 조건식의 위치를 기억해 두었다가 본문 실행이 끝나면 그 지점으로 되돌아간다. 함수도 마찬가지다. 정의를 파싱할 때 심볼 테이블이 함수의 소스 내 위치를 기억하고, 호출 시에는 호출 지점을 저장한 뒤 함수 본문으로 점프해 실행하고 끝나면 원래 위치를 복원한다. 중간 표현이 없어도 이만큼 동작한다는 점이 이 프로젝트의 미학이다.

바이트를 줄이는 기술과 그 대가

크기를 줄이는 과정은 험난했다. 변수명과 공백을 없애는 것은 기본이고, 그는 이미 오래되어 잊힌 사이트라며 스택 오버플로의 'C 코드 골프 팁'에서 많은 아이디어를 얻었다고 밝힌다. 예컨대 덧셈을 처리하던 parse_sum 함수는 e(){for(z=t();c-43u

이 뉴스가 유용했나요?

이 기술을 직접 배워보세요

파이썬으로 자동화를 시작해보세요

파이썬 기초부터 자동화까지 실전 강의.

파이썬 강의 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.