옮긴이의 글 (SICP)
딸린 이름: 이 책을 읽는 분들에게 드리는 편지
여러분은 운이 좋습니다. 정답으로 가는 길을 바로 찾았기 때문입니다. 세상에는 이런 책이 있는지도 모르고 사는 사람도 많은데 어쩌다가 여러분은 정말 좋은 스승을 만난 턱입니다. 그나저나 어떻게 이 책을 알게 되신 거지요? 여태 제가 겪은 바로는 어쩌다가 이 책으로 공부할 기회를 얻기가 그리 흔치는 않기에 드리는 말씀입니다. 이 책에 담긴 교육 과정은 한 때 세계 300여 대학에서, 지금도 100여개 넘는 이름난 대학에서 가르치고 있을 만치, 세계 최고 수준의 프로그래밍 교육이라 일컫기에 조금도 모자람이 없습니다만, 아직도 우리 나라 안에서는 이 책의 값어치가 생각만큼 그리 널리 알려지지는 않은 듯 싶습니다. 어쩌면 이제서야 우리말로 옮겨쓴 책이 나왔다는 것이, 그런 사실을 뒷받침하는게 아닐까 합니다. 안타까운 일입니다.
다시 여쭙건대, 혹시 여러분의 스승이 이 책으로 가르치거나 이 책을 권했습니까? 그렇다면 여러분은 정말 좋은 스승을 만났습니다. 마땅히 고마워 해야 일입니다. 그게 아니라, 스스로 더 좋은 가르침을 찾다가 이 책을 알게 되었다면 여러분은 보기 드물게 슬기로운 사람입니다. 놀랍습니다.
제 경우엔 오로지 운이 좋았을 뿐입니다. 그저 좋은 스승을 만난 덕분에 얻게된 복이었습니다. 그런 까닭에서, 지금부터 이 책에 얽인 저의 옛 이야기를 미주알 고주알 들려드리고 싶습니다. 소중한 추억을 누군가에게 도란 도란 얘기한다는 것은 그 추억을 곱씹는 만큼이나 즐거운 일이기 때문이기도 하거니와, 제가 이 책으로 얻게된 깨우침과 즐거움 속으로 천천히 여러분을 꼬드기기에 그 보다 더 좋은 방법이 없을 거라 생각하기 때문입니다. 어쩌면 첫 발을 내디디는 분에게는 제 어리숙했던 시절의 얘기가 자그만 도움이 될런지도 모를 일이니까요.
그러니까 아마도 그 때가 1990년, 군대를 갔다와서 3학년 1학기였다고 기억하는데, 저는 그 때 제 스승님 덕분에 이 책을 처음으로 보게 되었습니다. 그 즈음, 제가 다니던 대학에서는 1학년들에게 처음으로 이 책으로 프로그램 짜기를 가르치기 시작했습니다. 그 전까지는 그 당시 여느 대학 교과 과정들이 다 그렇듯이 FORTRAN, PASCAL, COBOL 같은 언어를 한 학기 씩 교양이나 전공 기초로 가르쳤습니다. 요새 C++, Java, Python 같은 언어를 가르치는 것이나 마찬가지죠. 컴퓨터 기술을 전공하지 않는 과들은, 더 이상 프로그램 언어를 배우지 않고, 응용 프로그램 쓰는 법을 배우게 되었습니다만, 가르침의 목적이 별 다를 바 없는 것 같습니다. 그 때도 언어는 다 달랐지만 모두 하나 같이 재미가 없을 뿐더러 아무 짝에 쓸모도 없었습니다. 말하자면, 프로그램 짜는 힘을 기르거나, 더 나아가서 문제 푸는 힘을 기르는데 아무런 보탬이 되지 않았습니다. 언어의 문법을 가르친답시고 시간을 질질 끌다가, 끝내는 구구단 프로그램이나 짜면서 한 학기 과정을 헛되이 보냈습니다. 너무 실망한 나머지 대학이란 곳을 왜 들어왔을까 후회를 하기도 했습니다. 다른 교양 과목, 이를 테면 현대 물리학이나 역학과 견주어 보아도, 왜 프로그램 짜기를 가르치는 교과만 이렇게 깊이가 없는 것인지 도저히 받아들이기 어려웠습니다. 그래서 더욱 불만스러웠던 것 같습니다. 끝내, 저는 동료들 사이에 끼어서 C 프로그램 언어를 배우기 시작하였습니다. 한 1년 정도를 열심히 공부하고 1학년을 마칠 즈음에는 성적 처리 프로그램이나 간단한 주소록 관리 프로그램을 짤 수 있을 정도가 되었습니다. 몇 몇은 만족스러운 듯 했지만, 저를 비롯한 몇 사람은 그렇지 못했습니다. 그 때 스스로에게 되물었습니다. ‘프로그램을 잘 짜려고 프로그램 짜는 말을 배우는 것인데, 한 해 동안 배우고 익힌 말솜씨가 겨우 이 정도라니.’
사실, 저는 중학교를 졸업하여 고등학교에 들어가기 전, 겨울 방학 기간부터, 어머니가 권해서 프로그램 짜기를 배우기 시작했습니다. 살림 살이가 어려웠는데도, 예능 고등학교를 가지 못하게 하여 그림 쟁이가 되겠다는 꿈을 접게 만든 대신에, 마음을 딴데 두라고 컴퓨터 학원비를 대 주셨기 때문입니다. 다행히 프로그램 짜기는 재미있었고, 실력도 쑥쑥 늘었습니다. 고등학교 때부터는 남몰래 프로그램을 짜서 몇 푼 안되는 용돈 벌이를 하기도 하였습니다. 따라서 제가 컴퓨터 관련 학과를 선택한 것은 자연스러운 일이었습니다. 한데, 기대했던 대학에서는 배우고 싶은 것을 가르쳐 주지 않았습니다. 프로그램 잘 짜는 법을 배우고 싶었는데, 프로그램 언어만 죽어라 가르쳐 주었습니다. 그렇게 공들여 배운 언어로 짤 수 있는 프로그램이란 것이 고등학교 시절 혼자서 만들어 보았던 프로그램들보다 쓸모도 없고 짜임새도 없었습니다. 마치 영어를 십 몇년 간 공부하고서 말 한 마디 제대로 못하는 것이나 다를 바 없었습니다. 끝내 쌓이고 쌓였던 실망을 잠시 뒤로 젖히고, 어려운 살림 살이에 대학이란 곳을 계속 다녀야 할런지 스스로에게 되묻는 시간을 가져야만 했습니다. 그리고 군대를 갔습니다. 그 앞 뒤로 또 한 해 정도를 헤매었던 것 같습니다. 몇 년이 지나 복학을 한 다음에 아주 우연한 기회에, 저는 소프트웨어 기술자로서 제 삶에 처음으로 커다란 충격을 준 일을 겪게 되었습니다.
아마도 그 곳은 좀 낡은 공과대학 전산실이었던 것 같습니다. 할 일 없이 그 언저리를 어슬렁 거리다가 어떤 사람이 퍼스널 컴퓨터에서 Pascal로 프로그램 짜는 모습을 지켜보게 되었습니다. 그 사람의 차림새를 보아하니 같은 과 선배이거나 교육 조교 같아 보였습니다. 잘닥만한 사람이 독수리 마냥 양 손의 세 손가락만 써서 남다른 빠르기로 Pascal 코드를 순식간에 쳐내려 가는 모습도 인상 깊었지만, 그 보다 더 놀라운 것은 화면에 가득찬 코드의 짜임새였습니다. 그 코드는 그 전까지 제 스스로 짜보거나, 이런 저런 책에 보기로 실려있던 그런 코드가 아니었습니다. 변수 이름을 짓는 방법에서부터 프로시저를 만들어 쓰는 방법, 여러 데이터 구조를 엮어서 한 줄 한 줄 써내려 가는 코드가 말할 수 없는 어떤 틀을 갖추고 있었습니다. ‘어, Pascal이 이런 언어였나?’ 그 사람이 쓰는 언어는 제가 알던 Pascal 언어가 아니었습니다. 저는 군대를 핑계로 한 두해를 쉬면서 그 때 한참 인기가 있던 Pascal, C 언어로 적고 큰 프로그램을 수도 없이 짜보았기 때문에 ‘문제만 내라, 모두 풀어주마’라고 할만치 자신감이 붙어있었습니다. 하지만, 그런 자신감은 한 화면에 가득찬 코드 한 쪽, 아니 그 사람이 갈겨 쓴 코드 한 줄만으로 우루루 무너져 내렸습니다. 제가 잘 모르는 언어였다면 그렇게 큰 인상을 받지 못했을 것입니다. 아마 제 삶에서 그냥 짠 프로그램이 아니라, ‘참 잘 짠’ 프로그램이란 것을 그 때 처음 보았던 것 같습니다. 잔재주를 부리지 않고, 써야할 것을 마땅히 써야할 자리에 딱 들어맞게 썼으며, 그러면서도 되풀이 되거나 군더더기 한 점 없이 날씬하고 가지런한 프로그램. 제가 배우고 싶었던 것이 바로 그런 짜임새였는데 그제서야 눈앞에서 그게 무엇인지를 볼 수 있게 된 것입니다. 가슴이 벅찼습니다. 그리고 갑자기 그 작고 수수해 보이던 사람이 엄청나게 크고 거룩해 보이기까지 했습니다. 곧바로 무언가를 가르쳐 달라고 매달려 보고 싶은 마음이 굴뚝같았지만, 말을 붙여보기가 두려워서 어쩌지를 못했습니다. 풍선에서 바람이 쏴아 하고 갑자기 빠져나간 듯이, 제가 아주 작고 초라하게 느껴졌기 때문입니다. 여전히 만족스럽지 못한, 그러나 열심히 전공 과목에 매달렸던 2학년을 그러 저럭 보낸 다음에, 3학년 전공 과목에서 그 사람을 다시 만나게 되었습니다. 그 사람은 선배가 아니라 제가 군대를 간 사이에 오신 새 교수님이었습니다. 운이 좋다고 생각했습니다. 굳은 마음을 먹고 찾아가서 배우지 않아도, 많은 사람 속에 섞여서 베푸시는 가르침을 얼마든지 주워 담을 수 있게 되었기 때문입니다. 그 분은 거의 일주일에 하나 씩 새로운 언어를 보여주면서 그 언어에 잘 들어맞는 문제와 풀이법을 가르쳐 주었습니다. 그 때 교재가, Samuel Kamin의 쓴 Programming Languages: An Interpreter-based Approach란 책이었습니다. 이 책도 정말 잘 쓴 책입니다. 혹시 기회가 닿거든 꼭 한 번 보세요. 정신 없이 즐거운 한 학기를 보내는 가운데, 그 분이 신입생에게 남다른 방식으로 프로그램 짜기를 가르친다는 얘기를 들었습니다. 솔직히 털어놓자면, 1학년 몇 명과 같은 과 선후배들이 새로운 교과에 대한 불만을 서로 털어놓고 있을 때, 옆 자리에서 아주 우연히 듣게되어 알게 된 것입니다. 너무 어려운 것은 둘째치고, 듣도 보도 못한 이상한 언어를 쓴다고 투덜대고 있었죠. 저는 뒤돌아 볼 것없이 그 교과를 자유 선택으로 들었습니다. 저는 참말 운 좋은 사람이었습니다. 그 교과에서 쓰던 교재가 바로 이 책, SICP(씩~피) 였으니까요.
사실, 이 책의 가르침을 처음부터 다 받아들이지는 못했습니다. 그 전에 보던 수많은 가르침과는 여러 가지로 너무 달랐으니까요. 책 속에서 쓰는 언어도 못보던 것이었고, 이야기를 풀어가는 방법, 가르침을 전하는 방법까지 어떤 것도 제가 알고 있던 것 같지 않았습니다. 지금까지 다르지만 엇비슷한 언어로 프로그램 짜는 연습을 오랫동안 해온 탓인지, 몸과 머리에 배여있던 버릇을 걷어내기가 쉽지 않았습니다. 그래서 배우는 가운데에도 계속 이 책을 보아야 하나 말아야 하나 머뭇거리느라 헛되이 시간을 보낸 것 같습니다. 돌이켜보면 그런 어줍쟎은 의심 없이 곧바로 이 책의 가르침을 따랐더라면 몇 해에 이르는 시간을 아낄 수 있었으리라 생각합니다. 부탁드리건대, 여러분은 저처럼 머뭇거리지 마세요. 늦으면 늦을 수록 그만큼 손해봅니다. 이 책의 값어치는 이 책의 가르침을 깡그리 받아들여 제 것으로 만든 다음에나 할 일입니다.
이 책에는, 왜 프로그램 짜기를 배우려는지, 지금 하는 일이 어떤 것인지에 관계없이, 프로그램 짜는 법을 배우고자 하는 이라면 모두가 반드시 밟아야 할 가르침이 넘치도록 담겨있습니다. 그 뒤로 가르침의 목적이 같은 수많은 책을 보았음에도, 프로그램 짜기에 관하여 이 책의 가르침을 맞바꿀 만한 것을 아직도 찾아내지 못했습니다.
여러분이 얼마나 운좋고 슬기로운 사람인지 아시고 싶다면, 맨 먼저 이 책의 머릿말을 한 편도 빼놓지 말고 모두 읽어 주십시오. 이 책에 대하여, 제가 하고픈 말들은 머릿말 속에 다 들어있기때문에 따로 보탤 말이 없습니다. 덧붙여 이 책이 얼마나 좋은 책인지를 따로 주절거릴 까닭조차 없지 싶습니다. 그런 이야기를 꺼낸다는게 되려 어색할 만치, 이 책에 따른 교육 과정의 값어치는 수많은 곳에서 갖가지 방법으로 증명되고 있기때문입니다. 또 한 가지, 이 책의 내용을 들추어 보시기 전에, 굳이 꼭 이 책의 머릿말부터 읽으시라고 하는 부추기는 까닭은, 저나 다른 사람들이 그랬던 것처럼, 치우친 경험에서 얻은 비뚤어진 잣대로 이 책의 값어치를 섣불리 재지 마시라는 뜻에서 드리는 말씀입니다. 제 경험으론, 이 책에 담긴 가르침이 보기 드물게 깊고도 넒은 만큼, 읽는 사람들의 오해도 컸습니다. 프로그램 짜기를 처음 배우는 이보다는, 흔히들 쓰는 언어로 프로그램 한 참 짜본 사람들 가운데서, 이 책의 가르침을 어긋나게 받아들이거나 우습게 넘겨버리는 이가 훨씬 많았습니다. 제 생각엔, 적어도 이 책의 3장까지를 차분히 읽어가면서 손수 코드도 쳐서 돌려보고 연습문제도 꾸준히 풀어보지 않으면, 이 책이 주는 값어치를 올바르게 가늠하기 어렵다고 생각합니다. 그러니, 그 전까지는 판단을 미루세요. 그러는 편이 슬기롭습니다.
그 값어치가 남다른 책이니 만큼, 우리말로 이 책을 옮겨쓰기까지는 여러 가지 일들이 많았습니다. 이 분야의 많은 기술 서적이 그러하듯이, 그냥 흘러가는 프로그래밍 기술이나 지식을 다루는 책이었다면, 옮겨적은데 이렇게 오랜 시간이 걸리지 않았을 것이라 봅니다. 더욱이, 내용은 견줄데 없이 깊고도 넓습니다만, 이 분야에 첫 발을 들이는 사람들이 보라고 쓴 책이라 그런지, 글 만큼은 되는한 누구나 쉽게 읽고 받아들일 수 있도록 적으려 애쓴 흔적이 또렷하였습니다. 그런 까닭에, 이런 글을 어려운 우리말로 옮겨쓰면 안되겠구나, 내용이 아니라 말이 어려워서 값진 지식을 멀리하지 않도록 해야겠다 싶어, 제가 맨처음 공부하던 시절을 떠올리면서 조금이라도 더 받아들이기 쉬운 말과 말투를 찾아헤매느라 많은 시간을 보냈습니다. 그게 이 책이 겨냥하고 있는 사람과 가르침에 맞는 일이라고 생각했기 때문입니다.
하지만, 잘 아시다시피, 이런 전문 서적을 옮겨쓰는 일에서는, 편하고 쉬운 말을 쓰기가 훨씬 더 어렵습니다. 옛날 우리 학자들은 수천년 동안 오로지 한자말로 지식을 정리하였고, 한글을 많이 쓰게 된 지금에 이르러서도 말소리만 한글로 적을 뿐이지 거의 모든 학문과 기술을 딴 나라말로 쌓아올리고 있기때문에 쉬운 우리말로된 학술 낱말을 찾아보기가 훨씬 더 힘듭니다. 더구나, 애써 쉬운 말을 가려쓴다고 하여 모두가 이를 반기는 것도 아닙니다. 도리어 학술어를 우리말로 써놓으면 웃음거리가 되기까지 합니다. 저부터도 그렇지만, 오래전부터 우리 머릿속에는 틀을 갖추고 써야할 글을 우리말로 쓰면 깊이가 떨어진다는 생각이 깊이 박혀 있는 듯 합니다. 이를 안타까워하면서, 벌써부터 여러 분야에서는 뜻있는 분들이 모여 전문 학술어를 쉬운 말로 옮겨쓰려 애쓴 적이 여러 차례 있었습니다. 하지만, 딴 나라 말이 아니면 옮겨쓰기가 마땅치 않은 경우도 더러 있고, 운좋게 쉽고 알맞은 말을 찾아냈다고 하더라도 입과 귀에 젖어든 외국말버릇을 고쳐서 바로잡기에는 벌써 늦어버린 경우가 적지 않습니다. 한술 더떠 어떤 이들은 중국말로 쓴 글이 우리말로 쓴 글보다 훨씬 뜻을 알아듣기 쉽다고까지 합니다. 놀랍게도 공부를 많이 한 사람할 수록 그런 경우가 훨씬 더 많습니다. 이런 마당에 이 책을 쉬운 말로 옮겨 쓰겠다는 것은 또 다시 어리석은 일을 벌이는 것일지도 모를 일입니다만, 이 책 만큼은 수많은 뜻있는 분들의 앞선 노력을 담아내고 싶어서 큰 용기를 내어 보았습니다. 그런 까닭에 이 책에서 쓰는 낱말 가운데는 여러분의 입과 귀에 거슬리는 것들이 있을 것이 더러 있을 것이라 생각합니다. 그럴 때는 맨 처음 이 분야에 들어왔을 때를 돌이켜 보시면서 넓고 열린 마음으로 이 책에 쏟아 부은 많은 사람들의 노력을 아리땁게 받아주셨으면 합니다. 마땅히, 너무 지나치지 않도록 여러 사람의 도움을 받아 다듬고 또 다듬기는 했습니다만, 모자란 재주로 좋은 낱말과 글월을 지어내려니 수년 세월도 짧게만 느껴졌습니다. 무엇보다도 낱말을 다듬는데 지나치게 마음을 쓰느라, 정작 중요한 읽기 쉬운 글월을 짜는데 손이 덜 간 것이 아쉽습니다.
오랜 시간이 흐른 만큼, 이 책을 옮겨쓰는 데는 그 동안 정말 많은 분들의 도움이 있었습니다. 그 가운데, 저의 충실한 제자, 김수정 선생이 가장 애썼습니다. 지난 수년간 갈겨 쓰다시피한 제 글을, 처음 배우는 사람의 눈높이에서 토씨 하나 하나 다듬고 고쳐 주었으며, 마지막 낱말 찾기표를 만드는 번거로운 일까지 기꺼이 도맡아 주었습니다. 한편, 이 책의 교과과정을 바탕삼아 동명대학교 신입생들을 위한 새로운 교육 체계를 설계하는 동안, 임성신 교수를 비롯한 동료들이 같가지 번거롭고 힘든 일들을 대신해 주고, 또한 가르치면서 얻은 경험을 들려준 덕택에, 글을 고쳐쓰는데 시간과 지혜, 모두 면에서 큰 도움이 되었습니다. 아울러, 같은 연구실 후배, 곽종섭 군과 장학상 군은 이 책으로 프로그램 짜기를 다시 공부하면서 글을 옮겨쓰는데 보탬이 될만한 많은 의견을 주었습니다. 특히, 장학상 군은, 제가 짜야할 그 많은 프로그램을 대신 짜주어서, 이 일을 좀더 여유롭게 할 수 있도록 도와주었습니다. 아차, 제 아내에게도 고맙다고 해야겠습니다. (안 그러면 큰 일 납니다.) 이 일을 맡은 뒤, 제 첫 아들 녀석이 태어나 하루 종일 애보기에 시달리면서도, 제가 여러 가지 일을 한꺼번에 처리할 수 있도록 힘도 북돋워주고 신경을 덜 쓸 수 있도록 세심한 배려를 해주었습니다.
이 책의 감수를 맡아주신 서울대학교 이광근 교수님께 큰 고마움을 드려야 합니다. 이 분야에서 비슷한 일을 하는 사람을 찾기는 쉽지만, 뜻이 같은 사람, 무엇보다 왜 쉽고 또렷한 우리말로 전문 용어를 만들어 써야 하는지에 대해, 숨결이 같은 사람을 만나기는 어렵습니다. 이런 분이 계셔서, 이 책의 처음부터 끝가지를 꼼꼼하게 따져 살펴주신 것은, 저 뿐 아니라 모두에게 큰 복입니다. 이와 더불어, 출판사 처지로 보면 무려 5년 넘는 세월이 흐른 일인데도, 큰 손해를 보면서까지, 참을성 있게 일이 끝나기를 기다려주시고, 제 고집을 슬기롭게 받아주셨던, 인사이트 출판사의 한기성 사장님, 끝까지 어색한 말투를 토씨 하나까지 살펴서 저와 얘기를 나누어가며 글을 고쳐주셨던, 같은 출판사의 문형숙 씨에게도 깊이 고마움을 드리고 싶습니다. 솔직히, 저 같으면 벌써 딴 사람에게 이 일을 넘겼을 겁니다.
그리고 그 누구보다도, 제 스승님에게 고마움을 드리고 싶습니다. 제가 이런 책을 만나게 된 것, 뛰어난 가르침을 받을 수 있었던 것, 그리고 지금 먹고 사는데 바탕이 된 그 모든 지식, 기술, 경험은 오로지 스승님 덕분입니다. 언제고 프로그램 짜는 즐거움과 아리따운 코드에 대하여 다시 도란 도란 얘기 나눌 때가 오기를 진심으로 바랍니다.
끝으로, 아직 덜 다듬은 책인데도, 이 책을 사서 읽어주시는 여러분께도 고마움을 드립니다. 몇 년 더 잡고 있었다면 훨씬 좋은 책이 나왔을런지 모릅니다만, 제 모자란 글 재주를 믿고 묵혀두기에는, 이 책의 값어치가 너무 큽니다. 그런 까닭에 지금 모습으로라도 이 책을 펴내기로 하였습니다 어찌되었든, 이 책은 널리 퍼져야 합니다. 제가 옮겨쓴 글이 미우시다면, 웹에 공개되어 있는 원서라도 찾아서 꼭 읽어 주십시오. 여러분 스스로 좋은 스승이 되어 한 사람이라도 더, 이 책으로 프로그램 짜기를 공부할 수 있도록 널리 알려주시고 이끌어 주세요. 그래야 우리 소프트웨어 기술 수준이 껑충 뛰어오를 수 있습니다.
여기까지 제 앞뒤없는 글을 읽어주셔서 고맙습니다. 그럼 또 다음에 뵙겠습니다.
2007년 1월이 끝나갈 무렵, 부산 대연동 연구실에서.
김재우
================================================================================================
출처 : http://kizoo.blogspot.com/2007/03/sicp.html
Tags: SICP, Structure and interpretation of computer program, 김재우, 서문, 역자
오랜만에 다시 이 글을 읽는다…
….나는 무엇을 하고 있었나…또 왜 이 글을 여기에 실어 놓았나…