객체지향의 사실과 오해

요즘 조영호 님의 “객체지향의 사실과 오해”라는 책을 보고 있는데, 아직 중간정도 밖에 보고 있지않지만 책 내용중 어떤 부분때문에 좀 당혹스러웠다. 
사실 이 책은 토비님이 조영호님과 인터뷰하는 동영상을 보고 “객체지향은 현실을 모방하는게 아니고 은유한 것이다”라는 내용에 호기심이 생겨 구매하여 읽게되었다. 
그동안 내가 직접 모델링을 하거나, 후배들에게 모델링에 대해서 교육을 할때도 현실 세계를 모방하려했고 또 그렇게 가르쳐왔던 터라 내가 그동안 잘못 알고 있었던가라는 생각에 책을 구입해서 자세히 읽어봐야겠다라는 생각이 들었다. 
일단 책을 읽으면서 든 생각은 책에서 얘기하는 내용이 너무 좋아 한번 감탄하고, 저자분의 뛰어난 식견과 지식의 깊이에 대해 다시 놀라고, 객체지향이라는 주제에 대서 본인의 사상적틀을 완성한것으로 보아 정말 대가임에 틀림없구나 하는 생각이 들었다. (사실 부끄럽지만 토비님 동영상을 보기전까지는 저자분에 대해서 잘 모르고 있었음)

일단 결론부터 얘기하자면 나는 여전히 객체를 모델링할때 “현실세계를 모방”할 것이고 후배들에게도 그렇게 하도록 조언할 것이다. 
책에서는 전화기는 스스로 통화버튼을 누를 수 없고, 계좌는 스스로 이체를 할 수 없으므로 객체로 표현된 전화기나 계좌는 현실세계를 모방한게 아니고 조금 참조해서 세로운 세계를 창조한 것이라고 얘기한다. 그런 면에서 볼때 현실세계를 표현하는 객체는 현실세계를 모방하는 것이 아니고 은유하는 것이라고 말한다. 
나는 이렇게 단정하는 것에는 문제가 있다고 생각한다. 

그 이유를 말하기 전에 먼저 저자께서 현실세계와 객체간의 관계를 표현하는데 사용된 두가지 개념인 “모방” 과 “은유”에 대해서 그 의미를 명확하게 할 필요가 있다. 
먼저, 나는 객체는 현실세계를 은유해서 표현한다는 의견에 동의할수가 없다. 
책에서도 얘기하고 있지만 은유는 “실제로 적용되지 않는 한 가지 개념을 이용해 다른 개념을 서술하는 대화의 한 형태”라고 정의할 수 있다. 예를 들어 “내 마음은 호수요”, “부장님은 화나면 완전 호랑이야”라고 얘기하는 것은 “마음과 호수”, “부장님과 호랑이”는 사실 아무 관계도 없지만 호수와 호랑이의 대표적 속성을 차용해서 내 마음과 부장님의 성격을 좀 더 이해하기 쉽게 표현하려고 한 것이다. 
소프트웨어를 만드는 우리가 쉽게 접하는 은유(메타포)로 표효하는 대표적인 것들이 있는데, 바로 socket, client, server, shell 등과 같은 것들이다. 이렇게 표현함으로 해서 그러한 것들이 무엇을 하는 것인지 구구절절 설명하지 않아도 적절한 은유덕분에 그 의미를 파악하는게 어렵지 않다. 
하지만 이것들이 현실세계의 소켓과 노예와 고객, 껍데기등을 객체로 표현한 것은 아니지 않은가?
객체는 오히려 현실세계의 모습에 상당히 많은 부분을 의존하고 있으면 어플리케이션(시스템)이라는 세계에서만 가능한 특별한 몇몇 능력을 더 부여받을 수 있는 것이라고 생각한다. 
여기에서 말하는 “현실세계에 많은 부분을 의존하고” 있는 것이 바로 현실세계를 모방하는 것이라고 나는 생각한다. 모방이라는 행위는 특정한 대상을 배끼거나 옮겨놓는 것을 말하는데, 그렇게 한다고 해서 모방한 것이나 피모방된 것이 반드시 동등(equal)한 관계에 있는 것은 아니라고 생각한다. 
다시 말하면, 모방하는 과정에서 원래의 대상을 특정할 수 있는 한계를 유지하는 한, 필요에 따라 일정부분은 가감이 될 수 있는 것이라고 본다. 따라서 객체를 통해 현실세계의 실상을 특정할 수 있다면 그것은 모방이라고 부르는게 더 적절한것 같다는 생각이다. 
우리가 찰흙으로 사람의 형상을 빚을 때, 사람보다 팔다리가 좀 이상하게 길어도, 머리가 유난히 커도 그 조형물이 인간을 은유한다고 하지 않고 모방해서 만들었다고 하는게 적절한 것처럼 객체도 그 객체가 표현하고자 하는 대상을 은유할게 아니라 모방하는 것이 그 객체의 책임과 역활을 명확하게 이해시킬 수 있으리라 생각한다. 
이러한 이유들로 나는 여전히 객체가 현실세계를 모방하도록 할 것이다. 

물론 어디까지나 나의 개인적인 견해이며, 이 견해가 이 책을 폄하하는 것이 아니라는 사실을 알아주었으면 한다. 이런 나의 개인적 의견에도 불구하고 이 “객체지향의 사실과 오해”라는 책은 내가 그 됨됨이를 논하기에는 너무 훌륭한 책이라는 사실에는 변함이 없다. 
기회가 된다면 저자분을 직접 만나뵙고 밚은 얘기를 나눌 수 있으면 좋겠다. 

혹시 이 글을 조영호님께서 보시게 된다면 “저는 책 때문에 조영호님 열렬한 팬이 됐습니다” 하고 얘기하고 싶습니다. ㅋㅋ