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

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

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

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

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

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

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

태그: 번역 프로그래밍

comments powered by Disqus

예전 댓글(읽기 전용)