프로그래밍 언어 답사기

차니님께서 쓰신 프로그래밍 언어 답사기 글을 보니 재밌어 보여서 나도 간단히 정리해본다.

처음 접한 언어는 GW-Basic이다. 둔촌 국민학교(초등학교) 다닐 때 가끔씩 컴퓨터 수업을 받았는데 그때 GW-Basic으로 더하기 빼기를 짜는 것이었다. 이후 친구가 다니는 컴퓨터 학원에 놀러가거나 좀 사는 동네 친구 집에 놀러가면 늘 접하는 레퍼토리 중 하나여서 징하게 보긴 했지만, 계산기 만드는 것에서 벗어나질 못했다. 아마도 1989년도였던 것 같다.

이후 내 컴퓨터가 생길 때까지는 프로그래밍 언어를 접할 일은 없었다. 성적이 오르면 컴퓨터를 사주신다고 부모님께서 약속하셔서 열심히 공부하여 1994년에 컴퓨터를 샀는데, 이때 접한 프로그래밍 언어가 C, 어셈블리였다.

C언어는 서점에 갔다가 무심코 집어들어서 공부했는데 포인터에서 막혀서 1차 포기. 어셈블리어는 한 달 용돈이 2만원쯤 하던 당시에 힘들게 돈을 모아 산 정품 게임인 YS 2 special 때문에 특수 목적으로 쓰기 위해 익혔다. 키 디스크(key disk)라고 해서 정품인지 판가름하는 역할을 하는 1번 디스켓이 망가져서 정품 이용자인데도 게임을 할 수 없는 상황에 처했다. 당시엔 그런 원인조차 몰랐지만 알음알음 정보를 수집해서 저러한 원인이라는 걸 알게 됐고, 저러한 정품 인증 방식을 우회할 수 있는 행위(cracking)도 있다는 걸 알았다. 그래서, soft ice 등 여러 도구를 이용하여 크랙을 어설프게나마 만들었는데, 며칠 뒤 친구가 크랙 파일(그 유명한 ys2.com 파일)을 구해다 줘서 좌절했었다.

그 다음에 접한 언어는 Perl이다. 1996년일텐데 당시에 KT(구 한국통신)에서 운영하던 co-lan으로 인터넷을 정액제로 쓰고 telnet 으로 나우누리와 하이텔에 접속하기 위해 kornet 에 가입했다. 이때 처음으로 유닉스를 접했고, 사부의 도움을 받아 vi, screen, telnet 등 유닉스를 쓰는 데 필요한 각종 기초를 익히고 더불어 perl 도 익혔다.

하지만, 정규표현식에 좌절하여 잊고 지내다가 다시 perl 을 쓰기 시작했으니 바로 Crazy Web Board 3.01 때문이었다. 당시에 CWB 3.01 은 c언어로 만들어졌고 소스도 배포됐었다. 이걸 입맛에 맞게 고치려니 c 프로그래밍을 해야했는데, c언어로 문자열을 처리하려니 죽을 맛이었다. 그러다 perl로 만들어진 몇 몇 웹 게시판을 접했고, 강력하고 쉬운 문자열 처리에 감동해서 이런 저런 소스를 구해다 개조하며(copy/paste질) 놀았다. yChat로 유명하신 윤석범님 소스를 많이 참조했었다.

HTML는 1996년에 익혔는데 아마 HTML 3이었던 것 같다. 메모장으로 깨작댄 html 문서 파일이 웹 브라우저에서 보이니(넷스케이프 2를 주로 썼다) 그렇게 신기할 수가 없더라. 그래도 딱히 쓸 일은 없었는데, 일본 만화영화 덕후였던 친구에게 O.S.T mp3 파일을 나우누리에서 내려받아 당시에 계정 용량 제한이 없었던 대구넷(home.daegu.net)에 올려서 공유할 때엔 참 편했다.

1997년쯤에 Java를 접했던 것 같다. 1.5였던가? 근데 프로그래밍을 제대로 공부한 적 없이 필요한 부분만 익힌 나로서는 Java에서 말하는 개념을 이해하기 너무 어려웠다. 무엇보다 내 컴퓨터에서 Java는 너무 느렸다. 이때부터 Java는 느리고 무겁고 뚱뚱하다는 편견이 생겨서 지금까지도 나와 친하지 않다. 지금도 좋아하지 않는다.

1997년엔 C++을 접했는데, C++이라고 하기 좀 애매한 것이 Visual C(2였던가 6이었던가?)와 DirectX SDK 3을 접한 것이었다. 내 사부는 나를 프로그래머로 만들 생각이었는지 시나리오나 쓰고, 그래픽(도트, 픽셀) 디자인을 많이 하고 가끔 Scream Tracker로 음악 장난이나 치던 나한테 Win32API와 DirectX 를 공부하라고 압박하기 시작했다. 하지만, 난 프로그래밍 자체에 별 관심도, 애착도 없었기에 Windows Message 체계만 이해하고 관뒀다.

나중에(2003년) 어머니께 일기장 프로그램을 만들어 드리려고 MFC를 접하느라 다시 C++을 들여다보긴 했지만, 역시나 C++도 내 취향이 아니었다.

1999년엔 PHP 3를 만났다. yChat를 만드신 윤석범님께서 PHP를 소개하시기도 했고, 마침 회사에서 내가 할 일이 생겼기에 호기심에 쓴 것이다. 무엇보다 text 파일을 일일이 fopen 하고 fread 하던 perl 을 쓰다가 php에 있는 include 문을 보니 아주 감격스러웠다. include 'head.html'; 과 include 'tail.html' 을 할 때 그 짜릿함이란.

당시에 회사에서 내가 맡은 일을 생각해보면 참 신기하다. 회사에선 개발 중인 게임(드로이얀 2)을 베타 테스팅을 할 사람을 인터넷으로 접수 받는 걸 만들고 싶어했으나 회사엔 그런 걸 할 사람이 없었다. 그래서 회사 막내이자 어설프게나마 cgi를 접해본 내가 이 일을 맡게 됐다. 인터넷에서 이름과 주소 등을 입력받으면 이걸 DB에 넣고, DB에 넣은 자료를 csv 파일로 저장한 후 이 파일을 엑셀에서 열어서 출력한다. 그리고, 그걸 오려서 게임 CD가 들어있는 봉투에 붙이는 흐름이다.

처음 php를 접한 탓에 정진호님이 공개하신 웹게시판 소스 파일과 phpschool.com 에 있던 여러 소스를 읽고 또 읽으며 3일만에 겨우 만들어냈다. 이때 처음으로 mysql을 깔아봤다. ^^ (그러고보니 당시에 회사 홈페이지에서 쓰던 게시판이 NeoBBS였던 것 같다)

이후 php를 많이 썼다. 4.1판이 나올 때까지 주 script로 썼다. 2002년에 용돈벌이 하려고 ASP 외주를 받아서 ASP를 익히긴 했지만 내 취향은 아니어서 그 이후 쓰진 않았다.

python은 우연히 2001년에 접했다. 1.x판이었던 것 같다. 정작 나는 파이썬을 쓰지도 좋아하지도 않았고, 게임 프로그래머 친구인 myevan에게 써보라며 소개를 해준 뒤로 신경을 안 썼다. 분명 재밌고 흥미로운 언어이긴 한데, 쓰임새가 잘 와닿지 않았고 어떤 이유에서인지 내가 관리하던 FreeBSD 서버에서 파이썬을 깔기 위해 컴파일 할 때 오류가 나며 깔리질 않았다.

Javascript를 다시 보기 시작하며 쓰기 시작한 건 2006년부터이다. php를 갖고 놀다 벗이 된 인터넷 인연인 꺼칠이님이 prototype javascript framework 을 소개해주셨기 때문이다. php로 include문을 처음 썼을 때 느꼈던 희열감을 $ 함수로 느꼈다. 나와 비슷한 분들 많을 것 같다. 1.4.0판 문서를 기준으로 번역한 prototype.js를 위한 개발자 노트라는 문서에서 많은 도움을 받았다. 그러다 TNC에서 기초부터 다시 공부를 했다. 같이 공부를 하던 때, egoing님에게서 많은 자극을 받았다. 별 이유없이 무작정 이 사람보다 잘 하겠다고 목표를 정했는데, 여러 사람들이 알다시피 egoing님 실력과 능력이 좋아서 따라잡으려면 공부를 많이 해야했다.

파이썬을 지금처럼 좋아하고 자주 쓰게 된 건 2007년에 접한 django 가 계기였다. 그 이후 나는 주욱 파이썬을 애용하고 있다. 능숙하진 않지만, 어지간한 건 뚝딱 만들 자신은 있다. “잘” 만드는 게 아니라 “뚝딱” 만든다는 데 주의. :)

2008년에 Ruby를 만졌는데 Rails 를 쓰려 했기 때문이다. 에이콘 출판사로부터 선물받은 황대산님의 “웹 개발 2.0 루비 온 레일스” 책으로 공부를 했는데, 판오름수준(version)이 책에 있는 것과 당시 배포 중이던 것이 달라서 조금 헤맸던 기억이 난다. 루비 역시 딱히 내 취향은 아니어서 지금까지 관심을 끄고 있다.

마지막으로 올해 초에 C#을 공부했다. 2007~8년에 잠깐 같이 일한 적 있는 최승준님께서 C#과 xna를 이용해서 멋진 미디어 아트 작품을 만드셔서 C#과 xna에 호감을 갖고 있었던 터라 잠깐 회사 일이 한가한 틈을 타서 후다닥 익혔다. 많은 부분 Java와 비슷하다는데 이상하게도 C#은 금방 마음에 들었다.

실은 올해 봄에 iPhone OS 기반 프로그래밍 유행이 돌기 시작할 때쯤 Objective C를 잠깐 공부했는데 내 입맛에 맞지도 않고 게으름 피우느라 제대로 익히질 않았다. 이런 식으로 접한 언어로 Cobol, Ruby이 있다.

...

프로그래밍 자체를 즐긴다기 보다는 생각을 눈에 보이게 드러내는 과정을 좋아해서 프로그래밍을 한다. 그래서 프로그래밍 능력을 키우는 일 대신 이런 저런 연장을 만지는 데 만족한다. 제대로 할 줄 아는 프로그래밍 언어 없이 잡다하게 맛만 보기만 한다. 그래서 “할 줄 아는 프로그래밍 언어”라고 글 제목을 짓지 않고, 차니님 글 제목처럼 “답사”에 의의를 뒀다. 아마 앞으로도 그럴 것이다.

그래도 호기심은 왕성해서 앞으로 답사할 언어가 조금씩 늘어날 것 같긴 하다. 기획을 할 때 논리를 따지거나 이끌어내기엔 막연한 경우가 있다. 그럴 때 프로그래밍 작업 도구로 풀어쓰면 한결 쉽게 정리가 되는데, 그런 과정에 도움이 되는 언어를 언제 어떻게 만날지 모를 일이기 때문이다.