IT Paradigm/OOP

지향하다. (feat. Object-oriented Programming)

yeTi 2023. 10. 31. 08:41

안녕하세요. yeTi입니다.
오늘은 어제 XP 책걸이 모임에서 안영회 대표님 께서 지향하다 를 설명해주신게 인상깊어 기록으로 남기고자 합니다.

객체지향 (客體 指向, Object Oriented)

객체지향이 어려운 이유는 지향이라는 의미를 받아들이기 어렵기 때문이라고 생각합니다.

그런 의미에서 객체 지향의 한자를 찾아봤습니다.

客體 指向 (객체 지향) : 손 객, 몸 체, 가리킬 지, 향할 향 - 네이버 한자사전

글자의 조각으로는 이해가 되지 않습니다. 단어의 풀이를 보겠습니다.

客體 (객체) : 문장(文章) 내에서 동사(動詞)의 행위(行爲)가 미치는 대상(對象). - 네이버 한자사전

指向 (지향) : 지정(指定)해 그 쪽으로 향(向)하게 함. 또는 그 방향(方向). - 네이버 한자사전

그럴듯하지만 표현들이 와닿지는 않습니다. 영어 표현도 찾아보겠습니다.

Object : a thing that you can see or touch but that is not usually a living animal, plant, or person - Cambridge Dictionary

Oriented : showing the direction in which something is aimed - Cambridge Dictionary

한자와 영어의 풀이에서 공통적인 표현이 눈에 띕니다.

객체대상(對象) 혹은 thing 이고, 지향방향(方向) 혹은 direction 이라는 것입니다.

역시나 객체 지향이라는 것이 직역을 하면 대상을 방향으로 정한다 인데 외계말로 느껴집니다.

이해의 폭을 넓히기 위해 다른 단어를 찾아보겠습니다.

지향-점 (指向點) : 도달하고자 하는 목표로 지정한 점.

조금 더 쉬운 의미로 다가온 표현이라 이를 지향 혹은 Oriented 와 연결해보면, 도달하고자 하는 목표인데요. 그렇다면 이 추상적인 의미를 개발활동과 어떻게 연결할 수 있을까요?

OOP의 아버지 앨런 케이의 자료를 다시 읽어보겠습니다. OOP의 기원 (feat. 객체와 메시지)

눈에 띄는 문장에 몇개 보입니다.

define everything intensionally 의도적으로 정의한다.

it carries special ways of thinking about situations that in contrast with other knowledge and other ways of thinking critically boost our ability to understand our world. 다른 지식이나 다른 사고 방식과는 대조적으로 상황에 대한 특별한 사고 방식을 전달하여 세상을 이해하는 능력을 비판적으로 향상시킵니다.

마지막으로 어제 안영회 대표님께서 지향한다는 의미를 풀이해주신것을 상기해봅니다. (뉘양스의 기록)

지향한다는 의미는 실천하는 삶 속에서 스스로의 행동으로 배어나와야 느낄 수 있는 것입니다.

지향 (指向, Oriented)

앨런 케이The Early History Of Smalltalk 에서, 객체지향의 가치는 프로그래밍을 단순화하기 위해 코드 한줄한줄에 많은 의미를 담는 것이라고 말합니다.

그리고 그러기 위해서는 의미를 정확하고 풍부하게 표현할 수 있는 사고력이 필요하기 때문에 문해력이 중요하다고 말합니다.

즉, 앨런 케이의 지향은 의도적으로 정의한 세계를 만들어 함축적으로 표현하라는 의미입니다.

조영호님은 객체지향의 사실과 오해에서 흔히 프로그래머들이 객체지향을 어렵게 느끼는 이유가 클래스로 보기 때문이라고 말하는데, 이를 극복하기 위해서 자유롭게 정의하고 합당한 은유를 표현하라고 말씀하십니다.

안영회님은 주체적으로 객체라는 세계를 창조하는것이 중요한데 창조의 완성은 스스로의 고민이 담긴 코드에 있으니 지속적으로 뜻을 가지고 실천해야만 지향이라는 것을 느낄 수 있다고 말씀하십니다.

이렇듯 지향이란, 인간이 사물을 인식하는 사고 체계를 활용하는 것입니다. 지향하듯 잣대를 가지고 끊임없이 활용하는 것입니다.