제 2장.
.....
해가 뜰 무렵, 야릇한 목소리가 나를 깨웠다. 그 목소리는 말했다.
"양 한 마리를 보여줘!"
"뭐라구?"
.....
"부탁이야... 양을 한 마리 그려줘..."
그래서 나는 다음과 같은 코드를 보여주었다.
printf("Sheep.\n");
그러자 그는 주의 깊게 바라보더니,
"안 돼! 이 양은 stdio.h를 include 해야 하는 걸." 이라고 말했다.
그래서 난 친절하게 다음과 같은 코드를 보여주었다.
putchar('S'); putchar('h'); putchar('e'); putchar('e'); putchar('p');
"코드가 너무 지저분에.. 나는 깔끔한 양을 원한다고."
나는 디버깅을 계속해야 했으므
로 더 이상 참지 못하고 다음과 같이 썼다.
Class Box:
Object sheep;
void peek();
....
"이건 상자 클래스야. 네가 원하는 양은 peek() 메쏘드
로 호출할 수 있어."
그러나 나의 어린 슈퍼바이저의 얼굴이 환히 밝아지는 것을 보고 나는 놀라지 않을 수 없었다.
"이게 바
로 내가 원하던 거야! 이 peek()는 메모리를 많이 써?"
"왜 그런 걸 묻지?"
"내 컴퓨터는 아주 옛날 꺼거든..."
"거기 있는 걸
로 아마 충분할 거야. 네게 준 것은 기본 자료구조를 사용했으니까."
이렇게 나는 어린 왕자를 알게 되었다.
제 4장.
....
나는 어린 왕자가 쓰던 시스템이 B612 시스템이라는 근거를 가지고 있었다. 이 시스템은 터키 계산학자가 1999년 이후에 제시하였던 모델이었다.
그 당시 그는 그 모델이 훌륭하게 작동한다는 것을 보였다. 하지만, 그의 논문은 후줄근한 폰트
로 작성되어 있었기 때문에 아무도 그 논문에 관심을 가지지 않았다. ... 2009년 그가 간지나는 IEEE 형식의 논문으
로 작성하자 모두들 그 논문을 인정했다.
내가 이렇게 자세하게 이야기하는 이유는 어른들 때문이다. 어른들은 숫자를 좋아한다.
새
로 짠 프
로그램의 이야기를 할 때면 그들은 가장 긴요한 것은 물어 보는 적이 없다.
" 그 프
로그램은 어떻게 동작하지? 그 칩은 무슨 일을 하지? 칩의 형태는 어떻지?"
라는 말을 하지 않는다.
" 그 프
로그램의 용량은 얼마지? 그 칩의 가격은 얼마고? 수행시간은 몇 초지?"
라고 그들은 묻는다.
그제서야 그들은 다 이해했다고 생각하는 것이다. 만약 어른들에게
" 메인보드에는 RAM이 아름답게 꽃혀있고 슬림한 케이스를 가지고 있었어요."라고 말하면 그들은 알지 못한다. 그들에게는 "쿼드코어에 1TB 하드를 가진 컴퓨터"를 봤다고 말해야 한다. 그러면 그들은 "아, 참 좋은 컴퓨터구나!" 하고 소리친다.
제 3장.
어린 왕자가 어떤 시스템을 사용해왔는지 아는데는 오랜 시간을 알았다. 나는 어쩌다 들려오는 명령어들을 흘려 듣고 모든 것을 알게 되었다.
가령, 그가 처음으
로 나의 ipad를 보았을 때 (내 ipad는 그릴 수 없다. 저작권 문제 때문에..)
그는 이렇게 물었다.
"이 물건은 뭐야?"
"그건 물건이 아니야. 그건 아이패드야. 내 아이패드."
나는 내가 무선으
로 접속한다는 것을 자랑스럽게 말했다.
....
그러자 그는 큰 소리
로 외쳤다.
"그럼 아저씨도 다른 시스템 프
로그래머였구나? 어느 개발환경에서 왔어?"
나는 그 말을 듣자, 수수께기 같은 그의 경력에 한 줄기 실마리를 잡은 듯했다.
....
그는 생각에 잠긴 듯 한동안 말이 없더니 이렇게 대답했다.
"잘 됐어. 아저씨가 짠 클래스는 다른 어플리케이션에서도 사용할 수 있을꺼야."
"물론이지. 그리고 네가 얌전히 굴면 peek()를 iterating 할 수 있는 메쏘드도 짜줄게."
"iterating? 그것 참 괴상한 생각이다!"
"그렇지만 일일이 peek()하면 귀찮을텐데."
...
그 때 어린 왕자는 엄숙하게 말했다.
"괜찮아. 내 시스템은 아주 작은 시스템이야."
그리고는 어쩐지 쓸쓸한 목소리
로 덧붙였다.
"몇 번 호출해봤자, 그렇게 많이 메모리를 쓸 수도 없어...."
제 5장.
.....
어린 왕자가 느닷없이 물었다.
"아저씨가 짠 코드에는 memory leak이 있지는 않겠지?"
"그럼 자바에는 garbage collector가 있어서... 근데 왜 그렇게 간단한 프
로그램에 대해서 메모리 누수를 걱정하지?"
어린 왕자는 "아이 참!" 이면서 당연한 듯이 대꾸했다. 따라서 나는 그에 대해서 한 참을 생각해야 했다.
어린 왕자가 가지고 있는 시스템은 많은 응용 프
로그램들과 시스템 프
로그램들이
(그가 말하는 수준으
로 봐서는.) 구동되고 있었다. 실제
로 돌아가는 프
로그램이라면
내버려 두어야 한다.
하지만 나쁜 프
로그램이라면 바
로바
로 메모리에서 detach 시켜버려야 한다. 가장 무서운 것은
garbage 들이었는데 (C의 경우라면 heap에 쓰고 free시켜주지 않은..) 이 녀석들은 바
로바
로
free해주지 않으면 그 때는 정말 제거할 방법이 없는 것이다.
불행히도 어린왕자의 시스템은 매우 작아서 그런 쓰레기들이 많이 차지하게 되면
정작 중요한 프
로그램은 하나도 돌릴 수 없게 되어버리는 것이다.
제 6장.
...
나흘째 되는 밤, 나는 그 새
로운 사실을 알았지. 네가 내게 이렇게 말했거든.
"나는 프
로그램을 release하는 것을 좋아해. 빨리 source-forge에 배포해줘."
"기다려야지..."
"뭘 기다리지?"
"프
로그램이 다 구성될 때까지 기다려야지."
너는 처음에는 몹시 놀랐지만 웃음을 떠트리면서 이렇게 말했지.
"아직 집에 있는 건만 같거든!"
물론 프
로그램을 다 구성해서 완료하는 것은 있는 일이다. 불행히도, 프
로젝트가 조금 더 크거나 하면 새
로운 버전을 내는 것은 너무 어려운 일이다. 하지만, 너는 간단한 프
로그램만 짜니 몇 분만 컴파일 하면 되었겠지.
"어느 날 나는 마흔 네번이나 revert 한 적이 있었어!"
그리고는 잠시 후 너는 다시 말했지.
"몹시 슬플 때에는 같은 코드를 조금만 수정해서 컴파일을 하게되지..."
"마흔 네 번 revert 한 날 그럼 너는 매우 슬펐니?"
그러나 어린 왕자는 대답하지 않았다.
제 10장.
...
그래서 그는 이웃의 다른 시스템을 가진 사람들부터 먼저 가기
로 했다.
첫 번째
로 찾아간 네트워크는 직장 상사의 것이었다.
그는 와이셔츠와 빨간 색 넥타이를 매고 회전식 듀오백에 앉아있었다.
"아! 부하 직원이 한 명 찾아왔군!" 어린 왕자가 오는 것을 보고 상사가 말했다.
....
상사에게는 세상이 다 부하 프
로그래머인 것이다.
어린 왕자는 너무 피곤했으므
로 하품을 했다.
"어린 왕자씨, 오늘도 야근인 것 알죠?" 그것을 본 상사가 말했다.
"하지만, 너무 피곤해요. 쭉 월화수목금금금이었잖아요."
"그렇다면 오늘은 조금 일찍 퇴근하도록 하세요. 칼퇴근 해보는 것도 여러 날이 지났을 테니까요. 상사가 퇴근하지 않는데 어린 왕자씨가 퇴근 하는 것은 신기한 구경거리에요. 자~ 한 번 잘 퇴근해보세요."
"그렇게 말씀하시니까 겁이 나서... 감히 퇴근을..."
"흠! 그러면 별 문제 없겠군요..... 그렇다면 퇴근을.."
그가 뭐라고 중얼되었다. 화가 난 기색이었다.
왜냐하면 그 직장 상사는 납기일을 몹시도 의식하는 사람이었기 때문이었다. 그렇기 때문에 중요한 시간에 칼퇴근을 한다는 것은 있을 수 없는 일이었다. 물론 그는 모든 시간을 중요하게 여겼기 때문에 어쨌든 야근은 존재하는 것이었다.
"만약 디버깅을 하지 않다가 중요한 버그가 들어와서 업체
로부터 클레임을 받게 된다면, 그래서 담당자가 문책당해야 한다고 주장한다면, 그래서 누군가 책임진다면 내 잘못인가요? 어린 왕자씨 잘못인가요?"
"당연히 상사의 잘못이시죠..." 어린 왕자가 조심스럽게 말했습니다.
"맞습니다. 완벽한 프
로그래밍은 완벽한 디버깅에 근거해야 하는 겁니다. 물론 우리 손에 닿지 않는 버그는 어쩔 수 없겠지만, 우리가 할 수 있는 것은 해야지."
...
"이제 저는 이 곳을 떠나봐야 겠습니다!" 어린 왕자가 말했다.
"아니, 떠나지 마세요, 떠나지 마세요. 당신에게 새
로운 잔업을 드리죠." 필사적이 된 상사가 말했다.
"무슨 잔업이요..." 어린 왕자가 힘없이 말했다.
"버그 잡는 겁니다."
"아니.. 이제 보이는 버그는 다 고쳤는데요?"
"사내 대화 프
로그램의 버그를 고쳐달라는 요구가 있어서요."
....
어린 왕자는 머뭇거리다가 한 숨을 내쉬고 길을 떠났다.
"그러면 인사고과에 좋지 못할텐데요!" 상사가 위엄에 넘치는 표정으
로 외쳤다.
(어른들은 참 이상하군) 하고 어린 왕자는 속으
로 중얼거렸다.
제 11장.
두번째
로 찾아간 사람은 속칭 재야의 고수였다.
"아! 나의 우월한 배포판을 받을 사람이 찾아온다!" 고수가 말했다. 자신의 배포판을 쓰는 사람들을 고수는 측은한 눈으
로 처다보기 마련이다.
....
" 너는 정말
로 나를 무척 숭배하니?"
"'숭배한다'는 게 무슨 뜻인데요?"
"'숭배한다'는 것은 내 창작물이 매우 우월하고 또 아름다워서 너의 디자인 실력으
로 감히 흉내낼 수 없어서 "최고에요!"라는 리플을 달거나 추천을 하는거지."
"하지만 아무도 그 창작품을 쓰지 않잖아요?"
"나를 기쁘게 해다오. 아무튼 나를 숭배해다오!"
"아저씨를 숭배해요." (아무튼 다른 대안이 없었기에) 어린 왕자는 말했다.
그리고 어린 왕자는 떠났다. 어린 왕자는 (어른들은 아무래도 좀 이상해.)라고 이렇게만 생각했다.
제 12장.
그 다음 별에서는 디버깅하는 사람이 살고 있었다.
그 방문은 매우 짧았지만 어린 왕자를 깊은 우울에 빠뜨렸다.
"뭘하고 있어요?" 코드 한 무더기와 주석 한 무더기를 앞에 놓고 말없이 손을 놀리는 그 사람에게 어린 왕자가 말했다.
"디버깅을 하고 있지." 침울한 표정으
로 그가 말했다.
"왜 디버깅을 해요?"
"버그를 잡기 위해서지." 머리를 숙이며 그가 말했다.
"왜 버그를 잡아요?"
"깔끔하고 아름다운 프
로그램을 위해서지." 그가 대답했다.
"왜 그런 프
로그램을 짜죠?"
"그래야 디버깅이 쉽거든!" 이렇게 말하고 그 사람은 침묵을 지켰다.
(어른들은 참 이상하군)하고 어린 왕자는 속으
로 중얼거렸다.
제 13장.
네 번째
로 찾아간 곳은 파일 공유자가 살고 있었다. 어찌나 모니터에 얼굴을 처 박는 지 어린 왕자가 도착했을 때도 고개조차 들지 않았다.
"안녕하세요. 라면이 불었어요." 어린 왕자가 책상위의 컵라면을 보고 말했다.
"여기 이 파일 셋에 토렌트의 파일 두 개에 다시 아까 파일구리에 올려놓은 거 열 개를 더하고.. 안녕. 그리고 빅파일
로 보낼게 서른 여섯 개고... 후유! 그러니까 다 합치면 512GB, 일만 사천 사십개 하고 한 개가 되는 구나."
"뭐가 만 개나 되는거야?"
"응? 너 아직도 거기있니? 너무 바빠서 ....다시 셋에 둘을 더하면"
"뭐가 만개나 되는건데?" 어린 왕자가 다시 물었다.
실업가가 머리를 들었다.
"내가 2009년 12월 25일에 컴퓨터를 부팅한 이후
로 방해 받은 것은 딱 세 번이야. 첫번째는
DDos 공격에 서버가 맛이 갔을 때였고, 두 번째는 신경통 때문이었지.. 나는 이 자세
로 컴퓨터를 하니까.. 그리고 음.. 세 번째는 바
로 지금이야!"
....
"만 개나 되는 파일을 들고 뭐하는 거야?"
"뭘 하느냐고?"
"그래."
"아무것도 하는 것 없어. 그것들을 소유하고 있지."
"파일을 소유하고 있다고?"
"그래."
"하지만 내가 전에 본 어떤 약관에 따르면...."
"회사들은 컨텐츠를 소유하지 않아. 그들은 <판매하지>. 그건 아주 다른 애기야."
"그럼 아저씨에게 파일을 소유하는 게 무슨 소용이 돼?"
"마일리지가 올라가지."
"마일리지가 올라가는 게 무슨 소용이 있어?"
"다른 파일들을 고속으
로 다운 받는데 소용되지."
(이 사람도 디버깅 하는 사람 처럼 말하고 있군) 하고 어린 왕자는 생각했다.
....
"그럼 아저씨는 파일들 가지고 뭘 해?" 어린 왕자는 말했다.
"그것들을 하드에 압축해서 넣어두지. 그리고 조각 모음을 쉴 새 없이 하는 거야. 그것은 힘든 일이지."
어린 왕자는 그래도 흡족해 하지 않았다.
"나는 말이야. 내 오픈 오피스
로 수치작업을 할 수 있고, 브라우저
로는 네트워크에 접속할 수 있어. 하지만 아저씨는 그렇게 불법으
로 얻은 프
로그램으
로 아무것도 못 하잖아!"
"그럴 수는 없지. 하지만 그것들을 공유할 수는 있거든."
"그게 무슨 말이야?"
"파일 공유 사이트에 내 파일들을 압축해서 올려놓는거지."
"그리고 그 뿐이야?"
"그 뿐이지."
...
(어른들은 정말 아주 이상 야릇하군)하고 어린 왕자는 혼자 속으
로 중얼거릴 뿐이었다.
제 14장.
다섯 번째
로 찾아간 곳은 아주 재미있는 곳이었다. 그곳에는 굉장히 큰 컴퓨터와 프
로그래머 한 사람이 있었을 뿐이었다. 그 사람은 계속해서 어떤 게임의 패치를 만들고 있었다.
...
그 사람에게 다가가서 어린 왕자는 공손하게 인사했다.
"안녕. 그건 명령이야." 패치 만드는 사람이 말해따.
"명령이 뭔데?"
"그것은 새 패치를 만드는 거지. 자 여??어."
그리고 그는 다시 새롭게 덮어 쓴 USB를 주는 것이었다.
"왜 다시 USB를 줬어?"
"명령이야."
"무슨 말인지 모르겠는걸." 어린 왕자가 말했다.
"명령은 명령이니까. 자 여기 새
로운 버전이야"
그리고 그는 손수건으
로 땀을 닦고 열심히 코딩하는 것이었다.
"나는 정말 고된 직업을 가졌어. 전에는 무리가 없었는데. 그냥 매 년 혹은 매 달 컨텐츠를 새롭게 꾸몄으면 되었었지. 그러면 나머지 시간에는 유지보수만 했으면 되었거든.
"그럼, 그 후 게임이 망했어?"
"아니, 안 망한게 더 문제지! 유저들은 갈수록 컨텐츠들을 빨리 소비하고 있기 때문에 내 상관들은 계속해서 패치를 만들어 내길 원했어."
"그래서?"
"그래서 이 게임의 컨텐츠는 1분에 1번씩 조금씩 바뀐단다. 예를 들면 NPC의 옷 색깔이 조금 바뀐다던가.."
"그것 참 이상하네! 아저씨네 게임은 계속 패치가 되다니!"
"조금도 이상할 것 없지. 우리가 이야기 하고 있는 사이에 벌써 새 던전의 프
로토타입이 공개되었어."(아마 이것은 컴퓨터가 매우 좋았기 때문이며 이런 개발자들이 수도 없이 많이 있기 때문이리라.)
"벌써?"
...
그가 그 축복받은 곳을 잊지 못하는 것은 스물 네 시간동안에 천 사백 사십 개의 버전업을 할 수 있었기 때문이었는데, 그것은 어린 왕자가 차마 스스
로에게도 고백하지 못하는 것이었다.