오픈소스 GW-BASIC의 시간 여행
지난주에 막을 내린 마이크로소프트 개발자 컨퍼런스 빌드 2020. 마지막 날에 깜짝 발표가 있었다. 행사의 헤어짐을 기리기 위한 '원 모어 씽'은 IT업계에서 종종 목격되는 전통이다. 어차피 코로나 사태 속 온라인 행사였기에 마지막 날 특유의 분위기를 내는 석별의 아쉬움 같은 연출은 없었지만, 올해만큼은 화제를 부른 남다른 발표가 있었다.
바로 83년의 GW-BASIC이 오픈소스로 공개된다는 뉴스였다.
GW-BASIC이라고 하면 지금 한국의 중년들에게도 남다른 감회가 있을 것이다. 특히 80년대 말 한국 문교부가 교육용 PC 사업을 16비트로 진행하면서 8비트 PC는 한국에서 멸종하게 된다. 대신 80년대 말에서 90년대에 걸쳐 수많은 컴퓨터 학원들이 창업, DOS와 베이직을 가르치기 시작한다. 어떤 사단법인에서는 학생들 대상으로 자격증까지 만들기도 했다. 그 베이직이 바로 이 GW-BASIC이었다.
베이직을 화제로 꺼내면 나이를 가늠할 수 있다. "나 때는 말이야 GW-BASIC을 학원에서...”라고 무용담이 시작하면 40대, 만약 MSX-BASIC이나 애플의 베이직을 기억한다면?
어쨌거나 우리에게 GW-BASIC이라고 하면 국립국어원의 우리말샘 국어사전에도 등재되어 있을 정도로 한국에서 더 유명한 프로그래밍 언어다. 사전을 펼쳐 보면, 지더블유^베이식 (Greg Whitten Beginner’s All-purpose Symbolic Instruction Code) "아이비엠 피시에서 사용될 수 있도록, 마이크로소프트사(Microsoft社)에서 개발한 베이식 인터프리터.”로 나와 있다.
이 사전에는 GW의 약자 뜻이 사람 이름으로 적혀있지만 GW의 어원에는 여러 가지 설이 있다. 위의 그레그는 베이직(국어 사전에는 베이식이라고 되어 있지만, 그 시절에는 모두 베이직이라고 읽었으므로 이렇게 쓰자)의 고수. 마이크로소프트 입사 이전부터 베이직을 라이센스 없이 막 개조해대는 실력과 열정으로 유명한 재야의 인재였다. 그 내공 덕에 79년 입사 후 베이직을 도맡았는데 빌 게이츠가 그의 이름을 기려 명명했다는 설이 유력했다. 하지만 정작 그레그씨는 GW가 Gee Whizz(영어로 우와! 세상에! 라는 뜻)의 약어라고 이야기한다. 게이츠 윌리엄(빌 게이츠)의 약자일 것이라고도 이야기되곤 했는데, GW-BASIC 시절의 빌 게이츠는 이미 거대 기업의 수장. GW-BASIC의 이름을 지은 것도 빌 게이츠 자신이었으니 자기 이름을 붙였을 것 같지는 않다. GW는 그레그 또는 감탄사를 중의적으로 뜻하지만, 일없는 호사가들이 38년 뒤에 내 이름은 아닐까 추측하곤 하는 것만으로도 족하다고 생각했을지도 모르겠다.
어쨌거나 GW-BASIC의 소스가 깃헙에 공개되었는데 소스 수정 요청 등은 할 수 없는 아카이브 상태. 소스의 날짜는 선명하게 ‘38년 전’. 83년 2월 시점의 소스 코드다.
실제로 소스 코드를 살펴보자. 빌 게이츠의 흔적이 어디 있는지는 알 수 없지만, 경의의 표시만큼은 명료하게 남아 있다. 예를 들어 메인 모듈인 GWMAIN.ASM만 열어봐도 여실히 나타난다.
--------- ---- -- ---- ----- --- ---- -----
COPYRIGHT 1975 BY BILL GATES AND PAUL ALLEN
--------- ---- -- ---- ----- --- ---- -----
ORIGINALLY WRITTEN ON THE PDP-10 FROM
FEBRUARY 9 TO APRIL 9 1975
BILL GATES WROTE A LOT OF STUFF.
PAUL ALLEN WROTE A LOT OF OTHER STUFF AND FAST CODE.
MONTE DAVIDOFF WROTE THE MATH PACKAGE (F4I.MAC).
위와 같은 주석이 기록되어 있는데, GW-BASIC의 핵심 부분은 1975년에 창업자 빌 게이츠와 폴 알렌이 직접 짠 그들의 첫 상용 제품 알테어 베이직과 뼈대를 공유하고 있으므로 전체가 그 흔적이라고 봐도 좋을 것이다.
세계 최초의 마이크로 컴퓨터(모니터도 없이 프린터와 연결하여 입출력을 하던 70년대 기종)인 알테어에 베이직이 있으면 좋겠다고 생각해 2개월 만에 만들어낸 이 전설적 코드. 마이크로소프트의 근간이 되어준 이 코드는 놀랍게도 알테어 실제 제품을 보지도 못한 상태에서 만들어진다. 곧 출시된다는 알테어라는 취미용 개인 컴퓨터의 에뮬레이터를 시간당 빌려 쓰던 하버드 대학 전산기 PDP-10에서 만들고 다시 그 위에서 개발했던 것. 물론 시대가 시대이니만큼 그것도 전부 어셈블리어다. 자선 사업가 빌 게이츠의 청춘 시절, 그는 불세출의 해커였던 것만은 분명하다.
위 주석의 마지막 줄에도 주목할만하다. 수학 쪽을 몬테 데이비도프가 짰다고 되어 있다. 그는 당시 같은 하버드대생이었던 ‘알바생’. 소수점 계산을 가능하게 한 이 베이직의 수학 모듈 덕에 마이크로소프트는 베이직은 장난감 이상, 취미 이상의 용도로도 활용할 수 있음을 시장에 알렸다.(몬테가 직접 이 제안을 했고 스스로 구현한 뒤 홀연히 떠났고, 그는 정작 마이크로소프트에 입사하지는 않는다.)
이 수학 모듈은 결정적 경쟁력이 된다. 스티브 워즈니악이 애플 ][용 베이직을 직접 만들었음에도 불구하고, 후일 마이크로소프트가 만든 베이직을 탑재할 수밖에 없었는데, 이유는 바로 그 수학 기능 때문이었다.
1975년 3명의 청춘이 보낸 뜨거웠던 날들. 단 두 달 만에 급조된 이 한 편의 프로그램은 오늘날 마이크로소프트의 원점이 된다. 그런데 개인용 컴퓨터의 여명기, 최전선의 취미애호가들은 프로그램은 공유하는 것이 당연하다고 생각했다. 그의 베이직에 정작 돈을 낸 사람들은 10%에 불과했다. 그가 소프트웨어에서의 지적재산권의 가치를 웅변하던 그 유명한 공개서한이 집필되고, 상용 소프트웨어 시대의 전성기가 열린 것도 바로 이때다.
지금은 제품이 아닌 클라우드라는 구독형 서비스로 소프트웨어 산업은 물론 마이크로소프트 자신도 이행해버렸지만, 도스에서 윈도로 이어지며 세계 모든 컴퓨터가 만들어질 때 함께 설치되던 세계 정복형 소프트웨어의 원점에는 이처럼 베이직이 있었다.
MS-BASIC 혹은 롬 베이직이라고 불리며 8비트 시절부터 코모도어 등 다양한 기종에 탑재되었다. 애플 ][에도 탑재되었고, MSX에도 탑재되었다. 8비트 전국 시대 당시 세계 곳곳에서는 저마다의 다른 기계들이 난립했다. 기종마다 서로 호환성은 없었지만, MS-BASIC 특유의 베이직 문법만큼은 어딘가 서로 비슷해서 위화감이 없었다. 또 롬에 거뜬히 탑재될 정도로 작고 가벼워서 컴퓨터를 켜면 제일 먼저 반겨주는 역할을 베이직이 맡았다. 그렇게 사실상 표준이 된 마이크로소프트의 베이직은 16비트 시대가 되면서도 질주가 이어졌다. 순정 IBM PC에 BASICA라는 이름으로 라이센스되더니(IBM도 애플처럼 자가제 베이직이 이미 있었음에도 불구하고), 드디어 IBM 호환 기종용 범용 MS DOS에 GW-BASIC으로 등장하게 되면서 베이직 천하 통일에 종지부를 찍게 된다.
그때가 공개된 소스의 날짜인 83년이니 75년의 시작으로부터 8년. 세상 거의 모든 PC에서 자신이 밤새 짠 코드가 도는 기분을 느끼던 시절, 베이직으로 마이크로소프트의 첫 번째 세계 정복이 이뤄진 시기였다.
그 뒤에도 퀵베이직이니 비쥬얼베이직이니 더 번듯한 프로그램을 만들어낼 수 있도록 성장하지만, 마이크로소프트의 창업 정신이 그대로 녹아 있는 초대 베이직의 정통파 계승자는 GW-BASIC이었다.
그로부터 세월은 꽤나 흘렀다. 하드웨어의 비약적 발전은 소프트웨어의 삽질을 덜어준다. 삽질의 추억은 공개된 소스의 주석에도 나타난다. MATH1.ASM을 보자.
;WE COULD NOT FIT THE NUMBER INTO THE BUFFER DESPITE OUR VALIENT EFFORTS ;
(우리의 용맹한(오타?) 노력에도 불구하고 그 수를 버퍼에 욱여넣을 수는 없었다.)
수많은 제약 조건으로 뒤덮인 초창기의 컴퓨터에서 베이직을 띄우려고 얼마나 많은 밤을 지새웠을지 궁금해진다.
한편 베이직의 시대가 저문 오늘날. 베이직의 정신을 가장 잘 계승한 것은 무엇일까.
아마도 자바스크립트가 아닐까 한다. 특히 웹 어셈블리의 등장으로 인해, 베이직과 어셈블리를 섞어 가며 PEEK/POKE하던 추억이 되살아난다. 인류의 최종 기계 웹을 위한 가장 ‘베이식’한 언어로서 자바스크립트는 진화를 거듭, 이제는 그 시절의 애플과 MSX마저도 구동하기 시작했다.
Apple ][ js (RESET 키를 눌러서 시작)
유튜브도 카톡도 없던 그 시절 심심했던 아이들은 컴퓨터 잡지를 사다가 ‘투고’된 베이직 프로그램을 타자하며 즐기곤 했다.
10 PRINT “ HELLO, WORLD ”;
20 ? 202*10;
30 GOTO 10
RUN
물론 이보다는 훨씬 길어 두 페이지쯤 입력하면 하루가 가곤 하던 시절이었다.