
40여 년 전 BASIC 게임책, C로 포팅되다
혹시 'BASIC Computer Games'라는 책 이름 들어보셨어요? 1978년에 데이비드 알(David Ahl)이 펴낸 책인데요, BASIC이라는 옛날 프로그래밍 언어로 짠 게임 101개의 소스 코드가 통째로 실려 있어요. 당시엔 게임을 사서 하는 게 아니라, 책에 적힌 코드를 한 줄 한 줄 직접 컴퓨터에 입력해서 돌려보던 시절이었거든요. 이 책은 컴퓨터 관련 서적으로는 처음으로 100만 부가 팔린, 말 그대로 한 세대 개발자들을 키워낸 전설적인 책이에요.
이번에 소개할 프로젝트는 그 101개 게임을 현대의 C 언어로 옮긴(porting) 거예요. 햄무라비(고대 도시를 다스리는 경영 시뮬레이션), 스타 트렉, 행맨 같은, 지금 보면 소박하지만 핵심 재미는 다 갖춘 텍스트 기반 게임들이 다시 살아난 거죠.
왜 굳이 C로 옮길까
여기서 '왜 오래된 게임을 굳이 다시 옮기지?' 싶을 수 있어요. 이유가 몇 가지 있어요. 첫째, 옛 BASIC은 컴퓨터마다 방언처럼 문법이 조금씩 달랐고, 지금은 그걸 그대로 돌릴 환경이 거의 없어요. 그래서 어디서나 컴파일되는 C로 옮기면 요즘 컴퓨터에서도 쉽게 실행할 수 있죠. 둘째, BASIC은 GOTO로 줄 번호를 마구 건너뛰는 '스파게티 코드' 스타일이라, 이걸 함수와 반복문 같은 현대적 구조로 다시 짜는 과정 자체가 좋은 공부가 돼요. 셋째, 디지털 역사 보존의 의미도 커요. 종이책에만 남아 있던 코드를 깃허브에 올려두면, 누구나 받아서 읽고 고치고 배울 수 있으니까요.
기술적으로 보면, 이 게임들은 대부분 표준 입출력만 쓰는 콘솔 프로그램이에요. 화면에 글자를 출력하고, 사용자 입력을 받고, 간단한 난수와 조건문으로 게임을 굴리는 구조죠. 그래서 C 입문자가 '완성된 작은 프로그램'을 통째로 읽어보기에 딱 좋은 교재가 됩니다. 외부 라이브러리도 거의 필요 없어서, 컴파일하고 바로 돌려볼 수 있고요.
비슷한 프로젝트들
사실 이 책을 현대 언어로 되살리는 시도는 전에도 있었어요. 가장 유명한 건 스택 오버플로 공동창업자가 주도한 커뮤니티 프로젝트로, 같은 101개 게임을 파이썬·자바스크립트·C# 등 여러 언어로 옮긴 거예요. 여러 사람이 자기가 좋아하는 언어로 한 게임씩 맡아 번역하는 식이었죠. 이번 C 포팅은 그 흐름의 연장선에서, '한 언어(C)로 일관되게, 가장 기본에 가까운 형태로' 옮겼다는 데 의미가 있어요. 언어별로 같은 게임이 어떻게 달리 구현되는지 비교해보는 재미도 있고요.
한국 개발자에게 주는 시사점
요즘은 프로그래밍을 배울 때 프레임워크, 빌드 도구, 패키지 매니저부터 마주쳐서 진입 장벽이 높게 느껴지죠. 그런데 이런 옛 게임들은 '입력 받고, 계산하고, 출력하는' 프로그래밍의 가장 본질적인 뼈대만 담고 있어요. C를 막 배우는 분이라면, 이 코드들을 읽고 직접 고쳐보면서 표준 입출력, 반복문, 난수, 상태 관리 같은 기본기를 자연스럽게 익힐 수 있어요. '작지만 끝까지 완성된 프로그램'을 통째로 이해하는 경험은 생각보다 귀하거든요.
또 하나, 낡은 코드를 현대적 구조로 다시 짜는 리팩터링 연습으로도 훌륭해요. 실무에서 우리는 늘 남이 짠(혹은 과거의 내가 짠) 코드를 읽고 개선하는 일을 하는데, 이 작업의 축소판을 부담 없이 경험할 수 있죠.
마무리
40년 넘은 게임 코드가 여전히 누군가에게 첫 프로그래밍 경험이 될 수 있다는 게 멋지지 않나요? 여러분이 만약 한 게임을 골라 좋아하는 언어로 옮긴다면, 어떤 게임을 어떤 언어로 다시 만들어보고 싶으세요?
🔗 출처: Hacker News