요약(abstraction)과 조립식 설계(modularity)에 따라 복잡한 프로그램을 간단하게 짜는 전략을 보여준다. 그 뿐 아니라, 상태(state)가 있는 물체, 덮어쓰기(assignment), 병행 프로그래밍, 함수 프로그래밍, 제때 계산법(lazy evaluation), 비결정적 프로그래밍(non-deterministic programming) 등 다양한 프로그래밍 이슈를 살펴보며..
하지만 "state 가 있는 물체"라고 번역한 것은 잘 된 번역입니다. 제 기억으로 SICP 에서 처음에는에는 값 중심의 계산 모델을 배우다가 이후에 나오는 장에서 상태가 있는 계산 모델을 배우게 됩니다. 그냥 Object 라고만 번역해 놓으면 그게 상태가 있는 건지 뭔지 강조도지가 않죠. 아마 원문에도 object with states 어쩌고 이런 식으로 되어 있지 않을까 생각합니다.
제가 하려는 말이 그분들의 뜻과 일치하는지는 확신하지 못하겠습니다만, 요약과 추상에 대해서 말씀드리자면
실제로 두 용어는 다른 뜻이 아닙니다. 우리말로 치자면 다르게 들릴 수 있지만, 그네들이 쓰는 입장에서는 크게 다르지 않은 용어입니다. abstract가 abstraction보다는 같거나 넓은 뜻을 가지고 있는 정도로 이해할 수 있을 것 같습니다.
초벌 번역때는 번역을 추상으로 했던 것으로 기억합니다만, 언젠가 부터 요약으로 바뀌었습니다.
abstraction은 본디 수학에서 쓰이는 용어입니다. 하지만 제가 공부를 제대로 안해서 그런지 몰라도 수학을 배우면서 추상 내지는 abstraction이라는 단어 자체를 들은 적이 없습니다. 국어시간이나 철학(이걸 배우는 과목이 도덕이었나요? 사회였나요?)시간에 "추상적"이라는 단어는 들은적이 있어도 말이죠.
저는 추상이라는 단어를 프로그래밍을 배우면서 들었고, 프로그래밍/수학에서 말하는 abstraction과 우리가 보통 쓰는 "추상적"이라는 단어는 미묘하게 다릅니다.
수학에서 말하는 abstraction이 복잡한 것을 간단한게 만드는 과정 내지는 그러한 현상을 나타내는 것이라면, 추상적이라고 하는 것은 말하기는 뭣한 무언가를 표현하기 위한 개념적인 물체를 말할 때 씁니다.
때문에 요약이라고 한 것이 그리 틀리지는 않았다고 생각이 듭니다. 논문에서 말하는 형식적인 "요약"으로 받아들이지만 않는다면 말이죠.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
SICP 번역 초기에 참여를 했었습니다. 물론 지금 제 이름은 들어가 있지 않습니다.
제가 번역한 부분도 시간에 비해 얼마안되고 수준도 낮았기에 포기하고 다른 분들이 처음부터 하셨죠.
번역하신 김재우님을 잘 알기 때문에 번역에 대해서 몇가지 말씀드리고자 합니다.
일단 SICP에 대해서 잠깐 소개를 하자면, MIT에서 1~2학년을 대상으로 한 교육과정에서 쓰는 교재입니다. 즉, 이 책은 프로그래밍을 모르는 사람들을 위해 만들어졌습니다.
현재 프로그래밍을 많이 해오신 분들은 이 책의 번역이 이상하다 생각할지 모르겠습니다. 하지만 프로그래밍을 모르는 후배들이나 학생들에게 처음부터 프로그래밍을 가르쳐본 분들은, 사람들이 용어에서 얼마나 당황스러워 하는지 아시리라 생각합니다. "추상"이나 "재귀"와 같은 표현은 정상적인(프로그래밍과는 관계 없는) 교육만 받고 자란 분들이라면 쉽게 이해하기 힘든 말입니다.
김재우님과 감수를 맏으신 이광근 교수님은 10년이상을 학생이나 일반인들을 가르치면서 이런 문제에 대해서 고민을 하셨던 분들입니다.
책에서 쓰고 있는 익숙하지 않은 단어 중 실제로 수학계/물리학계에서 쓰고 있는 단어의 경우, 학계에서 권장하는 순우리말 표현으로 가져와서 쓴 것으로 알고 있습니다. 그 외, 프로그래밍과 관련된 단어의 경우 실제 영어의 원뜻과 우리말의 원뜻을 비교해서 밀접하게 가까운 말로 재정의한 것이 대부분입니다. 우리가 쓰고 있는 object 즉, "객체"라는 것은 순 우리말의 입장에서 보면 "주체"의 반대말에 가깝습니다. 즉 기준이 되는 주체가 있고 주체의 작용 대상을 객체라 부릅니다. 때문에 객체라는 번역은 뜻으로 비교한다면 잘못된 번역이 맞습니다. 그래서 object의 번역에 대해서 "개체"등의 대안이 떠오른 적도 있는 것으로 기억합니다. object는 영어를 쓰는 나라에서는 5살짜리 아이도 알아듣는 단어입니다. 하지만 우리말로 "객체"라 바꾸면 영어를 배운 사람도 쉽게 못알아듣는 말이 되고 맙니다. 우리말로 굳이 따지자면 거시기, 어떤 것, 그거 등으로 표현되는 너무나도 쉬운 말입니다. 그렇다고 이렇게 적을 수는 없기에 적당한 명사를 찾다보니 "물체"라는 단어가 그나마 object의 원 뜻에 가장 가까운 말로 선택되었습니다. 프로그래밍을 하면서 굳이 어려운 말을 배워가면서 프로그래밍을 배울 이유는 없지 않을까요?
그 외의 단어도 거의 유사한 뜻에서 고쳐졌습니다. 만약에 도저히 우리말과 같은 의미를 찾을 수 없다면, 기존의 용어를 그대로 쓰거나 원어 그대로를 적은 것으로 알고 있습니다. 저 또한 이렇까지 고심해서 번역했다고 이것이 "최상"의 번역이라 생각하지 않습니다. 하지만 이 책을 처음으로 보게될 분들이 프로그래밍을 아예 모르는 분들이라고 가정했을 때, 또한 SICP의 대상이 역시 같다는 것을 생각했을 때, 알 수 없는 은어만이 가득한 소프트웨어 업계의 용어보다는 조금이나마 쉽게 알아들을 수 있지 않을까 생각합니다.
김재우님과 이광근 교수님은 기존의 프로그래밍을 하던 분들, 즉 여러분이 지금 보이는 반응을 이미 예상했습니다. 그리고 한편으로는 비난도 많이 들을 것을 각오하신 것으로 알고 있습니다. 20~30년동안 프로그래밍을 하셨고 아직까지 하고 계신분들이 여러분이 쓰고 있는 단어를 모르시지 않습니다. 그 분들도 잘난 척하려면 여러분들이 듣지도 못한 전문용어를 써가면서 설명하실 수 있습니다. 만약에 그렇게 하셨다면 번역기간이 몇년이 걸리는 것이 아니라 몇개월 정도로 줄일 수도 있었을테고, 출판사 분들이 발을 동동구르지는 않으셨겠지요. 그 분들이 이렇게 욕먹을 각오를 하고 적은 것은 지금 프로그래밍을 배웠다고 (프로그래밍을 모르는) 사람들이 알지도 못하는 용어가 입에 달린 기존의 프로그래머가 아니라, 소프트웨어에 대해서는 아무것도 모르지만 프로그래밍을 진심으로 배우고 싶어하는 분들을 위해서입니다.
개인적으로 수년전에 이 번역에 참여하면서 익숙하지 않은 용어때문에 초기에 약간의 트러블이 있었습니다. 하지만 지금에 와서는 누구보다도 열렬한 추종자가 되어버렸네요. 그 때는 그 분들의 뜻이 너무나도 높은 곳에 있기에 저같은 소인배가 겉만 보고 말았던 것이죠.
제가 이렇게 길게 적었지만, 이 글을 보고 여러분들의 생각이 저와 같아 지리라 생각하기는 힘들 것 같습니다. 또, 이렇게 힘들게 번역한 것이, 힘이 빠지게도, 훗날에는 언급하신 "그 책"과 같은 평가를 받을지도 모르겠습니다.
하지만 이 분들이 자신들에게 편한 용어를 버리고, 비난까지 감수해가면서, 굳이 어려운 길로 간 것을 "프로그래밍을 모르는 사람이 대충대충 쉽게쉽게 번역했다"라고 감정적으로 생각하지는 말아주시기 바랍니다.
그 이외의 번역에 대한 불만이나 오역의 가능성이 있는 것은 김재우님과 연락하시거나 이광근교수님의 홈페이지에서 이야기를 나누는 것이 어떨까 합니다.
이광근 교수님의 홈페이지에 가시면(http://ropas.snu.ac.kr/~kwang/#industrialize) "우리분야의 한글 용어"라는 ppt 자료가 있습니다. 한글 번역에 정말 관심이 있으시다면 한번 읽어보시기를 권합니다.
역시 이광근 교수님의 번역에 대한 자유게시판(http://ropas.snu.ac.kr/lib/term/bbs/zboard.php?id=term&page=1)에 가시면 우리말로 어떻게 번역할지에 대해서 대화를 나누고 있습니다. 여기에서 의견을 올리시면 좋을 것 같습니다.
김재우 교수님과 이광근 교수님은 각각 동명정보대학교와 서울대학교에서 재직중이십니다. 개인적인 연락은 학교 홈페이지를 통해서 연락드리는 것이 좋을 것 같습니다.
추가> 그 분들에게 연락하시는 것이 부담스러우시다면 번역에 대해서 저와 같이 이 글타래나 아니면 이메일을 통해서 이야기를 해보는 것도 좋을 것 같습니다. 제가 그 분들에 비해서는 어쩡쩡하지만 아는 부분에 대해서는 여러분들과 진심으로 토론해볼 생각이 있으니까요.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
아직 책이 배송되지 않아 번역이 어떤지 말하기는 좀 그렇습니다만,
일반인, 신입생을 대상으로 한다는 semmal님의 말은 선듯 수긍하기가 힘들군요.
새로 배우는(프로그래밍에 입문하는) 사람들만을 대상으로 한다면 좀 타겟팅이 잘못된 것같기도 합니다.
저는 학부 2학년인가 3학년때 PL시간에 배웠던것으로 기억합니다.
전산전공 2~3학년의 전공시간에 배우는 교재가 일반인도 읽기 쉬워야하는지는 한번 생각해볼 필요가 있을 것같습니다.
개인적인 생각으로는 새로운 용어에 대해서는 좀더 쉬운(쉽다고 생각되는) 용어를 선택하는 것보다는 생소하더라도 처음 출현했을 때에 명확한 정의를 통해 개념을 인식시키는 편이 더 나은 것같습니다만...
SICP는 MIT에 막 입학한 사람들을 위한 프로그래밍 기초 시간에 쓰려고 만들어진 책입니다. 보통 C나 Java와 같은 (상태가 있는) 물건 중심(혹은 기계 중심)의 언어로 프로그래밍 개론을 배우는 잘못된 관행을 탈피하고자 만들어진 책입니다. 다만 뒷장으로 갈수록 깊이 있는 내용이 나오기 때문에 CS대학원 교재로 사용해도 만만하지는 않은 책이 됩니다. 초심자에서부터 CS전공자까지 모두 볼 수 있도록 쓰여진 책이죠.
그러므로 이 책은 프로그래밍이나 공학에 대해 전혀 모르는 사람이 읽어도 거부감이 없도록 번역하는 것이 번역 의도에 맞습니다. (물론 SICP도 어렵다는 말이 나와서 비공대생을 위한 정말 프로그래밍 개론의 개론을 위해 HTDP라는 책이 나중에 나오게 되죠.)
아직 배송이 되지 않아 번역자체에 대한 논의는 하지 못하겠습니다만 다른 주변적인 이야기들이 나오니 댓글하나 추가합니다.
저자의 의도야 어쨌든간에 교재로 채택하고 수업을 한 곳은 대부분 CS 학부과정이지 않았나요?
저는 동의하지 않지만 imyejin님의 말씀처럼 원저자의 의도가 일반인까지 무리없이 읽을 수 있게 하는 것이었다고 해도, 실상은 원저자의 의도와는 다르게 CS 전공자들의 필수학습서가 된것으로 보입니다.
병치로 놓고보면 번역자의 의도가 일반인도 쉽게 읽을 수 있게 하는 것이었다고 해도, 실상은 CS 전공자들이 훨씬 더 많이 읽을 것이라는 것이 제 생각입니다.
그럼 어떻게 번역하는게 좋다고 생각하시나요?
비꼬는 투로 이야기하면 대화가 안되니, 어떤 생각이라도 말씀해주시면 제가 기회가 닿을 때 전달해드리겠습니다.
그게 서로를 위해서 좋은 방향아닐까요?
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
"추상"이라는 용어 자체가 문제가 있는 한자어라는 것을 저도 알기 때문에 "추상"이라는 번역을 피한 시도는 높이 평가합니다. 하지만 그렇다고 abstraction을 "요약"으로 번역하는 것은 좀 문제가 있다고 봅니다.
영영사전에 보면
An abstraction is a general idea rather than one relating to a particular object, person, or situation.
라고 되어 있습니다.
프로그래밍에서 abstraction 이란 요악한 것이 아니라 한 묶음으로 만들면서 인자를 빼내는 것이거든요. 어떻게 보면 인수분해와 같은 거에요. 공통적인 부분을 빼내서 인자로 만들고 그 인자와 직접적으로 관련이 없는 나무지 부분을 함수 본체로 분리해 내는 거잖아요. 그래서 "분리"나 "빼냄"으로 번역하는 것이 더 좋은 번역이었다고 생각합니다. ("분리", "빼냄"은 abstraction의 번역으로 영한사전에도 나오는 실제 용례이기도 합니다.)
이 부분에 대해서는 저도 그분들의 의도를 명확하게 아는 것은 아니기 때문에, 확실하게 말씀드릴 수가 없네요.
어쨌든 임예진님의 생각에는 저도 고개가 끄덕여집니다.
이 내용이 전달되도록 노력해 보겠습니다.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
보낸 메일을 반송시킬 수는 없습죠.
그렇지만 아래쪽의 내용도 읽자마자 바로 다시 보내드렸습니다.
임예진님은 조금 부끄러우시겠지만, 전 아마도 혼이 날 것 같습니다. 벌써부터 혼날 걱정이...덜덜덜
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
일반인, 신입생이 쉽다고 느낀다면 기존의 프로그래머에게도 쉬울 수 있다는 말입니다. 단지 익숙하지 않아서 그냥 싫을지는 몰라도요.
SICP를 배우는 사람이 기존의 전문가(?)에게 뭔가를 물었을 때, 용어에 대해서 익숙치 않다는 이유만으로 비난만 하지 않는 다면 배우는 사람도 별 불만이 없을거라 생각합니다.
아... 물론 이렇게 된 번역이 일반인, 신입생에게 정말 쉽다면 말이지요. 이건 시간이 지나고 평가가 들려야 아는 것이기때문에 지금 단계에서 쉽다 안쉽다를 굳이 따지고 싶지는 않습니다. 쉽다고 생각해서 만들었는데 물론 아닐 수도 있습니다. 어쨌든, 초보자에게 쉬운 용어가 전문가들이 쓰기에도 당연히 쉽다는 생각이 틀리지는 않다고 생각되는데요. 저만의 생각인가요?
또한 SICP의 내용의 수준은 상당히 높습니다. 실제로 우리나라에서 왠만큼 공부하지 않았다면, 설령 열심히 공부했다고 하더라도 결코 쉬운 내용은 아닙니다. 괜히 SICP에 대응하는 HTDP같은 책이 나온게 아닙니다. 왠간한 미국사람들도 SICP는 MIT 다니는 공부벌레나 보는 책이라고 했을 정도니까요. 하지만 그렇다고 SICP의 대상이 전문가인건 분명 아닙니다.
실제로 MIT에서 그렇게 교육을 하고 있고(시간이 흘러 제가 알고있는 것고 달라지지 않았다면), 일반인을 대상으로하는 강좌도 많이 열려있습니다. 수준의 차이는 있지만 SICP나 HTDP가 추구하는 방향은 컴퓨터를 쓰는 모든 사람이 프로그래밍 언어를 쓸 줄 알아야 한다는 공통적인 기초에서 출발합니다. 왜 이런 주장을 하는지는 HTDP의 서문(http://www.htdp.org/2003-09-26/Book/curriculum-Z-H-2.html)에서 Why Everyone Should Learn to Program 항목을 참고하시기 바랍니다.
SICP가 명저로 대우받는 이유는 초보자를 대상으로 시작하지만, 그 안에 컴퓨터 공학 또는 과학, 심지어는 전자나 전기공학에서 배워야하는 중요한 지식 대부분이 다 스며들어가 있기 때문입니다. 특히 연습문제 하나하나가 대단한 수준의 고민까지 담고있습니다. 하지만 지나치게 많고 어려운 내용이기때문에 책을 만든 서스만 부부도 고민을 했는지, 일반적인 전문서적과는 다르게 아주 쉬운 영어로 풀이해서 적어놨습니다. 원문을 읽어보시면 내용이 결코 딱딱하지 않고, 단어의 수준도 그다지 높지 않다는 걸 알게됩니다. 하지만 아이러니하게도 쉽게 풀어놓은 영어를 그냥 번역해놓으면 도저히 알아볼 수가 없는 말이 됩니다. 수많은 비유가 나타나고, 앞의 말을 꾸미는 구나 절이 반복되기 때문에 보통의 전공서적 번역과는 천양지차가 날 정도로 어렵습니다. 굳이 따지자면 그냥 보통 번역하듯이 해버리면, 반지의 제왕을 번역했는데 원래의 느낌이 안나는 것처럼 보인다고 할까요? 소프트웨어쪽에서도 난다 긴다하는 분들이 몇년을 소모한 번역입니다.
번역서가 정말 마음에 안드신다면 (제발) 원문이라도 보시기 바랍니다. 정말 원서를 보시고 단 한줄이라도 더 좋은 번역을 할 수 있다고 생각하면, (제발) 그렇게 해주셔서 공유해 주시기 바랍니다. 번역에 참여했던 저나 김재우님이나 다른 분들이 그저 인지값이나 벌려고 이 책을 번역하기 시작했던 것이 아닙니다. 저희 스스로가 원서를 보면서 너무나도 답답했기에 벌린 일일뿐입니다. 그냥 마음에 안든다, 나는 그냥 싫다, 이러이러한 점이 싫다라는 의견은 저 또한 한 명의 개인으로 가져보았기에, 여러분들 또한 가질 수 있는 생각이라 인정합니다. 하지만 여기에 대해서 말이 오고간다면 저만의 바램이기는 하지만 좀 더 좋은 대안을 가지고 건설적인 방향으로 대화가 진행되었으면 합니다. 딱히 더 좋은 대안이 없다고 생각하신다면 한번 더 이해해 보거나 조금 색다른 방향이라도 제안을 해주시면, 나중에는 SICP를 온국민이 누구나 쉽게 볼 수 있는 책으로 만들어 볼 수 있는 날이 올지도 모른다는 생각이 드네요.
글을 적고보니 앞의 글이나 지금의 글도 제가 너무 흥분했다는 생각이 듭니다. 장황하게 적은것도, 그저 조금만 더 열린 생각으로 봐 주십사하는 바램이고, 자신을 위해서가 아니라 다른 대부분의 사람들을 위해서 어떻게 번역하는 것이 좋을까, 한번 더 생각해주셨으면 하는 바램인걸요. 이런 책이 그저 오해나 편견에 뭍혀버리지를 않기를 간절히 바랄 뿐입니다.
추가로, 개인적으로 잘 아는 사이지만 책 한권도 공짜로 받지 못했습니다. 저한테 인지값에서 1원도 떨어지지 않기때문에 장사를 하려고 이런 글을 적는 것도 아닙니다. 혹여나 오해하지 마시길 바랍니다.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
프로그래밍을 배웠다고 (프로그래밍을 모르는) 사람들이 알지도 못하는 용어가 입에 달린 기존의 프로그래머가 아니라
한가지 예를 들어.. 딴 사람들은 전부 객체, 개체, Object, Entitiy등으로 애기하는데 혼자서 물체라고 해버리면 대화가 쉽지 않을듯 합니다.
번역자들은 기분나쁘시거나 섭섭해 할수있다봅니다만 많은 개발자들은 마치 예전의 비지오 한글화(ERD, UML부문)를 보는듯한 입장인듯 합니다.
솔직하고 냉정하게 애기해서 이 책을 이미 번역 잘하기로 잘알려진 다른 분들이 번역해서 출간했다면 좋았을껄 하는 생각이 듭니다.
본질은 이 책을 통해 얻고자 하는것이 이미 다 알고있고 널리 쓰이는 용어를 이렇게도 쓸수있다는걸 알려고 하는게 아니지 않습니까.
본질은 이 책을 통해 얻고자 하는것이 이미 다 알고있고 널리 쓰이는 용어를 이렇게도 쓸수있다는걸 알려고 하는게 아니지 않습니까.
말씀드리지만 이 책의 본질은 초보자나 일반인이 조금이라도 더 쉽게 프로그래밍을 배우도록 하는데 있는 것이지(물론 그래서 전문가도 이야기 나누기가 쉬워지면 더 좋구요), 기존의 용어에 익숙한 분들의 입맛에 맞춰서 읽기 쉽게 만들려고 한 것이 아닙니다.
물론 익명님이 말씀하신 것이 틀렸다는 말은 아닙니다. 번역하는 분들 입장에서는 둘 중 하나를 선택해야 했을 때, 조금이라도 초보자와 일반인을 위하자는 쪽을 선택했을 뿐입니다. 애초에 SICP책 목적이 그러하기 때문입니다.
그렇습니다. 그것 때문에 기존의 전문가들이 불편해할 것이고, 그것 때문에 비난하실 겁니다. 저 또한 한때 그러했기때문에 이해합니다. 어쩌면 미래에는 몇몇 사람들이 시도했던 사건으로 잊혀실 수도 있겠지요. 그렇다해도 그런 걸 생각하고 만들었기때문에 그저 "선택"의 문제였을 뿐입니다.
만약에 영어를 보는데 충분한 실력이 있으시다면, 번역이 그렇게 마음이 들지 않는다면 영어원서를 보는게 좋을지도 모릅니다. 다만 번역서를 읽으실 때 자신이 아니라 초보자나 일반인의 입장에서 조금 더 생각해주셨으면 하는 바램이네요.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
우리나라 사람들 전체로 보자면 짜장면을 많이 쓰고 있고, 자장면을 적게 쓰고 있습니다.
그래서 저도 짜장면이라 부릅니다. 굳이 다들 짜장면으로 알고 있는데 자장면이라 부를 이유가 없다고 생각합니다.
프로그래밍 언어를 배우는 범위를 번역자분들은 우리나라 사람들 전체로 잡은 겁니다. 일부에 불과한 기존의 프로그래머가 아니라요. 그래서 일반인들이 더 쉬운 용어를 쓰려고 노력한겁니다.
약간 억지스러운가요? 반대로 프로그래머들에게 그 범위를 한정한다면 님의 말씀이 틀리지 않습니다.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
semmal님, 취지는 이해하겠습니다만.. 아무리 좋게보려해도 용어의 선택이 억지스런 면이 있습니다.
소설이 아닌 전문서적에서까지.. 이런 애긴 접어두고요.
Unix Network Programming처럼 번역서를 먼저 사고 원서를 사게되는 경우는 앞으로도 없었으면 합니다.
솔직히 지금 생각해도 화가 다 납디다.
Lisp을 써보신 적있으신가요? 또는 Smalltalk를 써보신 적 있으신가요? 둘다 까마득한 과거에 만들어져서 아직까지 스스로 살아남거나 또는 다른 언어에 모태가 되어서 내려온 언어죠. 제가 맨처음에 C를 먼저 접하고 근 10년이 지나도록 저 두가지 언어를 한번도 써보지 않았다는게, 나중이 되어서는 너무나도 (절망에 가까울 정도로) 아쉬웠습니다.
C에서 C++/Java로 옮겨가면서 OOP를 이해하려고 발버둥친 몇년의 기간은, 사실 Smalltalk를 단 몇 개월이라도 써봤다면 없었던 일이었을 겝니다. 또한 (프로그래밍 언어 수준의) 설계가 뭐니 추상이 뭐니 이해하려고 발버둥친 몇년의 기간도 Lisp을 몇 개월이라도 써봤다면 없었던 일이 되었을텐데요. SICP 또한 그렇습니다.
SICP를 진정으로 다 보고 이해를 했다면, 그 사람은 어디에 가도 어떤 언어로든 프로그래밍을 할 수 있을거라 자신합니다. 나름대로 잘난 맛에 살고 자만심에 가득차 있는 저인데도, SICP에 있는 연습문제도 제대로 풀지 못하는 경우가 허다합니다.
이미 다른 언어를 배웠다면 또다른 언어의 문법 배우는데 몇일, 길어도 몇주면 되지 않나요?
어쩌면 위의 분은 지금 너무나도 실력이 좋으시고, 예전에 이미 그런 좌절을 겪으시고 그런 말씀을 하시는 건지는 모르겠습니다.
스스로 프로그래밍 고수다라고 말할 수 없는 저의 입장에서 생각이긴 하지만, SICP를 봤다고 좌절을 느끼리라 생각되지는 않습니다. 나중에 엄청난 도움이 되면 도움이 될지언정 말이죠.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
곰곰히 생각해 보면서 이광근 교수님의 전공분야를 살펴 보니, abstraction을 abstract로 번역한 것은 깊이 있는 프로그래밍 언어 전문가의 내공에서 나온 적절한 해석입니다. 제 짐작으로는 아마 초벌 번역에서는 abstraction을 "추상"이라고 했다가 이광근 교수님이나 혹은 다른 프로그래밍 언어 연구자들의 조언에 따라 "요약"이라는 더 올바른 번역으로 개선했다고 봅니다.
생각해 보니 이광근 교수님의 전문 분야가 abstract interpretation입니다. 여기서 abstract interpretation은 말 그대로 "요약 해석"이죠. 예를 들면 {...,-2,-1,0,1,2,3,...} 와 같은 정수를 {음수,0,양수}로 요약한다든지 {짝수,홀수}로 요약한다든지 해서 프로그램 결과의 어림값을 예상해 보는 이런 것을 "요약 해석"(abstract interpretation)이라고 합니다. 요약 해석은 model checking 등의 프로그래밍 분석 분야에 응용되고 있습니다.
다음과 같은 일련의 식을 생각해 봅시다.
{...,-1+1,-2+1,0+1,1+1,2+1,3+1,4+1,5+1,(1-3)+1,e+1,pi+1,(pi/2)+1,...}
자 위 식들을 어떻게 요약할 수 있을까요?
예, 그렇습니다. 바로 다음과 같이 조건제시법으로 요약해서 똑같은 집합을 나타낼 수 있습니다.
{ e' | (\ x . x + 1) e --beta_n--> e' where e is any expression }
(위에서 \ 는 람다를, --beta_n--> 은 1 step normal order bet reduction 을 뜻함)
\ x. x + 1 이라는 람다 식은 어떤 임의의 식을 주면 그 임의의 식에 더하기 1을 하는 형태의 식을 만들어 낼 수 있는 일종의 요약된 표현이죠.
논리학에서 람다 셈법(lambda calculus)이 나온 맥락을 생각해 보면 위와 같이 식을 요약할 수 있기 때문에 람다로 함수를 만드는 것을 abstract(요약)한다는 의미에서 abstraction이라고 불렀라고 생각합니다. 보다 정확한 것은 수리논리학이나 현대논리학 혹은 프로그래밍 언어 기초 분야를 연구하시는 전문가에게 자문을 해 보아야 하겠으나, 제 짧은 지식과 기억으로도 람다 식이 여러 식을 요약하는 데 쓰인다는 것을 기억해 낼 수 있었씁니다. 전산학과의 프로그래밍 언어 과목이나 수학과 혹은 철학과의 현대논리학 등의 과목에서 람다 셈법에 대해 공부해 보신 분들이라면 위의 예를 보시고 abstraction을 요약이라고 해석한 것은 참으로 올바른 해석이라고 무릎을 탁 치시리라 생각합니다.
제가 역자들의 깊은 뜻을 이해하지 못하고, 순간적으로 abstract와 abstraction은 다르다고 한 말에 귀가 얇아저서, 깊이 있는 번역을 문제가 있다고 짧은 생각으로 함부로 판단한 것 죄송합니다. semmal 님께서는 아래에 요약이 번역이 이상하다고 제가 맞장구친 것은 잊어버리시고 이광근 교수님과 김재우 교수님께 정말로 좋은 단어를 선택했다고 전해 드리기 바랍니다.
@ 그럼 여러분들께서도 프로그래밍 언어 연구자의 깊이 있는 시각에서 나온 번역을 단지 영한사전 번역에 나오지 않는다는 이유로 잘못된 것이라 저처럼 넘겨짚는 우를 더 이상 범하는 분이 없기를 바랍니다. 무식하면 용감하다, 서울에 안 가 본 사람이 서울을 제일 잘 안다고 큰소리친다 뭐 이런 옛말이 떠오르는군요 ㅠ.ㅜ
생각해보니 제가 lisp이나 smalltalk에 대해 적은 글이 주제와 전혀 상관없는 내용이네요.
아마도 SICP의 가치에 대해서는 아시고 계신 상태에서, 번역에 대해서 말씀하시는 건데 제가 괜한 오해를 했나봅니다.
그렇지만 번역이 이상하다고 절망에 빠지지는 않을 것 같습니다. 정말 안좋은 번역이라면 그 전에 자연스럽게 버려질테니까요.
반대로, 좋은 번역이라서 SICP의 내용을 잘 습득할 수 있다면 생소한 용어를 쓰면서 생기는 괴리감을 고려하더라도, 손해보는 일은 아니라 생각합니다. SICP는 그정도의 가치는 있는 책이니까요.
그리고 익명님도 기분 나쁜 글을 봤다고, 글을 흥분해서 적기보다는 좋게좋게 말할 수 있는거잖아요. 굳이 글을 보는 여러 사람의 마음을 불편하게 할 이유는 없지 않을까요? 제 성격이 많이 유치하기는 하기 때문에 익명님의 말에 기분나쁘지는 않습니다만 조금쯤은 슬프네요. :(
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
무슨 오해가 있으신가본데 저는 제 자신이 순간적으로 착각을 하며 잘 알지도 못하고 곰곰해 생각해 보지도 않고서 abstraction이 잘못된 표현이라고 역자들에게 알려 달라고 semmal 님께 아는 체 하며 말씀드렸던 제 자신의 과오를 스스로 탓하면서 제 자신을 무식해서 용감하고 서울에 가 보지도 않고 큰소리치는 사람처럼, 고민을 많이 해 본 역자들의 올바른 해석을 잘못되었다고 한 제 자신의 실수에 대해서 표현하며 자기반성의 뜻으로 쓴 것입니다.
써 있는 그대로 네이버 영한사전 한번 훑어 보고 어라 abstraction은 "추상", "분리", "빼냄"이라고만 영한사전에 나와 있고 "요약"이라는 건 없네. 프로그래밍 언어 교수들이라더니 이런 초보적인 실수를 하다니 ... 이런 식으로 넘겨짚는 우를 범해서는 안된다는 것입니다. 이제 더 이상의 오해가 없었으면 합니다 :-)
'object는 object지 왜 객체인지 물체인지를 따져야 하나?'
이런 생각을 하다가 문득 제가
원서로 이해하고 원어로 대화하는게 제일 좋다고 생각하는
편견을 가지고 있다는걸 느꼈습니다.
저조차도 신입생때 전공 입문을 한글로 배웠으면서
지금 좀 배웠다고 원어로만 생각했네요..
실생활에서 객체라는 말을 쓸때가 있나 생각해봅니다.
우리는 implementation을 구현이라고 생각하는데
원래는 실행/완성 이라는 말이 더 맞지요.
공대나 이과대에서는 아직도 예전 일본식 한자로 된 표현이 많습니다.
물론 너무 오래되서 거의 공학용어처럼 되서
적응이 안되고 혼돈되지만
이런 잘못된 표현들이 바로잡아지면 장기적으로는 더 좋겠지요.
application program이 응용 프로그램일까요 이용 프로그램이 맞을까요?
사용자가 이용하는 프로그램이니까 이용프로그램이 맞는것 같은데
응용 프로그램이라고 말을 해야 어플리케이션이라고 연상이 되네요.
응용이라면 뭔가를 활용해서 다른 일을 한다는 건데
응용 프로그램이라면 오히려 개발 툴을 활용해서 프로그램을 만드니까 헷갈리네요.
응용 프로그램이 사용자가 응용해서 자기 실생활에 활용한다는 것도 되니까 맞기도 한것 같구요.
지금의 컴퓨터 용어에 대해 논란이 많으니
이런 토론도 생기는것 같습니다.
장기적으로 많은 분들이 계속 노력하면 정립이 되겠지요.
application program이 응용 프로그램일까요 이용 프로그램이 맞을까요?
사용자가 이용하는 프로그램이니까 이용프로그램이 맞는것 같은데
응용 프로그램이라고 말을 해야 어플리케이션이라고 연상이 되네요.
아마도 application program 은 OS의 기능을 응용해서 만든 프로그램 뭐 그런 의미가 아닐까요? 또, 사용자가 사용하는 프로그램이니까 "사용프로그램" 혹은 "사용자 프로그램" 이라고 부를 수도 있죠.
그냥 OS 관점에서 보면 시스템 자원에 마음대로 접근할 특권이 없는 user program (non-OS, user process)과 시스템 자원에 마음대로 접근할 수 있는 특권이 있는 system program (OS, privileged process) 그냥 이렇게 두 개로 나누면 될텐데 말이죠.
그러면 그냥 사용자 프로그램과 시스템 프로그램 두 개로만 나눠서 생각하면 되잖아요.
윈도우즈 제어판에도 보면 사용자 프로세스, 시스템 프로세스 보기 뭐 이런 식으로 되어 있기도 하고요.
물론 프로그램 자체가 여러 프로세스의 모임으로 이루어져 있을 수도 있고, OS를 플랫폼으로 생가하지 않고 웹을 플랫폼으로 생각한다면 서버에서 도는 cgi 프로그램이과 클라이언트에서 도는 클라이언트 스크립트나 플러그인이 user program 의 역할을 하고 웹서버와 웹브라우저가 system program 의 역할을 하는 등 플랫폼에 따라서 조금씩 의미가 다를 수도 있겠죠.
오오.. lisp 오오..
오오.. lisp 오오..
후후후. 기다리고
후후후.
기다리고 있었습니다.
정식 판매 시작하면 바로 학교 도서관에 구입 신청해야겠네요. +_+
아~ 짱나..
아~ 짱나..
왜 난 이런 책이 있었다는 것도 모르고 있엇을까요..
(근데, 왜 LISP 인거지?)
SICP, DC, BC 모두 몰랐던 거라구요.. 젠장.
Dreaming in Code랑 Beautiful Code 는 이것들이 맞나요? --a;;
Dreaming in CODE : http://www.amazon.com/Dreaming-Code-Programmers-Transcendent-Software/dp/1400082463
Beautiful Code : http://www.amazon.com/Beautiful-Code-Leading-Programmers-Practice/dp/0596510047/ref=pd_bbs_sr_1/102-5987649-7086528?ie=UTF8&s=books&qid=1192156564&sr=1-1
----------------------------------------------------------=>
Be supercalifragilisticexpialidocious, run for your life!
----------------------------------------------------------=>
Be supercalifragilisticexpialidocious, run for your life!
왜 LISP 이냐면..
최고기 때문이죠 LISP은..
Simply the best..
흠홧홧
LISP 사용자모임
http://cafe.naver.com/lisper
방송기술 개발업체
http://playhouseinc.co.kr
링크 좀 걸어주시면..안될까요?? ^^;;
http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200409010002#0
이 책인거 같은데요...한글판 나온다는 공지사항을 못찾겠네요..
어디에서 보신거에요??
--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.
--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.
Dreaming in Code
Dreaming in Code 영어 책으로 사서 이미 다 읽었는데 왠지 손해본 느낌이에요. 흑흑. (책은 좋습니다.)
좋은
좋은 소식이네요.
명저가 제대로 번역되었길 빕니다.
저에겐 프로그래밍에 관한 새로운 시각을 심어준 정말 멋진 책이었습니다.
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
번역본 관련 링크
번역본 관련 링크 부탁합니다. 강컴 어디에 있는거죠? 음 제가 잘 못찾는건가 ...
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
예약 도서 항목에 있습니다~
http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200710100001
10월25일 출간입니다.
번역자가
번역자가 김재우님이군요. 그렇다면 믿을 만 하겠습니다. :)
http://kizoo.blogspot.com/search/label/SICP
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
인용: 요약(abstraction)
머리말만 봐도 이런식인데.. 번역은 잘했을런지 모르겠으나 의미는 곱씹어야 될듯하군요.
왠지 "그책"이
왠지 "그책"이 생각나면서 원서를 추천해야 하나라는 생각이 듭니다.
저렇게 원문을 같이
저렇게 원문을 같이 써주면 좋지요.
이 책은 원서로 보려다가 저런 용어들이 낯설고 이해가 안되서 포기했었는데요
저렇게 한글로 조금이라고 의미가 통하게 써주면 너무나 감사한 일입니다.
원문의 그 뉘앙스라고 하나요? 행간의 뜻을 그대로 쓴다는 것이 불가능하겠지만
한글/영어로 최대한 같이 써준다면 그것도 좋을것 같습니다.
----
세상을 바꾸는 것은 단 한 사람. 오직 하나님의 사람뿐이다.
'그책'의 번역자중에
'그책'의 번역자중에 한사람입니다. (벌써 8년 가까이 되었군요. 9년전인가?)
그나마 제 이름이 번역서에 올라가지 않은게 이제와서 생각하면 얼마나 다행인지... ^^;;
그당시에 시간도 촉박했고, 감수도 제대로 되지 않았더랬습니다. 배경지식이 많이 부족했던 것도 사실이구요.
결정적으로 출판사에서 적지않은 전공어휘를 '찾기/바꾸기'로 몽땅 바꿔버리는 바람에 통합본 파일 받고서 어이없어했던 기억이 어렴풋이 납니다.
P.S.: Unix Network Programming 말씀하시는거 맞죠? ㅎㅎ
부드럽게 읽혀지질
부드럽게 읽혀지질 않더군요.
팩토리얼을 사다리곱으로 적은부분까지 읽고 책 덮었습니다.
돈이 아깝다는 생각이 살살 올라오네요.
제가 배울땐 그냥 팩토리얼이라고 배운거 같은데 요즘은
사다리곱이라고 배우나요??
진짜에요???
사다리곱...-_-;
저도 주문했는데......
--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.
--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.
음..사다리곱은 저도^^
실례지만.. 용어말구 전체적으로 번역문의 질은 어떤가요? 영어식 어체를 바로 그냥 한국말로 옮긴거에 불과하다라던가 문장이 좀 어색하다던가 그런 점이요
저는 계승이라고
저는 계승이라고 배웠습니다. '3!'일 때 3 팩토리얼이라고 읽기도 합니다만..
state가 있는
state가 있는 물체라는건 객체(Object)를 얘기하는 것일까요? 원문이 필요한 번역이로군요. -_-ㅋ
abstraction을
abstraction을 요약이라고 번역한 것은 문제가 있군요.
하지만 "state 가 있는 물체"라고 번역한 것은 잘 된 번역입니다. 제 기억으로 SICP 에서 처음에는에는 값 중심의 계산 모델을 배우다가 이후에 나오는 장에서 상태가 있는 계산 모델을 배우게 됩니다. 그냥 Object 라고만 번역해 놓으면 그게 상태가 있는 건지 뭔지 강조도지가 않죠. 아마 원문에도 object with states 어쩌고 이런 식으로 되어 있지 않을까 생각합니다.
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
요약과 추상
제가 하려는 말이 그분들의 뜻과 일치하는지는 확신하지 못하겠습니다만, 요약과 추상에 대해서 말씀드리자면
실제로 두 용어는 다른 뜻이 아닙니다. 우리말로 치자면 다르게 들릴 수 있지만, 그네들이 쓰는 입장에서는 크게 다르지 않은 용어입니다. abstract가 abstraction보다는 같거나 넓은 뜻을 가지고 있는 정도로 이해할 수 있을 것 같습니다.
초벌 번역때는 번역을 추상으로 했던 것으로 기억합니다만, 언젠가 부터 요약으로 바뀌었습니다.
abstraction은 본디 수학에서 쓰이는 용어입니다. 하지만 제가 공부를 제대로 안해서 그런지 몰라도 수학을 배우면서 추상 내지는 abstraction이라는 단어 자체를 들은 적이 없습니다. 국어시간이나 철학(이걸 배우는 과목이 도덕이었나요? 사회였나요?)시간에 "추상적"이라는 단어는 들은적이 있어도 말이죠.
저는 추상이라는 단어를 프로그래밍을 배우면서 들었고, 프로그래밍/수학에서 말하는 abstraction과 우리가 보통 쓰는 "추상적"이라는 단어는 미묘하게 다릅니다.
수학에서 말하는 abstraction이 복잡한 것을 간단한게 만드는 과정 내지는 그러한 현상을 나타내는 것이라면, 추상적이라고 하는 것은 말하기는 뭣한 무언가를 표현하기 위한 개념적인 물체를 말할 때 씁니다.
때문에 요약이라고 한 것이 그리 틀리지는 않았다고 생각이 듭니다. 논문에서 말하는 형식적인 "요약"으로 받아들이지만 않는다면 말이죠.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
'추상'이라는 말
'추상'이라는 말 수학에서도 씁니다. 추상대수학 추상대수학 (사전), Abstract simplicial complex는 추상적 단체의 복합체라고 부르죠.
abstract와 abstraction을
abstract와 abstraction을 헷갈리는 걸 보니 안 봐도 뻔하군요.
번역이
번역이 별로인가요?
괜히 샀나? Orz.
책으로 가지고 있는 것은 first edition이라... second edition을 원서로 또 살까 고민하다가 second edition 번역서 나온다고 해서 주문했는데...
소프트웨어 개발에서 소스를 오픈해서 참여를 유도하는 방법을 번역쪽에서도 좀 배울 때가 되지 않았나 싶습니다.
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
인용:소프트웨어
번역물은 아니지만..
얼마전 나온 erlang 책이 적당히 오픈된 형태로 제작이 됐더군요,
출판전 예약주문한 고객들한테 미리 드래프트가 공개되고
저자에게 피드백이 가능했던 모양입니다.
개인적으로 상당히 맘에 드는 시스템이네요.
이 책의 번역에 대해서
SICP 번역 초기에 참여를 했었습니다. 물론 지금 제 이름은 들어가 있지 않습니다.
제가 번역한 부분도 시간에 비해 얼마안되고 수준도 낮았기에 포기하고 다른 분들이 처음부터 하셨죠.
번역하신 김재우님을 잘 알기 때문에 번역에 대해서 몇가지 말씀드리고자 합니다.
일단 SICP에 대해서 잠깐 소개를 하자면, MIT에서 1~2학년을 대상으로 한 교육과정에서 쓰는 교재입니다. 즉, 이 책은 프로그래밍을 모르는 사람들을 위해 만들어졌습니다.
현재 프로그래밍을 많이 해오신 분들은 이 책의 번역이 이상하다 생각할지 모르겠습니다. 하지만 프로그래밍을 모르는 후배들이나 학생들에게 처음부터 프로그래밍을 가르쳐본 분들은, 사람들이 용어에서 얼마나 당황스러워 하는지 아시리라 생각합니다. "추상"이나 "재귀"와 같은 표현은 정상적인(프로그래밍과는 관계 없는) 교육만 받고 자란 분들이라면 쉽게 이해하기 힘든 말입니다.
김재우님과 감수를 맏으신 이광근 교수님은 10년이상을 학생이나 일반인들을 가르치면서 이런 문제에 대해서 고민을 하셨던 분들입니다.
책에서 쓰고 있는 익숙하지 않은 단어 중 실제로 수학계/물리학계에서 쓰고 있는 단어의 경우, 학계에서 권장하는 순우리말 표현으로 가져와서 쓴 것으로 알고 있습니다. 그 외, 프로그래밍과 관련된 단어의 경우 실제 영어의 원뜻과 우리말의 원뜻을 비교해서 밀접하게 가까운 말로 재정의한 것이 대부분입니다. 우리가 쓰고 있는 object 즉, "객체"라는 것은 순 우리말의 입장에서 보면 "주체"의 반대말에 가깝습니다. 즉 기준이 되는 주체가 있고 주체의 작용 대상을 객체라 부릅니다. 때문에 객체라는 번역은 뜻으로 비교한다면 잘못된 번역이 맞습니다. 그래서 object의 번역에 대해서 "개체"등의 대안이 떠오른 적도 있는 것으로 기억합니다. object는 영어를 쓰는 나라에서는 5살짜리 아이도 알아듣는 단어입니다. 하지만 우리말로 "객체"라 바꾸면 영어를 배운 사람도 쉽게 못알아듣는 말이 되고 맙니다. 우리말로 굳이 따지자면 거시기, 어떤 것, 그거 등으로 표현되는 너무나도 쉬운 말입니다. 그렇다고 이렇게 적을 수는 없기에 적당한 명사를 찾다보니 "물체"라는 단어가 그나마 object의 원 뜻에 가장 가까운 말로 선택되었습니다. 프로그래밍을 하면서 굳이 어려운 말을 배워가면서 프로그래밍을 배울 이유는 없지 않을까요?
그 외의 단어도 거의 유사한 뜻에서 고쳐졌습니다. 만약에 도저히 우리말과 같은 의미를 찾을 수 없다면, 기존의 용어를 그대로 쓰거나 원어 그대로를 적은 것으로 알고 있습니다. 저 또한 이렇까지 고심해서 번역했다고 이것이 "최상"의 번역이라 생각하지 않습니다. 하지만 이 책을 처음으로 보게될 분들이 프로그래밍을 아예 모르는 분들이라고 가정했을 때, 또한 SICP의 대상이 역시 같다는 것을 생각했을 때, 알 수 없는 은어만이 가득한 소프트웨어 업계의 용어보다는 조금이나마 쉽게 알아들을 수 있지 않을까 생각합니다.
김재우님과 이광근 교수님은 기존의 프로그래밍을 하던 분들, 즉 여러분이 지금 보이는 반응을 이미 예상했습니다. 그리고 한편으로는 비난도 많이 들을 것을 각오하신 것으로 알고 있습니다. 20~30년동안 프로그래밍을 하셨고 아직까지 하고 계신분들이 여러분이 쓰고 있는 단어를 모르시지 않습니다. 그 분들도 잘난 척하려면 여러분들이 듣지도 못한 전문용어를 써가면서 설명하실 수 있습니다. 만약에 그렇게 하셨다면 번역기간이 몇년이 걸리는 것이 아니라 몇개월 정도로 줄일 수도 있었을테고, 출판사 분들이 발을 동동구르지는 않으셨겠지요. 그 분들이 이렇게 욕먹을 각오를 하고 적은 것은 지금 프로그래밍을 배웠다고 (프로그래밍을 모르는) 사람들이 알지도 못하는 용어가 입에 달린 기존의 프로그래머가 아니라, 소프트웨어에 대해서는 아무것도 모르지만 프로그래밍을 진심으로 배우고 싶어하는 분들을 위해서입니다.
개인적으로 수년전에 이 번역에 참여하면서 익숙하지 않은 용어때문에 초기에 약간의 트러블이 있었습니다. 하지만 지금에 와서는 누구보다도 열렬한 추종자가 되어버렸네요. 그 때는 그 분들의 뜻이 너무나도 높은 곳에 있기에 저같은 소인배가 겉만 보고 말았던 것이죠.
제가 이렇게 길게 적었지만, 이 글을 보고 여러분들의 생각이 저와 같아 지리라 생각하기는 힘들 것 같습니다. 또, 이렇게 힘들게 번역한 것이, 힘이 빠지게도, 훗날에는 언급하신 "그 책"과 같은 평가를 받을지도 모르겠습니다.
하지만 이 분들이 자신들에게 편한 용어를 버리고, 비난까지 감수해가면서, 굳이 어려운 길로 간 것을 "프로그래밍을 모르는 사람이 대충대충 쉽게쉽게 번역했다"라고 감정적으로 생각하지는 말아주시기 바랍니다.
그 이외의 번역에 대한 불만이나 오역의 가능성이 있는 것은 김재우님과 연락하시거나 이광근교수님의 홈페이지에서 이야기를 나누는 것이 어떨까 합니다.
이광근 교수님의 홈페이지에 가시면(http://ropas.snu.ac.kr/~kwang/#industrialize) "우리분야의 한글 용어"라는 ppt 자료가 있습니다. 한글 번역에 정말 관심이 있으시다면 한번 읽어보시기를 권합니다.
역시 이광근 교수님의 번역에 대한 자유게시판(http://ropas.snu.ac.kr/lib/term/bbs/zboard.php?id=term&page=1)에 가시면 우리말로 어떻게 번역할지에 대해서 대화를 나누고 있습니다. 여기에서 의견을 올리시면 좋을 것 같습니다.
김재우 교수님과 이광근 교수님은 각각 동명정보대학교와 서울대학교에서 재직중이십니다. 개인적인 연락은 학교 홈페이지를 통해서 연락드리는 것이 좋을 것 같습니다.
추가> 그 분들에게 연락하시는 것이 부담스러우시다면 번역에 대해서 저와 같이 이 글타래나 아니면 이메일을 통해서 이야기를 해보는 것도 좋을 것 같습니다. 제가 그 분들에 비해서는 어쩡쩡하지만 아는 부분에 대해서는 여러분들과 진심으로 토론해볼 생각이 있으니까요.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
아직 책이 배송되지
아직 책이 배송되지 않아 번역이 어떤지 말하기는 좀 그렇습니다만,
일반인, 신입생을 대상으로 한다는 semmal님의 말은 선듯 수긍하기가 힘들군요.
새로 배우는(프로그래밍에 입문하는) 사람들만을 대상으로 한다면 좀 타겟팅이 잘못된 것같기도 합니다.
저는 학부 2학년인가 3학년때 PL시간에 배웠던것으로 기억합니다.
전산전공 2~3학년의 전공시간에 배우는 교재가 일반인도 읽기 쉬워야하는지는 한번 생각해볼 필요가 있을 것같습니다.
개인적인 생각으로는 새로운 용어에 대해서는 좀더 쉬운(쉽다고 생각되는) 용어를 선택하는 것보다는 생소하더라도 처음 출현했을 때에 명확한 정의를 통해 개념을 인식시키는 편이 더 나은 것같습니다만...
책이 배송되면 정독 후에 다시 글 남기겠습니다.
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
SICP는 MIT프로그래밍
SICP는 MIT에 막 입학한 사람들을 위한 프로그래밍 기초 시간에 쓰려고 만들어진 책입니다. 보통 C나 Java와 같은 (상태가 있는) 물건 중심(혹은 기계 중심)의 언어로 프로그래밍 개론을 배우는 잘못된 관행을 탈피하고자 만들어진 책입니다. 다만 뒷장으로 갈수록 깊이 있는 내용이 나오기 때문에 CS대학원 교재로 사용해도 만만하지는 않은 책이 됩니다. 초심자에서부터 CS전공자까지 모두 볼 수 있도록 쓰여진 책이죠.
그러므로 이 책은 프로그래밍이나 공학에 대해 전혀 모르는 사람이 읽어도 거부감이 없도록 번역하는 것이 번역 의도에 맞습니다. (물론 SICP도 어렵다는 말이 나와서 비공대생을 위한 정말 프로그래밍 개론의 개론을 위해 HTDP라는 책이 나중에 나오게 되죠.)
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
아직 배송이 되지
아직 배송이 되지 않아 번역자체에 대한 논의는 하지 못하겠습니다만 다른 주변적인 이야기들이 나오니 댓글하나 추가합니다.
저자의 의도야 어쨌든간에 교재로 채택하고 수업을 한 곳은 대부분 CS 학부과정이지 않았나요?
저는 동의하지 않지만 imyejin님의 말씀처럼 원저자의 의도가 일반인까지 무리없이 읽을 수 있게 하는 것이었다고 해도, 실상은 원저자의 의도와는 다르게 CS 전공자들의 필수학습서가 된것으로 보입니다.
병치로 놓고보면 번역자의 의도가 일반인도 쉽게 읽을 수 있게 하는 것이었다고 해도, 실상은 CS 전공자들이 훨씬 더 많이 읽을 것이라는 것이 제 생각입니다.
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
그런 논리라면 pipe를
그런 논리라면 pipe를 대롱이라고 번역한 것은 정말 멋있는 번역이었겠군요.
정말 예전에 논란이된 어떤 책이 생각나는 사건(?)이로군요.
초벌 번역만 본 터라 책에서 pipe라는 단어가 나오는지는 기억이 나지 않지만
그럼 어떻게 번역하는게 좋다고 생각하시나요?
비꼬는 투로 이야기하면 대화가 안되니, 어떤 생각이라도 말씀해주시면 제가 기회가 닿을 때 전달해드리겠습니다.
그게 서로를 위해서 좋은 방향아닐까요?
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
김치하 교수님의 UNP
김치하 교수님의 UNP 번역서에 나온 용어들이죠 ?
파이프 -> 대롱,
쉘 -> 보쌈 ?
커널 -> 알맹이
스택 -> 더미
아마 이렇던 것으로 알고 있습니다.
근데, UNP는 유닉스와 C에 어느정도 익숙한 사람을 대상으로 씌여진 책입니다. 파이프를 대롱이라고 번역하는 것은 오히려 혼란을 부추길 수도 있습니다. SICP와는 타겟이 다릅니다.
UNP번역서는 "상당히 잘 번역되어 있다는 게" 제 생각입니다. 독자층을 염두에 두지 않은 무리한 표준한글 번역에 문제가 있었지만, 다른 부분들은 매우 훌륭하게 번역되어 있습니다.
abstraction 의 번역어 선택은 좀 문제가 있다고 봅니다
"추상"이라는 용어 자체가 문제가 있는 한자어라는 것을 저도 알기 때문에 "추상"이라는 번역을 피한 시도는 높이 평가합니다. 하지만 그렇다고 abstraction을 "요약"으로 번역하는 것은 좀 문제가 있다고 봅니다.
영영사전에 보면
An abstraction is a general idea rather than one relating to a particular object, person, or situation.
라고 되어 있습니다.
프로그래밍에서 abstraction 이란 요악한 것이 아니라 한 묶음으로 만들면서 인자를 빼내는 것이거든요. 어떻게 보면 인수분해와 같은 거에요. 공통적인 부분을 빼내서 인자로 만들고 그 인자와 직접적으로 관련이 없는 나무지 부분을 함수 본체로 분리해 내는 거잖아요. 그래서 "분리"나 "빼냄"으로 번역하는 것이 더 좋은 번역이었다고 생각합니다. ("분리", "빼냄"은 abstraction의 번역으로 영한사전에도 나오는 실제 용례이기도 합니다.)
개정판을 낼 때 고려가 되었으면 하는군요.
@ 소리소문도 없이 번역판이 나오다니 저도 놀랐습니다. ^^
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
네 좋은 생각인 것 같습니다.
이 부분에 대해서는 저도 그분들의 의도를 명확하게 아는 것은 아니기 때문에, 확실하게 말씀드릴 수가 없네요.
어쨌든 임예진님의 생각에는 저도 고개가 끄덕여집니다.
이 내용이 전달되도록 노력해 보겠습니다.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
아닙니다 "요약"이 적절한 번역입니다
제가 순간적으로 착각을 해서 괜한 소리를 했으니 전달하지 말아 주세요 ㅠ.ㅜ
부끄러워서 원글을 지우려고 했으나 이미 댓글이 달려서 지워지지 않네요.
프로그래밍 언어에서 "요약"이 abstraction의 올바른 번역인 이유는 제가 원글에다 다른 댓글로 달아 놓았습니다.
그럼 감사합니다.
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
사실 이미 전달해 버렸답니다. :)
보낸 메일을 반송시킬 수는 없습죠.
그렇지만 아래쪽의 내용도 읽자마자 바로 다시 보내드렸습니다.
임예진님은 조금 부끄러우시겠지만, 전 아마도 혼이 날 것 같습니다. 벌써부터 혼날 걱정이...덜덜덜
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
이런 비하인드
이런 비하인드 스토리가 있었군요...
음... 취지를 알고 나니 좀 이해가 되긴 하네요~
취지는 참 좋은 것 같습니다. :-)
이웃 일본의 경우는 용어란 용어는 죄다 일본식으로 바꾸던데...
가끔식은 그런 모습이 부럽기도 합니다.
우리나라 사람들은(개발자뿐만아니라) 평상시에도
좀 심하다 싶을정도로 영어를 너무 즐겨 쓰는 것 같습니다.
---------------------------
Smashing Watermelons~!!
Whatever Nevermind~!!
Keedi Kim
----
use perl;
Keedi Kim
무엇이 좋은가?
일반인, 신입생이 쉽다고 느낀다면 기존의 프로그래머에게도 쉬울 수 있다는 말입니다. 단지 익숙하지 않아서 그냥 싫을지는 몰라도요.
SICP를 배우는 사람이 기존의 전문가(?)에게 뭔가를 물었을 때, 용어에 대해서 익숙치 않다는 이유만으로 비난만 하지 않는 다면 배우는 사람도 별 불만이 없을거라 생각합니다.
아... 물론 이렇게 된 번역이 일반인, 신입생에게 정말 쉽다면 말이지요. 이건 시간이 지나고 평가가 들려야 아는 것이기때문에 지금 단계에서 쉽다 안쉽다를 굳이 따지고 싶지는 않습니다. 쉽다고 생각해서 만들었는데 물론 아닐 수도 있습니다. 어쨌든, 초보자에게 쉬운 용어가 전문가들이 쓰기에도 당연히 쉽다는 생각이 틀리지는 않다고 생각되는데요. 저만의 생각인가요?
또한 SICP의 내용의 수준은 상당히 높습니다. 실제로 우리나라에서 왠만큼 공부하지 않았다면, 설령 열심히 공부했다고 하더라도 결코 쉬운 내용은 아닙니다. 괜히 SICP에 대응하는 HTDP같은 책이 나온게 아닙니다. 왠간한 미국사람들도 SICP는 MIT 다니는 공부벌레나 보는 책이라고 했을 정도니까요. 하지만 그렇다고 SICP의 대상이 전문가인건 분명 아닙니다.
실제로 MIT에서 그렇게 교육을 하고 있고(시간이 흘러 제가 알고있는 것고 달라지지 않았다면), 일반인을 대상으로하는 강좌도 많이 열려있습니다. 수준의 차이는 있지만 SICP나 HTDP가 추구하는 방향은 컴퓨터를 쓰는 모든 사람이 프로그래밍 언어를 쓸 줄 알아야 한다는 공통적인 기초에서 출발합니다. 왜 이런 주장을 하는지는 HTDP의 서문(http://www.htdp.org/2003-09-26/Book/curriculum-Z-H-2.html)에서 Why Everyone Should Learn to Program 항목을 참고하시기 바랍니다.
SICP가 명저로 대우받는 이유는 초보자를 대상으로 시작하지만, 그 안에 컴퓨터 공학 또는 과학, 심지어는 전자나 전기공학에서 배워야하는 중요한 지식 대부분이 다 스며들어가 있기 때문입니다. 특히 연습문제 하나하나가 대단한 수준의 고민까지 담고있습니다. 하지만 지나치게 많고 어려운 내용이기때문에 책을 만든 서스만 부부도 고민을 했는지, 일반적인 전문서적과는 다르게 아주 쉬운 영어로 풀이해서 적어놨습니다. 원문을 읽어보시면 내용이 결코 딱딱하지 않고, 단어의 수준도 그다지 높지 않다는 걸 알게됩니다. 하지만 아이러니하게도 쉽게 풀어놓은 영어를 그냥 번역해놓으면 도저히 알아볼 수가 없는 말이 됩니다. 수많은 비유가 나타나고, 앞의 말을 꾸미는 구나 절이 반복되기 때문에 보통의 전공서적 번역과는 천양지차가 날 정도로 어렵습니다. 굳이 따지자면 그냥 보통 번역하듯이 해버리면, 반지의 제왕을 번역했는데 원래의 느낌이 안나는 것처럼 보인다고 할까요? 소프트웨어쪽에서도 난다 긴다하는 분들이 몇년을 소모한 번역입니다.
번역서가 정말 마음에 안드신다면 (제발) 원문이라도 보시기 바랍니다. 정말 원서를 보시고 단 한줄이라도 더 좋은 번역을 할 수 있다고 생각하면, (제발) 그렇게 해주셔서 공유해 주시기 바랍니다. 번역에 참여했던 저나 김재우님이나 다른 분들이 그저 인지값이나 벌려고 이 책을 번역하기 시작했던 것이 아닙니다. 저희 스스로가 원서를 보면서 너무나도 답답했기에 벌린 일일뿐입니다. 그냥 마음에 안든다, 나는 그냥 싫다, 이러이러한 점이 싫다라는 의견은 저 또한 한 명의 개인으로 가져보았기에, 여러분들 또한 가질 수 있는 생각이라 인정합니다. 하지만 여기에 대해서 말이 오고간다면 저만의 바램이기는 하지만 좀 더 좋은 대안을 가지고 건설적인 방향으로 대화가 진행되었으면 합니다. 딱히 더 좋은 대안이 없다고 생각하신다면 한번 더 이해해 보거나 조금 색다른 방향이라도 제안을 해주시면, 나중에는 SICP를 온국민이 누구나 쉽게 볼 수 있는 책으로 만들어 볼 수 있는 날이 올지도 모른다는 생각이 드네요.
글을 적고보니 앞의 글이나 지금의 글도 제가 너무 흥분했다는 생각이 듭니다. 장황하게 적은것도, 그저 조금만 더 열린 생각으로 봐 주십사하는 바램이고, 자신을 위해서가 아니라 다른 대부분의 사람들을 위해서 어떻게 번역하는 것이 좋을까, 한번 더 생각해주셨으면 하는 바램인걸요. 이런 책이 그저 오해나 편견에 뭍혀버리지를 않기를 간절히 바랄 뿐입니다.
추가로, 개인적으로 잘 아는 사이지만 책 한권도 공짜로 받지 못했습니다. 저한테 인지값에서 1원도 떨어지지 않기때문에 장사를 하려고 이런 글을 적는 것도 아닙니다. 혹여나 오해하지 마시길 바랍니다.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
인용:프로그래밍을
한가지 예를 들어.. 딴 사람들은 전부 객체, 개체, Object, Entitiy등으로 애기하는데 혼자서 물체라고 해버리면 대화가 쉽지 않을듯 합니다.
번역자들은 기분나쁘시거나 섭섭해 할수있다봅니다만 많은 개발자들은 마치 예전의 비지오 한글화(ERD, UML부문)를 보는듯한 입장인듯 합니다.
솔직하고 냉정하게 애기해서 이 책을 이미 번역 잘하기로 잘알려진 다른 분들이 번역해서 출간했다면 좋았을껄 하는 생각이 듭니다.
본질은 이 책을 통해 얻고자 하는것이 이미 다 알고있고 널리 쓰이는 용어를 이렇게도 쓸수있다는걸 알려고 하는게 아니지 않습니까.
네
말씀드리지만 이 책의 본질은 초보자나 일반인이 조금이라도 더 쉽게 프로그래밍을 배우도록 하는데 있는 것이지(물론 그래서 전문가도 이야기 나누기가 쉬워지면 더 좋구요), 기존의 용어에 익숙한 분들의 입맛에 맞춰서 읽기 쉽게 만들려고 한 것이 아닙니다.
물론 익명님이 말씀하신 것이 틀렸다는 말은 아닙니다. 번역하는 분들 입장에서는 둘 중 하나를 선택해야 했을 때, 조금이라도 초보자와 일반인을 위하자는 쪽을 선택했을 뿐입니다. 애초에 SICP책 목적이 그러하기 때문입니다.
그렇습니다. 그것 때문에 기존의 전문가들이 불편해할 것이고, 그것 때문에 비난하실 겁니다. 저 또한 한때 그러했기때문에 이해합니다. 어쩌면 미래에는 몇몇 사람들이 시도했던 사건으로 잊혀실 수도 있겠지요. 그렇다해도 그런 걸 생각하고 만들었기때문에 그저 "선택"의 문제였을 뿐입니다.
만약에 영어를 보는데 충분한 실력이 있으시다면, 번역이 그렇게 마음이 들지 않는다면 영어원서를 보는게 좋을지도 모릅니다. 다만 번역서를 읽으실 때 자신이 아니라 초보자나 일반인의 입장에서 조금 더 생각해주셨으면 하는 바램이네요.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
짜장면 VS 자장면
저는 짜장면주의자(?)로서 아쉽군요.
사람들이 짜장면이라고 하면 짜장면이라는 걸 받아들여야지
온국민이 자장면이라고 하는 그날까지 캠페인은 할지언정 짜장면이라고 쓰지는 않겠다.
라는 자세가 아쉽습니다.
재밌는 말이네요
우리나라 사람들 전체로 보자면 짜장면을 많이 쓰고 있고, 자장면을 적게 쓰고 있습니다.
그래서 저도 짜장면이라 부릅니다. 굳이 다들 짜장면으로 알고 있는데 자장면이라 부를 이유가 없다고 생각합니다.
프로그래밍 언어를 배우는 범위를 번역자분들은 우리나라 사람들 전체로 잡은 겁니다. 일부에 불과한 기존의 프로그래머가 아니라요. 그래서 일반인들이 더 쉬운 용어를 쓰려고 노력한겁니다.
약간 억지스러운가요? 반대로 프로그래머들에게 그 범위를 한정한다면 님의 말씀이 틀리지 않습니다.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
semmal님, 취지는
semmal님, 취지는 이해하겠습니다만.. 아무리 좋게보려해도 용어의 선택이 억지스런 면이 있습니다.
소설이 아닌 전문서적에서까지.. 이런 애긴 접어두고요.
Unix Network Programming처럼 번역서를 먼저 사고 원서를 사게되는 경우는 앞으로도 없었으면 합니다.
솔직히 지금 생각해도 화가 다 납디다.
재미난 것은 이책의
재미난 것은 이책의 번역에 관심이 있는 사람들은 일반인이 아니고 유경험자들입니다.
대체 일반인들이 이 책을 얼마나 사서 읽어줄지 의문이군요.
그리고 의도한 바와 같이 성공적으로 일반인이 이책을 통해 처음으로 프로그래밍을 배우게 되었다고 했을때
그 일반인은 다음책을 대체 무엇으로 선택해야 할까요?
유경험자들이 이런류의 번역서를 보고 느끼는 좌절을
그 일반인은 아마 다음책을 선택하며 느끼게 되겠군요.
다시 한번
다시 한번 강조합니다만, 이 책은 프로그래밍을 처음 배우는 공대생 신입생 등을 가르치기 위해 만들어진 교재입니다. 따라서 번역도 일반인들(프로그래밍은 잘 모르지만 좀 똘똘한 고등학생 정도)을 최대한 배려해서 하는 것이 원 저자의 의도와도 일치합니다.
이 책이 원래 의도가 프로그램 좀 했다고 편견에 찌든 사람들을 위한 것이 아니라, 애들이 처음부터 편견에서 벗어나서 프로그래밍을 여러 각도에서 바라볼 수 있도록 시작부터 제대로 가르치자는 의도로 쓰여진 책이거든요 :-)
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
글쎄요
Lisp을 써보신 적있으신가요? 또는 Smalltalk를 써보신 적 있으신가요? 둘다 까마득한 과거에 만들어져서 아직까지 스스로 살아남거나 또는 다른 언어에 모태가 되어서 내려온 언어죠. 제가 맨처음에 C를 먼저 접하고 근 10년이 지나도록 저 두가지 언어를 한번도 써보지 않았다는게, 나중이 되어서는 너무나도 (절망에 가까울 정도로) 아쉬웠습니다.
C에서 C++/Java로 옮겨가면서 OOP를 이해하려고 발버둥친 몇년의 기간은, 사실 Smalltalk를 단 몇 개월이라도 써봤다면 없었던 일이었을 겝니다. 또한 (프로그래밍 언어 수준의) 설계가 뭐니 추상이 뭐니 이해하려고 발버둥친 몇년의 기간도 Lisp을 몇 개월이라도 써봤다면 없었던 일이 되었을텐데요. SICP 또한 그렇습니다.
SICP를 진정으로 다 보고 이해를 했다면, 그 사람은 어디에 가도 어떤 언어로든 프로그래밍을 할 수 있을거라 자신합니다. 나름대로 잘난 맛에 살고 자만심에 가득차 있는 저인데도, SICP에 있는 연습문제도 제대로 풀지 못하는 경우가 허다합니다.
이미 다른 언어를 배웠다면 또다른 언어의 문법 배우는데 몇일, 길어도 몇주면 되지 않나요?
어쩌면 위의 분은 지금 너무나도 실력이 좋으시고, 예전에 이미 그런 좌절을 겪으시고 그런 말씀을 하시는 건지는 모르겠습니다.
스스로 프로그래밍 고수다라고 말할 수 없는 저의 입장에서 생각이긴 하지만, SICP를 봤다고 좌절을 느끼리라 생각되지는 않습니다. 나중에 엄청난 도움이 되면 도움이 될지언정 말이죠.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
이런 번역에 대해
이런 번역에 대해 희망독자층이 전문 프로그래머가 아니고
프로그래밍에 대한 경험이 없는 사람들이기 때문에 용어 선택이 적절하다라는 의견이 있습니다만
번역자들의 사이트를 방문해 본 결과 그런 느낌은 들지 않더군요.
번역하신분 블로그 제목은 "셈말과 셈틀"이고
제목 밑에 "우리말 살려쓰기, 하나"라는 글을 인용하고 있고...
감수하신분 사이트에 올려진 프로그래밍언어 강의노트에는 "염려"라며 이렇게 적혀있더군요.
"그리고, 모국어로 강의한 내용입니다. 물론 전문 용어는 항상 영어를 italic글꼴로 병기합니다."
라는 말과 함께 라틴어와 프랑스어에 관해 데카르트를 인용하고 있군요.
즉, 전문프로그래머들 보라고 쓴 글이 아니라서 그렇다 라는 반론보다는
번역자의 개인적인 사상이 담긴 번역이라고 보는 것이 적절할 듯 싶군요.
abstarction을 "요약"이라 한 것은 참으로 올바른 번역입니다!!!
곰곰히 생각해 보면서 이광근 교수님의 전공분야를 살펴 보니, abstraction을 abstract로 번역한 것은 깊이 있는 프로그래밍 언어 전문가의 내공에서 나온 적절한 해석입니다. 제 짐작으로는 아마 초벌 번역에서는 abstraction을 "추상"이라고 했다가 이광근 교수님이나 혹은 다른 프로그래밍 언어 연구자들의 조언에 따라 "요약"이라는 더 올바른 번역으로 개선했다고 봅니다.
생각해 보니 이광근 교수님의 전문 분야가 abstract interpretation입니다. 여기서 abstract interpretation은 말 그대로 "요약 해석"이죠. 예를 들면 {...,-2,-1,0,1,2,3,...} 와 같은 정수를 {음수,0,양수}로 요약한다든지 {짝수,홀수}로 요약한다든지 해서 프로그램 결과의 어림값을 예상해 보는 이런 것을 "요약 해석"(abstract interpretation)이라고 합니다. 요약 해석은 model checking 등의 프로그래밍 분석 분야에 응용되고 있습니다.
다음과 같은 일련의 식을 생각해 봅시다.
{...,-1+1,-2+1,0+1,1+1,2+1,3+1,4+1,5+1,(1-3)+1,e+1,pi+1,(pi/2)+1,...}
자 위 식들을 어떻게 요약할 수 있을까요?
예, 그렇습니다. 바로 다음과 같이 조건제시법으로 요약해서 똑같은 집합을 나타낼 수 있습니다.
{ e' | (\ x . x + 1) e --beta_n--> e' where e is any expression }
(위에서 \ 는 람다를, --beta_n--> 은 1 step normal order bet reduction 을 뜻함)
\ x. x + 1 이라는 람다 식은 어떤 임의의 식을 주면 그 임의의 식에 더하기 1을 하는 형태의 식을 만들어 낼 수 있는 일종의 요약된 표현이죠.
논리학에서 람다 셈법(lambda calculus)이 나온 맥락을 생각해 보면 위와 같이 식을 요약할 수 있기 때문에 람다로 함수를 만드는 것을 abstract(요약)한다는 의미에서 abstraction이라고 불렀라고 생각합니다. 보다 정확한 것은 수리논리학이나 현대논리학 혹은 프로그래밍 언어 기초 분야를 연구하시는 전문가에게 자문을 해 보아야 하겠으나, 제 짧은 지식과 기억으로도 람다 식이 여러 식을 요약하는 데 쓰인다는 것을 기억해 낼 수 있었씁니다. 전산학과의 프로그래밍 언어 과목이나 수학과 혹은 철학과의 현대논리학 등의 과목에서 람다 셈법에 대해 공부해 보신 분들이라면 위의 예를 보시고 abstraction을 요약이라고 해석한 것은 참으로 올바른 해석이라고 무릎을 탁 치시리라 생각합니다.
제가 역자들의 깊은 뜻을 이해하지 못하고, 순간적으로 abstract와 abstraction은 다르다고 한 말에 귀가 얇아저서, 깊이 있는 번역을 문제가 있다고 짧은 생각으로 함부로 판단한 것 죄송합니다. semmal 님께서는 아래에 요약이 번역이 이상하다고 제가 맞장구친 것은 잊어버리시고 이광근 교수님과 김재우 교수님께 정말로 좋은 단어를 선택했다고 전해 드리기 바랍니다.
@ 그럼 여러분들께서도 프로그래밍 언어 연구자의 깊이 있는 시각에서 나온 번역을 단지 영한사전 번역에 나오지 않는다는 이유로 잘못된 것이라 저처럼 넘겨짚는 우를 더 이상 범하는 분이 없기를 바랍니다. 무식하면 용감하다, 서울에 안 가 본 사람이 서울을 제일 잘 안다고 큰소리친다 뭐 이런 옛말이 떠오르는군요 ㅠ.ㅜ
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
다 좋은데
다 좋은데 말이죠...
"무식하면 용감하다, 서울에 안 가 본 사람이 서울을 제일 잘 안다고 큰소리친다 뭐 이런 옛말이 떠오르는군요 ㅠ.ㅜ"
같은 말버릇은 언제 고치실건가요?
예진아씨님 의견에 반대되는 의견을 가지고 있으면 무식한 사람되나 보군요. 조심해야 겠습니다.
Lisp이야 emacs에도 있는거고 smalltalk야 squeak같은거 가지고 놀아봤습니다.
그런 유치한 질문들에 대응을 안하는것은 본 주제와 전혀 상관없기 때문이지요. :)
그렇군요.
생각해보니 제가 lisp이나 smalltalk에 대해 적은 글이 주제와 전혀 상관없는 내용이네요.
아마도 SICP의 가치에 대해서는 아시고 계신 상태에서, 번역에 대해서 말씀하시는 건데 제가 괜한 오해를 했나봅니다.
그렇지만 번역이 이상하다고 절망에 빠지지는 않을 것 같습니다. 정말 안좋은 번역이라면 그 전에 자연스럽게 버려질테니까요.
반대로, 좋은 번역이라서 SICP의 내용을 잘 습득할 수 있다면 생소한 용어를 쓰면서 생기는 괴리감을 고려하더라도, 손해보는 일은 아니라 생각합니다. SICP는 그정도의 가치는 있는 책이니까요.
그리고 익명님도 기분 나쁜 글을 봤다고, 글을 흥분해서 적기보다는 좋게좋게 말할 수 있는거잖아요. 굳이 글을 보는 여러 사람의 마음을 불편하게 할 이유는 없지 않을까요? 제 성격이 많이 유치하기는 하기 때문에 익명님의 말에 기분나쁘지는 않습니다만 조금쯤은 슬프네요. :(
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
무슨 오해가
무슨 오해가 있으신가본데 저는 제 자신이 순간적으로 착각을 하며 잘 알지도 못하고 곰곰해 생각해 보지도 않고서 abstraction이 잘못된 표현이라고 역자들에게 알려 달라고 semmal 님께 아는 체 하며 말씀드렸던 제 자신의 과오를 스스로 탓하면서 제 자신을 무식해서 용감하고 서울에 가 보지도 않고 큰소리치는 사람처럼, 고민을 많이 해 본 역자들의 올바른 해석을 잘못되었다고 한 제 자신의 실수에 대해서 표현하며 자기반성의 뜻으로 쓴 것입니다.
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
오해였군요.
"그럼 여러분들께서도 프로그래밍 언어 연구자의 깊이 있는 시각에서 나온 번역을 단지 영한사전 번역에 나오지 않는다는 이유로 잘못된 것이라 저처럼 넘겨짚는 우를 더 이상 범하는 분이 없기를 바랍니다."
에서 번역을 가지고 얘기하는 것은 우를 범하는 것이라고 한 것도 해명해 주세요. :)
써 있는 그대로
써 있는 그대로 네이버 영한사전 한번 훑어 보고 어라 abstraction은 "추상", "분리", "빼냄"이라고만 영한사전에 나와 있고 "요약"이라는 건 없네. 프로그래밍 언어 교수들이라더니 이런 초보적인 실수를 하다니 ... 이런 식으로 넘겨짚는 우를 범해서는 안된다는 것입니다. 이제 더 이상의 오해가 없었으면 합니다 :-)
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
'object는 object지 왜
'object는 object지 왜 객체인지 물체인지를 따져야 하나?'
이런 생각을 하다가 문득 제가
원서로 이해하고 원어로 대화하는게 제일 좋다고 생각하는
편견을 가지고 있다는걸 느꼈습니다.
저조차도 신입생때 전공 입문을 한글로 배웠으면서
지금 좀 배웠다고 원어로만 생각했네요..
실생활에서 객체라는 말을 쓸때가 있나 생각해봅니다.
우리는 implementation을 구현이라고 생각하는데
원래는 실행/완성 이라는 말이 더 맞지요.
공대나 이과대에서는 아직도 예전 일본식 한자로 된 표현이 많습니다.
물론 너무 오래되서 거의 공학용어처럼 되서
적응이 안되고 혼돈되지만
이런 잘못된 표현들이 바로잡아지면 장기적으로는 더 좋겠지요.
application program이 응용 프로그램일까요 이용 프로그램이 맞을까요?
사용자가 이용하는 프로그램이니까 이용프로그램이 맞는것 같은데
응용 프로그램이라고 말을 해야 어플리케이션이라고 연상이 되네요.
응용이라면 뭔가를 활용해서 다른 일을 한다는 건데
응용 프로그램이라면 오히려 개발 툴을 활용해서 프로그램을 만드니까 헷갈리네요.
응용 프로그램이 사용자가 응용해서 자기 실생활에 활용한다는 것도 되니까 맞기도 한것 같구요.
지금의 컴퓨터 용어에 대해 논란이 많으니
이런 토론도 생기는것 같습니다.
장기적으로 많은 분들이 계속 노력하면 정립이 되겠지요.
----
세상을 바꾸는 것은 단 한 사람. 오직 하나님의 사람뿐이다.
인용:application
아마도 application program 은 OS의 기능을 응용해서 만든 프로그램 뭐 그런 의미가 아닐까요? 또, 사용자가 사용하는 프로그램이니까 "사용프로그램" 혹은 "사용자 프로그램" 이라고 부를 수도 있죠.
그냥 OS 관점에서 보면 시스템 자원에 마음대로 접근할 특권이 없는 user program (non-OS, user process)과 시스템 자원에 마음대로 접근할 수 있는 특권이 있는 system program (OS, privileged process) 그냥 이렇게 두 개로 나누면 될텐데 말이죠.
그러면 그냥 사용자 프로그램과 시스템 프로그램 두 개로만 나눠서 생각하면 되잖아요.
윈도우즈 제어판에도 보면 사용자 프로세스, 시스템 프로세스 보기 뭐 이런 식으로 되어 있기도 하고요.
물론 프로그램 자체가 여러 프로세스의 모임으로 이루어져 있을 수도 있고, OS를 플랫폼으로 생가하지 않고 웹을 플랫폼으로 생각한다면 서버에서 도는 cgi 프로그램이과 클라이언트에서 도는 클라이언트 스크립트나 플러그인이 user program 의 역할을 하고 웹서버와 웹브라우저가 system program 의 역할을 하는 등 플랫폼에 따라서 조금씩 의미가 다를 수도 있겠죠.
임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin
application program의
application program의 개념은 생각보다 간단합니다. API를 이용해서 만든 프로그램은 application program이라 통칭할 수 있습니다.
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂