티스토리 툴바

기가 막히게 어려운 단어를 지금껏 너무 과소평가했다는 생각이 든다.
오늘 애자일 자바 스터디를 하면서, 다소 산만하기도, 열띠기도 했던 토론을 통해 관심을 가지게 된 단어가 object이다.

관심의 불을 지핀 시점은 object가 객관으로 번역이 되고 있다는 사실을 인터넷으로 목격했을 때인거 같다. object가 객관이라니..

그리곤.. 이 새벽에 컴퓨터를 키고, 위키를 찾고 네이버 사전을 훑고 있다.

객관.. 손님의 관점.. 주관.. 나의 관점.. 인식론적인 발상이다.

객체, 주체.. 형이상학적 표현이다. 형이상학은 Metaphysica인데,, 자연학(physica) 뒤에(meta) 있는 것이란 뜻이다.

객관은 인식론적인 뜻을 지닌 것인 데 반하여 객체는 형이상학적인 뜻을 갖는다. 객관이 인식하는 주관에 대해서 나타나는 상대를 뜻하는 반면에 객체란 행위하는 주체에 대하여 나타나는 상대를 뜻한다.
[출처: 네이버 사전]

물론 OOP에서의 object는 별도의 정의를 가지고 있다. 하지만 같은 단어를 쓰는 이상, 아주 별개일수는 없다고 생각한다. 꼬리에 꼬리를 물게 한다. 이런데서 재미를 느낄 줄이야..

아뭏튼, 의도를 가지고 개념을 파악하게 되니, 조만간 마스터 할거 같은 기대는 든다.

위키에서는 오브젝트의 두가지 형태를 말하고 있다. 하나는 클래스, 하나는 인스턴스.. 이 표현도 멋지다. 클래스도 오브젝트의 일종... 그리고 클래스가 높낮이에 대한 의미도 내포하고 있다는 것도 주목할 만하다.(사실 이건 네이버 사전) 상위 클래스, 하위 클래스가 자연히 생각이 되고, 같은 높이의 클래스도 그림이 그려진다. Collaboration은 주로 같은 레벨의 오브젝트간에서 발생이 되겠지..

OOP가 아직은 창궐하는 시대에 살고 있다. 하지만, OOP를 체계적으로 연구해 본적은 없다. 여러 프로그래밍의 패러다임 중에 출세작으로 손꼽히는데 말이다.
OOP 위키페이지를 보고 있으면 Prototype-based programming으로 자연히 연결이 된다. 대표적인 언어가 자바스크립트이다.

오늘 토론 중에 자바스크립트는 상속이 없다는 말을 들었는데, 이부분도 확인해 볼 필요가 있을거 같다. "behaviour reuse (known as inheritance in class-based languages) is accomplished through a process of cloning existing objects which serve as prototypes." 이런 말이 있는데, 이 대목을 직관적으로 이해하게 될 때, 나름의 정리를 해 볼 요량이다.

출근의 압박을 느끼며, 다소 해갈을 했기 때문에 여기서 접는다.

관련링크

[인식론]

[Object-oriented programming]

[Prototype-based programming]

[Object (computer science)]

잠정결론

오브젝트에는 많은 뜻이 있다. 물론 그러한 뜻들이 아주 별개의 정의라고 보는것도 어폐가 있지만, 객관이라 번역이 되는 오브젝트를 연구하는 것은 너무 초점을 이탈한 경우인거 같다. 철학과를 전공해서 몇년에 걸쳐 생각해 봐야 할 일인듯.. 평생 과제일수도 있고..

OOP에서의 오브젝트는 위에 네번째 링크를 따라가서 정의하고 있는 것에 사고의 테두리를 쳐야 할거 같다. 도메인을 설정하지 않고, 모든 가치 안에서 해당 의미를 정의한다는 것은 불분명해질 소지가 있을거 같다. 물론 대가의 경지에 이르면 모든 가치가 연결되어 생각되어지긴 할거 같다는 막연한 느낌은 있다.

오브젝트를 떠올리게 된 것이 기능 위주의 패러다임에 대한 반성의 결과 정도라는 생각에서 출발하는게 정신건강에 좋을거 같다. 그게 맞고...
Posted by 김민재