'객체 지향적'은 잘못된 번역인가 세 번째

류광, 2006/12/18 21:38
이 세 번째 글에서는 "객체 지향적은 잘못된 번역인가"라는 질문이 구체적으로 무엇에 대한 질문인가를 정리함으로써, 여러 의견들이 사실은 '객체 지향'에 대한 문제제기가 아니라 'Object-oriented'라는 원래의 이름에 대한 문제제기일 수 있음을 말합니다. 그리고 object-oriented를 통상의 해석과는 반대인 '객체로부터 출발하여'라고 해석하는 새로운 관점에 대해 논의합니다.

두 번째 글을 쓴 이후로 많은 시간이 흘렀고 여러가지 의견들을 들었습니다. 추가적인 정리가 필요할 것 같습니다.

'객체 지향은 잘못된 번역인가'라는 질문이 어떤 것인지부터 정리를 좀 해야 하겠습니다. 출발점은

  1. (단순화해서)상속, 다형성, 캡슐화 같은 말들로 설명되는 'X'라는 프로그래밍 방법론 또는 '패러다임'이 있다.
  2. 이 X에 대한 표준적인 이름은 'Object-oriented' programming이다.
  3. 이 이름에 대해 국내에서 주로 통용되는 용어는 '객체 지향적' 프로그래밍이다.

'객체 지향은 잘못된 번역인가'라는 질문은 3번에 국한된 것입니다. 이는 다음으로 일반화할 수 있습니다.

  • a) 일반적인 영-한 번역 차원에서 2의 적절한 번역어들로는 어떤 것이 있는가?
  • b) a)에서 하나를 골랐다고 할 때 그것이 X를 제대로 설명하는 말인가?

결국 '객체 지향은 잘못된 번역인가'의 문제는 '객체 지향'이 a)에 나열된 것들 중 하나임과 동시에 b)도 만족하는가의 문제입니다.

그런데 많은 의견들은 b)에 초점을 두는 것 같습니다. 그러나 a)도 중요한 문제입니다. b)를 만족하더라도 a)를 만족하지 않으면 그것은 'X를 한국의 개발자들은 어떻게 불러야 하는가'의 문제일 뿐이니까요. 예를 들어 제 두 번째 글에 대한 의견 중에는 X는 object-oriented가 아니라 object-based이라는 주장에 해당하는 것들이 있었습니다.

사족 하나... 그냥 '오브젝트 오리엔티드'로 하자는 의견 역시, 그것이 적합한가의 여부를 떠나서 이 문제와는 무관합니다.그것은 object-oriented를 한글로 어떻게 표기하느냐의 문제일 뿐이니까요. (어떻게 발음하느냐의 문제로까지 이어지면 더복잡해 지고요.)

한편 전지훈님의 글 객체는 지향의 대상인가는 a)와 b)를 모두 고려한다는 점에서 고무적입니다. 그러나 조금 걸리는 부분이 있습니다.

우선 -oriented의 의미를 oriental의 어원과 직접 연결시키는 것은, -oriented의 원형인 동사 orient가 계속 발전해서, '동쪽'이나 '근원'이 제거된 그냥 '~를 향하다, 향하게 하다'라는 의미까지 가지게 되었다는 점에서 좀 무리라고 봅니다. 간단히 말하면, 현재의 영어에서 A-oriented 형태로 만들어진 복합어의 oriented가 A'로부터', A'를 출발점으로 하여'라는 의미를 가진다고 판단하기에는 다른 용례들(human-oriented, subject-oriented 등등)과 충돌이 너무 심합니다.

전지훈님의 글은 그러한 oriented 해석에 기초해서 X가 '객체를 원점 혹은 중심에 두고 어떤 목적을 향해 나아가는' 것이라는 정의로 이어지는데요. 만일 글의 순서와는 반대로, 그러한 정의를 기초로 해서 oriented를 그렇게 해석하신 것이라면 이는 2에 대한 문제제기, 즉 X를 'object-oriented' 대신 이를테면 'object-originated' 또는 'object-based'라고 부르자는 주장으로도 볼 수 있을 것입니다. 이 역시 의미있는 주장이므로(사실 프로그래머들에게 정말 중요한 것은 우리가 X를 어떻게 이해하고 어떻게 받아들일 것인가... 겠지요) 논의가 필요할 것입니다.

이에 대해서는 많은 이야기가 가능하겠지만 여기서는 그냥 "객체들이 저절로 만들어지지는 않으며, 시스템을 구성할 객체들을 식별하고, 그 구조와 관계을 설정하고 class 같은 언어적 구조를 통해서 객체들을 실제로 정의, 구현하는 작업도 X라는 패러다임에서 상당한 부분을 차지하고 있다." 정도만 이야기해도 될 것 같습니다. 즉 X에는 객체가 목적지점인 경우가 적어도 일부분은 존재한다는 것입니다. (전지훈님의 글과는 무관하지만 이에 대해서 한 가지 더 첨언하자면, 미리 정의된 객체들을 사용하는 코드를 미리 정의된 프레임웍 안에 채워넣는 방식으로 프로그램을 만드는 접근방식이 인기를 끌고 있긴 하지만 그것이 X의 전부는 아닐 것입니다. 극단적으로는, 누군가는그런 프레임웍을 그런 프레임웍 없이 전통적인 X만 가지고 처음부터 만들어야 할테니까요...)

단 이것은 위의 정의에 대한 직접적인 반론일 뿐이고, 제가 -oriented에 대해 가지고 있는 생각은 '객체는 목적지점인가 출발점인가'의 문제와는 조금 다릅니다. 객체를 향한다는 것이 곧 객체가 목적이라는 뜻이라고 생각하지는 않습니다. 그보다는, 객체를 향하고 있는 그 '무엇'에는 프로그램뿐만이 아니라 프로그래머와 프로그래머가 하는 일까지 포함된다는 관점에서 실세계와 코드를 바라보는 개발자의 '태도' 또는 작업의 '초점'에 대한 함의를 생각하고 있는데, 좀 더 정리가 되면 글을 올리겠습니다.

top
트랙백 0 : 의견 # + 10

Trackback Address :: http://occamsrazr.net/tt/trackback/109

comments powered by Disqus

(2013년 11월 10일자로 블로그에도 DISQUS 시스템을 도입했습니다. 기존 의견의 수정, 삭제, 댓글 추가는 여전히 가능합니다.)

  1. 쌀밥 2006/12/18 22:02 PERMALINKMODIFY/DELETE REPLY

    짧은 소견으로는, -oriented를 '기반으로 해서(based on)' 정도로 하면 어떤가 하는 생각을 해봅니다.

  2. 류광 2006/12/19 00:10 PERMALINKMODIFY/DELETE REPLY

    그것은 번역의 문제가 아니라 Object oriented의 새로운 이름을 짓는 문제라는 것이 전반부의 요지입니다... :) 그리고 object based는 object-oriented에 비하면 좀 제한적이라는 느낌입니다(제가 object-based에서 VB나 프레임웍을 연상하기 때문이겠지만요...)

  3. 이대엽 2006/12/31 13:37 PERMALINKMODIFY/DELETE REPLY

    어제 서점에 가서 잠깐 본 책에는 '개체 중심적'이란 말을 쓰더군요. '객체 지향적'이란 말은 객체로 나아간다는 뜻이라 의미상 맞지 않기 때문이라고 합니다. 잠깐 읽고 지나쳤는데, 그 책을 읽고 나니 류광님이 고민하셨던 것이 기억나더군요. :)

  4. 류광 2006/12/31 21:04 PERMALINKMODIFY/DELETE REPLY

    안녕하세요~ 위의 글에도 말했듯이 객체로 나아간다는 것이 아주 틀린 것은 아니라고 생각합니다. 그보다 더 중요한 것은 역시 위에서 잠깐 내비쳤듯이, 객체지향이라는 것이 단순히 객체를 목적지 또는 결과믈로 둔다는 것으로 해석할 필요는 없다는 것입니다... 예를 들어 북극성을 향해 배를 몬다고 해서 실제로 북극성에 가려 한다거나 배를 북극성으로 변화시키려는 것은 아니니까요...

  5. 이대엽 2006/12/31 23:56 PERMALINKMODIFY/DELETE REPLY

    북극성을 예로 들어주시다니, 센스있으십니다. ^^; 'object-oriented'와 같은 전문용어를 한글로 번역하기란 참으로 난해하다는 것을 새삼 깨닫게 되는군요. 아무튼 2007년 새해 복 많이 받으시길 바랍니다. :)

  6. 류광 2007/01/03 19:07 PERMALINKMODIFY/DELETE REPLY

    예 대엽님도 새해 복 많이 받으세요~

  7. gimmesilver 2007/01/17 10:16 PERMALINKMODIFY/DELETE REPLY

    비록 최종 목적은 객체들간의 관계를 맺어줌으로써 프로그램을 만드는 것이지만 그러기 위해선 먼저 기반이 되는 객체를 만들어나가야 한다는 점에서 객체를 지향하는 것은 맞는 용어라 생각합니다. 류광님도 아마 이런 의도로 말씀하신 것이겠죠?
    저 역시 '지향'이라는 용어에 큰 거부감이 없습니다. OOP 혹은 OOD를 할 때 우리는 먼저 요구 사항에서 객체와 그 객체간의 관계를 파악하려고 노력합니다. 그것을 '객체 중심적'으로 사고한다라고 할수도 있겠지만 관점을 약간 달리하면 그런 '객체 중심적' 사고 이면에는 객체를 목표로 나아가는 과정이 분명 존재하겠죠. '객체 지향'이란 이런 과정에 집중한 용어라 생각할 수 있겠습니다.

    p.s. 어찌보면 사소하게 넘길 수 있는 것인데도 오랜 기간 고민하시는 모습이 감동적입니다...앞으로도 멋진 번역 기대하겠습니다. ^^

  8. 류광 2007/01/18 18:34 PERMALINKMODIFY/DELETE REPLY

    의견 고맙습니다...

    왜 '지향'인가에 대한 제 생각은 제시하신 의견과 거의 일치하나 완전히 일치하지는 않습니다... 솔직히 말하면 아직 잘 정리가 안 되고 있습니다. 현재는 어쩌면 (요즘 유행하는 어법으로)'Object-driven developement'이라고 부르는 게 더 나을 수도 있는 뭔가를 생각하고 있는 것 같습니다.

    사실 이 논의는 객체 지향이 딱 맞는 용어라기보다는 그냥 "(당시에 제기되었던 논리만 가지고)틀렸다고 낙인찍기에는 부족하다"라는 생각으로 시작한 것이었는데 여기까지 왔네요. 그리고... 21세기에 OOP를 가지고 계속 이야기를 이어나가는 게 좀 촌스럽게^^ 보이지 않을까 하는 걱정도 있습니다만.. 뭐 여전히 OOP는 지배적인 패러다임인 것 같습니다.

    개인적으로는 번역 용어에 대한 논의에서 삼천포로 빠지기 쉬운 지점들을 몇가지 확인했다는 데 대해서 더 큰 의의를 두고 있습니다...

  9. 지원 2007/12/08 09:53 PERMALINKMODIFY/DELETE REPLY

    류광님 블로그 지나가던 길에 이 글을 보게 되어 남깁니다.
    개인적으론 '-위주의' 라는 의미는 어떨까 싶습니다.
    객체-위주의 ,, 어떻게 보면 객체 중심의 라는 뜻과 거의 흡사한 것도 같네요.
    저의 경우는 몇몇 경우에 번역을 하다 보면 -oriented가 지향이라기 보다는 그냥 ~위주의 (-driven과 뜻이 상당히 비슷해지는 ..)라고 해석 하는 게 어울릴 때가 많더라구요.

  10. 류광 2007/12/08 22:24 PERMALINKMODIFY/DELETE REPLY

    OO는 실패했다 까지는 아니겠지만 어쨌든 OO라는 말이 만들어졌을 때와는 많은 것이 달라진 것 같습니다....