프로그래밍 언어 답사기

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

처음 접한 언어는 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이 있다.

...

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

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


뒷맛이 개운한 낙지 음식점, 낙지도

글을 열며

맛객님께서 유명해지는 걸 원치 않는다며 소개하기 싫다는 식당이 있어 여러 사람이 애태운 적이 있다. 그 중 한 명이 나인데, 얼마 전에 그 소개하기 싫은 식당을 공개하셔서 부천까지 먼길 다녀왔다. 먹는 것 자체를 귀찮아하는 내가 한끼 먹으려고 저 먼 곳까지 다녀오다니. 낙지 머리에서 머리털 자랄 일이다.

실은 난 매운 낙지 요리를 그다지 좋아하지 않는다. 통각에서 오는 짜릿함과 그 통증 사이 사이로 배어 나오는 단맛, 그리고 압박받아 침이 입안에 가득 고이면 느껴지기 시작하는 감칠맛이 잘 어우러져야 하는데, 그런 어우러짐 보다는 들입다 매운 맛만 강요하는 식당이 너무 많기 때문이다. 혹은, 합성조미료로 단맛과 감칠맛을 내서 매운 음식을 먹고도 개운함을 느끼지 못하기 일쑤이다. 하지만, 맛객님의 저 글을 보니 기대감이 들어 발걸음을 떼었다. 가게는 생각보다 작아 잘 눈에 띄지 않았다.

만족스러운 음식

낙지도 차림판

여러 낙지 음식 중 철판낙지볶음을 시켰다. 산낙지와 기절낙지가 있는데 살아있는 낙지를 그 자리에서 요리하는 모습을 볼 엄두가 나지 않아 기절낙지를 골랐다. 아, 물론 인터넷에서 맛객님께서 쓰신 글을 보고 멀리서 왔다며 덤 좀 얻어먹으려는 얄팍한 꼼수도 주문과 함께 했다.

철판낙지볶음

갖은 양념과 채소 위에 큼직한 낙지 두 마리가 철판 위에 누운 채 여러 가지 밑반찬을 벗삼아 우리 자리로 왔다. 밑반찬으로는 마늘장아찌, 오이소박이, 고추무침 등이 나왔는데, 특이하게도 토하젓도 내주셨다.

토하젓

토하젓은 민물새우로 만든 젓갈로 전라도 고유음식인데 꽤 비싼 편이라서 여느 식당에서는 잘 내오지 않는다. 명란젓도 반찬으로 내오는 곳이 흔하지 않은데 명란젓과 비슷하거나 좀 더 비싼 토하젓을 반찬으로 정말 나올 줄이야. 밥에 올려 슥슥 비벼먹으니 밥도둑이 따로 없다.

다른 반찬도 모두 맛있다. 합성조미료만이 내는 아주 진한 감칠맛은 없지만, 깔끔하고 개운하며 재료 맛을 느낄 수 있는 맛이 좋다. 굳이 꼽자면 마늘장아찌가 참 좋았다. 마늘을 아삭 깨물면 숨이 죽은 알싸한 마늘향이 맑은 간장에 어울리는데, 심지어 달달한 맛까지 느껴졌다.

삭힌 홍어 회

낙지가 익기를 기다리는데 할머니 한 분께서 홍어 먹을 줄 아냐고 물어오셨다. 멀리서 왔으니 맛뵈기로 주겠다고 하셔서 조금만 달라고 말씀드렸다. 먹긴 먹어도 즐길 줄 아는 건 아니라서 좀 부담스러웠다. 잠시 후 삭힌 홍어 회 다섯점과 탁주를 내오셨다. 바로 홍탁이다. 한점 집어 먹어보니 암모니아에서 나는 구린내는 거의 느껴지지 않고  톡 쏘는 맛이 혀에 감겼고, 입안을 탁주로 마무리 지으니 참 좋았다. 어지간한 횟집에서 먹는 홍어보다 훨씬 나았다. 삭힌 홍어 잘 못먹는 여자 친구가 맛있다고 나보다 잘 먹었다.

솥으로 갓지은 밥에 반찬 이것 저것 집어먹다보니 낙지를 먹기도 전에 밥을 다 먹을 것 같았다. 어쩔 수 없이 맛깔나는 밑반찬을 앞에 두고도 밥을 아끼며 끙끙대며 낙지 익기를 기다렸다. 근데 먹어도 된다는 할머니 말씀.

철판 낙지 볶음

당신들이 싫어서 합성조미료를 쓰지 않고 천연조미료를 쓰신단다. 낙지도 싱싱하고 국물도 깔끔했다. 매운 낙지 음식을 먹다 무심코 양념장 덩어리를 먹으면 비릿하게 혀를 감싸는 합성조미료 맛을 만끽할 수 있는데, 이곳 낙지 볶음은 그렇지 않았다. 전라도에서 직접 만들어 보내온 좋은 재료를 쓴다는 말씀을 하실 때 자부심을 느낄 수 있었는데, 그럴만 했다.

이미 밥 한 그릇 해치웠는데, 남은 국물에 밥을 비벼먹지 않을 수 없어 밥 하나 볶아달라고 했다. 분명 무리였지만 먼길까지 와서 볶음밥도 안 먹고 갈 순 없었다.

볶음밥

밥을 철판에 올리고 김을 뿌린 뒤 직접 짰다는 참기름을 두르고 국물에 비빈다. 향이 강한 재료들인 김과 참기름, 그리고 낙지 볶음 국물에 밥을 비볐는데 입안에 개운하지 않게 남는 뒷맛이 없다.

반찬이 먹을만치만 나온 탓도 있지만, 입에도 잘 맞아서 남김없이 싹 해치우니 어느 새 사람들이 점심 먹을 시간인 12시 30분이 됐다. 하지만, 어쩐 일인지 그 시각까지 손님은 우리 일행 뿐이었다. 아직 연 지 얼마 안 된데다 소문도 안 났기 때문이겠지만, 어쩌면 합성조미료가 내는 강한 맛에 길들여진 많은 사람들 입에는 이곳 음식이 밋밋할 수도 있겠다는 생각이 들었다. 내 입엔 밋밋하지 않았다. 오히려 재료 맛을 느끼는 데 방해가 되는 자극 강한 합성조미료 맛이 없어서 맛을 만끽했다.

마치며

먹어도 먹어도 질리지 않은 어머니께서 만들어주신 음식을 밖에서는 먹기 참 힘들다. 시간과 비용에 쫓겨, 혹은 이미 강한 맛에 길들여진 손님들 입맛에 맞추느라 합성조미료를 쓰는 식당이 많기 때문이다. 합성조미료를 쓰지 않기를 바라는 것은 커녕 재료 원산지도 못미더우니, 음식 먹는 기준이 입맛에 있지 않고 믿음에 두어야 한다. 만족스럽게 먹고도 가게에서 나오며 조금 울적한 기분이 들었다.

유명해져서 많은 사람들이 이곳에서 맛있고 깔끔한 음식을 먹기를 바랐다. 한편으로는 손님이 많아지지 않았으면 좋겠다는 이기심도 들었다. 손님이 많아지면 시간과 양에 쫓겨 이곳도 결국 합성조미료를 쓰지 않을까 걱정이 들었기 때문이다. 하지만, 천연조미료와 좋은 재료를 쓴다는 자부심을 보니 기우일지도 모르겠다. 그리고, 사소한 실수로 돈 이체가 되지 않아 뙤약볕 아래에서 몇 번이나 은행에 다녀오신 두 분의 여유를 보며 시간에 쫓겨서 그 자부심을 저버리지 않으시리라는 믿음이 미소와 함께 생겼다.


가는 길

1호선 부천역에서 내린 뒤 북부 광장 방향 출구로 나온다. 출구에서 약 10분 정도 직진하면 되는데, 부천역 출구 양갈래 길에서 왼쪽 길로 나오면 좋다 (자동차 진행 반대 방향). 걷다보면 큰 사거리를 건너는데, 횡단보도에서 대성병원이 보인다. 그 부근에 있는 SK 주유소 바로 옆에 있다.