차니님에 이어서 한날님까지 프로그래밍 언어 답사기 게시물을 올리신 것을 보고 뽐뿌를 받아서 오랜만에 블로그 포스팅을 합니다 : )
저의 첫 컴퓨터와의 만남은 국민학교 컴퓨터실에서 였습니다. 그때는 내가 왜 알지도 못하는 영어만 잔뜩 쓰인 암호문 같은 베이직 코드를 따라쳐야만 하는지 불만만 많았었고 지루했던 시간으로 기업합니다.
그땐 주로 구구단 출력하기, 별모양(*) 따위를 삼각형 모양으로 출력하기 따위 일상생활에서 별로 쓸모없을 듯한 기초적인 코드가 책에 실려있었는데, 따라 치기도 이골이 나서 이제 제법 빨리 쳐버리고 딴짓을 하고 놀 수 있을 만큼 되었을때 쯤 어쩌면 내 인생을 바꿔버린 두 개의 코드덩어리를 만나게 됩니다.
첫번째는
두번째는 아마도..
10 RANDOMIZE TIMER
20 SCREEN 2
30 FOR I=1 TO 100
40 X = RANDOM() * 640
50 Y = RANDOM() * 480
60 R = RANDOM() * 100
70 CIRCLE(X, Y), R
80 NEXT I
컴퓨터라는 기계가 암호문같은 코드만 흘러가는게 아니라 음악 연주도 할 수 있고 그림도 그릴 수 있는 꿈같은 기계라는걸 알아버린 것이죠;;
그 후 방과후 시간에 게임을 할 수 있는 시간이 있었는데 카세트테이프에 녹음(?) 되어있는 코드를 대우 IQ 2000에 10분쯤 읽히면 할 수 있었던 트윈비같은 비행기게임을 하다가 무심코 Ctrl + Break 를 눌렀을때 나타난 수만줄쯤 되는 베이직코드를 마주쳤을 때는 마치 매트릭스에서 네오가 에이젼트 스미스를 코드로 인식하게 되었을때 만한 충격이었습니다

그 후 부모님을 졸라 컴퓨터 학원에 등록하게 되고, 베이직을 기본으로 COBOL, FORTRAN, PASCAL, dBase III Plus 등 여러가지 언어를 접해보게 된 것 같습니다.
국민학교때는 10줄도 따라치기 싫었던 베이직코드였지만 “월간 마이크로소프트”, “컴퓨터쥬니어” 등 컴퓨터잡지 부록으로 나오는 수천줄짜리 프로그램을 일일히 따라치며 그땐 유난히도 많았던 오타, 낙자 탈자를 찾아 고치고 돌려보는게 취미생활이 되어 있었습니다.
주말이면 5.25인치 디스켓을 10개들이 케이스에 20장쯤 들고 다니며, 학원이 주도적으로 권장했던 게임 불법 복제를 해서 친구들과 나눠 하게 되면서 컴퓨터와 친해지게 되었습니다.
처음으로 구입한 소프트웨어는 워드프로세서 자격증을 따기 위해 샀던 아래아한글 1.53 이었네요
그 이후 대학교에 들어가기까지는 특별히 다른 언어를 배우는데 에는 게을렀던 것 같습니다. 터보C 등을 간간히 접하긴 했지만 C언어랑은 당췌 친해질 수가 없었고. 필요한게 있다면 Quick Basic 으로 만들어 컴파일 해버리거나 심지어 bat 파일로 작성하여 bat2com, com2exe 를 통해 필요한 프로그램을 만들어내곤 했으니까요..
대학교 1학년때 멀티미디어 프로그래밍 과목으로 “디렉터”를 배웠습니다. 디렉터-링고 는 내가 객체 개념, 이벤트 개념을 잡는데 엄청난 영향을 준 프로그램 언어 입니다.
lingo 라는 스크립트언어의 어원 자체가 “언어” 라는 language 의 어원이듯.. 정말로 컴퓨터에게 말을 하듯 명령을 내릴 수 있었습니다. 그 뿐 아니라, Director 라는 프로그램의 이름은 그야말로 “감독” 입니다. 나는 감독이 되어서 캐스트(Cast)한 배우(Member)들을 무대(Stage)에 내보내고 꼭두각시(Puppet)처럼 명령을 내리기만 하면 되는 것이었습니다.
put the member “circle” of cast “graphics” into stage
on exitFrame
puppet sprite 1, true
set the loc of sprite 1 to the mouseLoc
updateStage
end
그래픽 리소스를 모아둔 캐스트창(라이브러리)에 있는 “circle” 이라는 맴버(객체원형)를 스테이지(화면)에 배치하고 매 프레임마다 스프라이트(맴버의 인스턴스)를 퍼핏(내 의지를 빙의)시켜서 위치를 마우스의 위치와 동일하게 만들고 그 결과를 화면에 다시 반영시켜라
라는 자연어에 가까운 스크립트(대본)을 작성하면 되는것이었습니다.
맴버를 스테이지에 끌어다 놓는 것이 객체를 인스턴스화 하는것, on 이벤트 를 작성하는 것이 이벤트 개념, 좀더 구조화된 스크립트를 짜기위해 스크립트를 ancestor (조상) 으로 선언 하는것이 클래스의 상속 개념이라는 것은 나중에 조금은 제대로된 프로그램 공부를 하게되고 나서야 깨닫게 되었지만 이때 이미 뼈속 깊이 개념을 새기게 된 것입니다.
무엇보다도 머리속에 생각한 어떤 광경을 모니터에 실체화 하는 속도가 매우 빨랐기 때문에 빛과 같은 속도로 프로그램을 완성할 수가 있었습니다.
대학시절에 무척이나 과제가 많았는데, 2주에 한번씩 슈팅게임, 액션게임, 네트워크 테트리스 게임 따위를 만들어내는게 가능했던 기억이 납니다. 물론 매일 밤을 새야 했지만 지금 생각해보면 그리운 추억입니다.
대학 1년을 마치고 군대에 가게 되지만 친하게 지내던 하사관의 도움으로 사무용 컴퓨터에서 개인적인 공부를 하는것이 가능하게 되었습니다. 마땅한 프로그래밍 툴이 없기에 사무용으로 깔려있는 ms-office 에서 alt-F11 을 눌러 나오는 VBA 를 가지고 상상코딩을 시작했습니다.
VBA는 비쥬얼베이직처럼 간단한 폼을 짜는것도 가능했고 Public Sub Button1_OnClick 같은 이벤트핸들러 개념은 디렉터와도 유사했습니다. 무엇보다 스크립팅 자체는 베이직 언어와 크게 다르지 않았기때문에 거의 책 한줄 보지 않고도 일주일여 만에 만들고 싶은 것을 대충 만들 수 있게 된 것 같습니다. 관물함에 챙겨간 디렉터 책 한권에 나온 예제를 거의 다 VBA로 번역해 만들면서 어느정도 익숙해지고 나서는 웹 프로그램에 관심이 생겼습니다.

군대 내에서 인터넷은 사용이 불가능했지만 국방 인트라넷이라는 군 전용 닫힌 망 안에서 게시판을 운영하는 부대들이 있었습니다. 부대들 중에는 보안이 썩 까다롭지 않은 곳도 있었고 그런곳에서 근무하던 사병들은 외출후 복귀할때 3.5인치 디스켓에 작은 유틸리티나 BBS를 갈무리한 소설 따위를 가져와 게시판에 올려주었고 그것은 이틀에 한번 야근을 해야했던 내 군생활의 활력소와 같은 것이었습니다. 보안이 삼엄했던 우리 부대에서는 외부 디스켓을 반입하는 것은 상상도 할 수 없는 일이었고.. 통신대대 작전통신병으로 근무했던 나는 외부에서 가져올 수 있던 무협지, 소설책 등을 직접 타이핑해서 타 부대 게시판에 업로드하기에 이르렀습니다. 당시 한글 타자 속도는 평균 700타 이상을 낼 수 있었고 야근 두번이면 책 한권은 가뿐하게 쳐낼 수 있었습니다.
어느날 잘 알려지지 않은 부대의 게시판에서 pws.exe 라는 퍼스널 웹서버 프로그램을 입수하게 되었고 pws 는 작은 용량임에도 불구하고 무려 asp 웹프로그램을 돌릴 수가 있었습니다. asp 역시 베이직을 기본으로 몇가지 웹프로그램 규칙만 지켜주면 되는 것이었기에 쉽게 친해질 수가 있었고 한달쯤 뒤에는 스스로만든 게시판을 띄울 수 있게 되었습니다. 답글도 불가능하고 첨부파일도 불가능한 .xls 파일을 DB로 사용하는 게시판이었지만 직접 타이핑한 소설을 업로드할 수 있었고, 사이트는 점점 발전하여 쪽지같은 형식의 개인 웹메일을 쓸 수도 있게 되었습니다.
부대 같은 근무처에는 전산을 전공한 선임병들이 있었는데, 갖잖은 후임병이 하사관들과 친하게 지내며 자잘한 프로그램을 만들어 칭찬받는 것이 꼴보기 싫었던 모양입니다. 하루는 전국 통신사 타이핑대회를 준비하기 위해 랜덤한 한글/영문/숫자 문제를 출제하는 프로그램을 ms-word로 만들었는데, 딴에는 전산과를 나왔다는 선임병에에 찍히게 되는 결과가 되었습니다. 몇달동안 같은 야근조로 편성되어 밤마다 몇시간씩 대가리박아를 당했던 기억이 있습니다. 김준형(당시 상병) 이색퀴는 신앙의 힘이 아니었다면 당시 나한테 죽을뻔 했고 나는 인생을 망칠뻔 했습니다. 예수는 내가 믿고 복은 저 녀석이 받은 셈이네요
제대 후 교수님꼐 인사도 드릴 겸, 교수님이 부업으로 이사직을 맡고 있던 회사에 찾아갔습니다. 저는 공군이었기 때문에 제대시기가 딱 맞아떨어지지 않고 복학까지 8개월 정도 여유 시간이 있었습니다. 인사 드리러 간 그 자리에서, 여유시간 동안 회사에 나와 웹페이지의 오타, 잘못된 링크, 오작동 등을 찾아내는 “버그맨” 알바를 하기로 했고 하루에 엑셀 3페이지 분량의 버그를 찾아내고 간간히 스스로 고치기도 하던중, 회사의 일정은 급해지고 마땅한 프로그래머는 구하기 힘든 상황이 닥쳤습니다. 몇주동안 프로그래머 형과도 제법 친해졌고… 간혹 바쁜 형을 대신해 리눅스를 설치하러 IDC에 들어가기도 했으며, 소스코드를 만질 수 있는 권한도 주어졌습니다. 네… 이때부터 php를 만지게 되었습니다. 다행히 asp를 봤던 경험 덕에 어렵지 않게 적응할 수 있었고. 한달 후에는 메인 프로그래머로써 프로젝트도 맡겨지게 되었습니다. 짧은 기간이었지만 정치포털, 언론사포털, 레져포털 등 제법 다양한 웹사이트를 만드는 경험을 하게 된 것 같습니다. 이때 자연히 html과 친해졌고 javascript와 친해진 것 같습니다.
음악방송이 유행이었던 당시 mIRC 라는 프로그램을 통해 청취자들과 채팅을 즐겼는데 mIRC 스크립트를 가지고 여러가지 재미난 장난감을 만드는 것이 가능했습니다. 채팅창에 !검색 아무개 라고 치면 웹 검색 결과를 보여준다거나 !날씨 서울 이라고 치면 날씨를 알려주는 등 시시한 프로그램이 대부분이었지만 자잘한 변두리 지식을 많이 얻는 기회가 되었습니다. 또한 프로그램과는 관계없이 살던 친구들이 스크립팅을 통해 프로그래머적인(?) 사고방식을 구축하는 과정을 지켜보면서 스스로를 돌아보며 정리하는 계기가 되었습니다.
개인적으로 군대에 다녀온 후에는 집에 손을 벌리지 않으려고 생각했기 때문에 복학 후에도 다양한 파트타임 프로그래머 알바, 프로그램 제작의뢰 알바 등을 하며 학비를 벌었습니다. asp, php, html, javascript, 디렉터 등 그간 몸에 익힌 온갖 기술을 동원해서 돈을 벌었습니다. 학생이고 교수님 소개로 하는 일들이기에 싼값에 노동을 해야 했지만 의뢰인이 결과물에 만족하도록 최선을 다했습니다.
당시 php가 웹프로그램 언어로써 많은 주목을 받던 때였고 알바도 풍족했습니다. 자연히 php 커뮤니티 phpschool 에서 실전 지식을 습득하는 일이 많았습니다. 이때 (당시는 다른 닉으로 활동하시던) 한날님과도 알게 되었습니다. 팁엔테크 게시판에 스스로 만든 자잘한 코드 조각들을 공개하면서 고수들의 지도를 받는게 재미있었고, 조금 늦게 배우기 시작한 사람들의 칭찬을 듣는 것도 기분이 좋았습니다. 게시판에서 알게된 희망주기 님과의 인연으로 후이즈 라는 회사에서 일할 수 있게 되었고 정말 많은 것을 배우게 되었습니다. 이때 인연을 맺게 된 사람들과는 아직도 간간히 연락을 하고 있습니다. 후이즈에서 만나게된 강형모군과의 인연으로 플래시를 다시 접하게 되었습니다.

대학교시절 디렉터와 함께 플래시도 만질 기회가 있었지만, 당시는 그저 애니메이션 툴과 다름없엇던 플래시에는 큰 관심을 두지 않았던 터라 우습게 생각하는 경향이 있었지만 많은것이 달라진 플래시는 분명 매력적인 툴이자 액션스크립트는 훌륭한 언어가 되어가고 있었습니다.
현재 회사에 입사하기 위해 C# ASP.NET을 공부한 적이 있지만 실전에는 단 두번만 써봤을뿐 잊혀져가는 언어가 되고있습니다.
현재는 액션스크립트를 주 언어로 파이썬, 자바등을 공부하며 지내고 있습니다.
파이썬은 “밥먹으러 갈까나?” 라고 이야기 하는 털털한 친구같은 반면, 자바는 “생체내의 ATP 수치가 감소하고 위장내 음식물이 없다는 신호를 보내고 있어. 우리 체내에 단백질 120g, 탄수화물 180g, 그외 비타민 무기질을 보충하기 위해 300미터 떨어진 식당으로 이동하지 않을래?” 라고 말하는 지나치게 섬세한 깍쟁이 학구파 친구를 대하는 기분입니다. 물론 정확한 결과물을 위해 까다롭고 정교한 자바를 선택하는 경우도 있지만, 뭔가를 만들어보기 전에 프로토타잎은 주로 파이썬을 이용해서 만듭니다.
아이폰을 사용하게 되면서 Objective-C 에도 관심을 두고 있지만 마누라가 맥북 구매허가를 내주지 않고있는 관계로 적절하게 공부할 여건이 마련되지 않고 있습니다 ^^
내 인생에서 프로그래밍 언어는 내 귀차니즘을 해소하기 위한 도구로써 쓰였던 것 같습니다. 내가 100번 같은 일을 반복하지 않기 위해서 컴퓨터에게 시켜야 하고 잘 시키기 위해서는 공부해야 하는.. 즉, 게으름이 삶의 원동력이 되었다고 할까..
그리고 새로운 언어와의 만남은 스스로 찾아공부했다기 보다는 필요에 의해 습득하게 된 것 같습니다. 디렉터를 만질 수 없는 환경에서 선택한 VBA 라는 대안과, cgi를 쓸 수 없는 환경에서 선택한 asp라는 대안 등.. 그런 우연한 기회들이 조금씩 엮이고 경험을 쌓아주면서 지금의 내가 있게 된 것 같습니다.
현재는 게임회사에서 업무시간에는 게임을 만들고 업무 외 시간에는 남이 만든 게임을 즐기며 또다시 나에게 즐거움을 줄 프로그래밍 언어를 기다리고 있습니다.

