옷벗은 황제 객체지향

Tags:

시작한김에 일단 제 밑천은 거덜냅니다. 더 글을 올리지는 않을 것입니다. (아는게 없는고로..) 누군가 최근에 반짝한(뒤로 어떻게되었는지는 저는 잘 모르는) X# 같은 데이터 지향적인 언어가 나와야한다는 논의가 비교적 최근에 있었고, 결국은 X#이 나왔는지 안나왔는지는 모르지만, MS는 충분히 광고를 했었는데.. 데이터 지향적 패러다임이 객체지향 진영에서 나온 얘기같던데.. (횡설수설이군요 -_-;) 그 얘기를 누군가 보충 설명으로 달아주시면 감사 ^^;

아래글은 pl/sql programming(orilly)의 일부입니다. pl/sql 에 객체지향적 특성이 추가되기 시작함에따라, 아마 저자는 그간 해오던 구조적 방식의 프로그래밍에서 객체지향을 볼 때 상당한 불만 또는 거부감이 있었나 봅니다. 어쨌든 이 사람은 구조적인 언어 하나로 큰 규모의 개발을 많이 한 전문가인 것은 사실..

————————-

옷벗은 황제 – 객체지향?

1. OOP는 광고와 달리 만능이 아니다.

2. 상속계층
– 실세상의 분할방식은 다수이다. 즉, OPTIMAL한 솔루션이 없다.
– 형의 진화는 쉬운일이 아니며, 더군다나 언제 어떻게 형이 진화할지 알지도 못하고 어떻게 설계를 하는가

3. 동작과 데이터를 모으면 항상 더 좋은가?
– 데이터는 잘 변하지 않으며 동작이 더 잘 변한다.
그런데도 모아두는 것이 좋은가? 잘 변하는 것과 잘 변하지 않는 것을 분리하는 것은 OOP의 목표중 하나가 아니었던가
– 데이터와 동작을 모아두는 객체를 강조하며서, 동시에 MVC구조를 통해 모델과 뷰와 컨트롤러를 분리하라는 이사람들이 옷을 입은 황제인가 아니면 벗고있는가? (이말은 논란의 소지가 있지만, 하여간 그대로 옮김)

4. 컴포넌트가 떠오른다
– 객체지향 패러다임이 지고 컴포넌트가 각광받고 있다. 컴포넌트란 인터페이스를 통해 통신하는 단위 유닛이다. 컴포넌트의 구성에 있어서 내부가 객체지향적 언어이든 구조적언어이든 상관이 없으나 객체지향 언어로 컴포넌트를 구성했다고 치자. 그렇다면 이건 완전한 모순이다. 왜냐하면 배포가능한 유닛은 컴포넌트이며, 객체는 배포가능한 유닛이 아니란 결론이 나온것이기 때문이다. 즉, 객체란 자신이 정의된 그 환경외에서 함부로 적용하고 배포할 수 있는 단위 유닛이 아니다.

5. 결과적으로 소프트웨어의 성공이란
– 전문적 개발자
– 좋은 절차와 좋은 개발 패러다임(XP든 RUP든 OOP든)으로 문제를 정의하고 해결
– 좋은 마케팅

6. ‘OOP로 짜야 좋은 S/W이다’ 는 항상 참은 아니다.

Comments

8 responses to “옷벗은 황제 객체지향”

  1. 민구 Avatar
    민구

    옮겨놓고 보니 XP, RUP와 함께 OOP를 병치시켜서 나열한건 당황스럽군요.. 이 사람이 개념을 잘못 아는건지 제가 잘못아는건지… -_-;

  2. 복연 Avatar
    복연

    말장난이잖아..
    1. 누가 ‘OOP는 만능이다’고 광고하지?
    2. 누가 ‘이것이 Optimal 술루션이다’고 주장하지?
    3. 누가 ‘동작과 데이터를 모으면 항상 더 좋다’고 말하지?
    4. 컴포넌트와 객체는 상호 모순 관계인가?
    5. 아니라고 하는 사람 있나? 보충할 수는 있지..
    6. 누가 감히 ‘항상’ 참이라고 할까나..

  3. 민구 Avatar
    민구

    어이 말장난이라고만 생각하지 말고.. 이것이 이 구조적 패러다임으로 오랫동안 코딩해온 사람의 현실 인식이란 것이다 이말이야. 네 입장에선 알면서 거짓말하는 걸로 보일지도 모르지만, 그게 아니라 정말로 저렇게 아는 것이라고..

    그리고 나도 고개를 끄덕였던 글이고.

    그러고보면, 저 글의 필자나 나역시 객체지향에 대해서 아직 모르는 상태인가보군. 어쨌든 주목을 받는건 지금으로선 객체지향이니 거기에 반발을 하는 사람들이 생길 수 밖에 없다고.. 유명세 치르는거라고 해야하나.

  4. 복연 Avatar
    복연

    알면서 거짓말하는 게 아니라(거짓말은 하나도 없잖아?) 당연한 얘기를 마치 남들이 모르는 새로운 걸 발견한 양 적어놨잖아.

    저게 그 사람이 오랫동안의 경험 끝에 느낀 현실 인식이라면, 객체지향을 맹신하고 추종했던 건 그 사람 본인이 아닐까? 난 처음부터 저런 한계점을 인식하고 객체지향을 접했는데.. 당연한 얘기잖아? 세상에 그런 만능 언어가 어디 있어!

    저건 객체지향뿐 아니라 그 어떤 패러다임이라도 다 가지고 있는 본질적인 한계점이야. 객체지향만의 문제가 아니란 말이지. 이런 본질적 한계를 깨닫지 못하고 객체지향이면 다 해결될 거라 믿었다면 좀 어리석었단 생각이 드는군.

    객체지향을 정말 맹신하는 사람들은 아직 풋내기들에 지나지 않아. 정말 객체지향을 어느 정도 이해하고 있는 사람이라면 그 본질적 한계 정도는 당연히 알아야겠지. 다른 분야도 마찬가지잖아? 장점만 알고 단점을 모른다면 그건 절대 제대로 아는 것이 아니지.

    고로 저런 비판글은 객체지향을 이해하지 못했던 사람들을 꾸짓는 글이 될 순 있어도 객체지향을 비판하는 글이 될 순 없어.

    OK?

    객체지향이 처음부터 ‘나는 만능이다’라 주장하다가 그게 아닌 걸로 밝혀졌다면 ‘옷벗은 황제 객체지향’이 될 수 있어. 하지만 원래부터 장단점이 있다 알려져 있었는데, 받아들이는 쪽에서 그런 건 신경 안쓰고 ‘객체지향은 만능이야’고 맹신한 격이잖아.

    왜 주장하지도 않은 걸 자기 혼자 지레짐작 오해해놓고 딴소리 하냐 이말이지.. 맹신이란 쓰잘데기 없는 짓을 한 자기 잘못이야.

  5. 복연 Avatar
    복연

    수긍이 가지 않는다면 너가 지향점이라 생각하는 functional language에 저 비난을 적용시켜봐.

    1. Functional Language는 만능인가?
    2. Functional 방식은 Optimal 솔루션인가?
    3. 무엇이든 Function으로 구분하면 ‘항상’ 더 좋은가?
    4. 컴포넌트가 떠오른다. functional 언어는 컴포넌트와 잘 매핑되나?
    5. 전문적 개발자, 좋은 절차와 좋은 개발 패러다임(XP든 RUP든 OOP든)으로 문제를 정의하고 해결, 좋은 마케팅이 없어도 functional language만 쓰면 성공적인 소프트웨어를 만들 수 있을까?
    6. ‘Functional로 짜야 좋은 S/W이다’ 는 항상 참인가?

    결국 똑같잖아?

  6. 민구 Avatar
    민구

    그렇게 말하면 또 그렇기도 하군.. 그러나 너무 뭉뚱그려서 말하는것 아냐?

    functional이 OOP보다는 옵티말이라고 내 생각을 길게 썼었어.. 그리고 변형될지는 몰라도 아마 옵티말로 남을거라고 생각한다. 블랙박스형태의 시스템이나, 우리가 사용하는 수학함수나. 이런 것들은 오랜기간을 살아남은 검증된 것들이지.

    그리고 컴포넌트에 대한 비난은, 재사용성이 조명받기 시작한게 OOP진영이기 때문이잖아. 그래서 함수형 언어한테 뭐라 그럴일이 아니지..

    컴포넌트 이야기에 대해선 com+ and battle for the middle tier를 시간이 난다면 읽어봤으면 하는군.. 로저 세션이 썼다.

    그리고 OOP 장단점은 아마 너를 비롯한 몇몇 잘하는 사람들에게나 알려졌지.. 전에 했던말 다시하자면, 객체지향때문에 ‘형 왜 우리는 상속 안해요??’ 라는 질문하는 친구들이 내 주위에 많이있다고.. 이건 정말 본질적인 문제라니까?? 인간이 보통 사고하는 방법과 다르게 사고해야되기 때문에 이런 질문들이 나오는 것들이라고…. 그런 질문하는 친구들에게, 글 읽어보고 생각해보라고, 그랬더니 무슨말인지 모르겠다더군.

    어쨌든 복연군은 OOP를 처음 대할때부터 그런점을 인지했다니.. -_- 정말인가? 내 경우는 C++을 처음 접한게 아마 중3때인가 그런거 같은데.. 어떻게 프로그램을 짜야하는지 약간이나마 알게되고 OOP의 한계나 이런것들을 인지하기 시작한건 얼마되지 않았는데…

    객체지향이 만능이 아니야라고 이야기하는 객체지향 설명 서적이 있나? 다 컴포넌트나 이런쪽에서 나오는 책에서나 얘기하지… 어쨌든 잘 하는 사람들은 글을 잘 정리해서 양질의 자료로 만들 필요가 있다고..

    비폰노이만 컴퓨터나오면 어찌될지 모른다고.. 확신하지 말자.

  7. 복연 Avatar
    복연

    객체지향이 만능이라고 얘기하는 서적은 하나라도 있나? 객체지향 외의 책들은 자신들이 만능이 아니라고 밝히고 책 쓰나?
    객체지향에만 한정해서 생각하지 말고 좀 더 넓게 적용해봐.

    객체지향이 만능이었다면 벌써 세상을 지배했겠지. 아니면 왜 그리 많은 언어들이 난무하고 아직도 계속 연구되고 있겠어? 정황만 봐도 벌써 만능이 아니란 건 명확한데..

    OOP의 장단점은 OOP를 제대로 아는 사람들이라면 누구나 다 알고 있지. 사실 단점도 모르면서 어떤 것을 안다고 얘기할 순 없으니깐.. 적어도 내 주변엔 아주 많은데.. 비율로 따지면 얼마 안되겠지만, 적어도 전 세계 수십만에서 수백만은 되지 않을까.. 모르겄다.. 암튼 OOP 맹신자들은 진짜 OOP를 모르는거야.

  8. 민구 Avatar
    민구

    그래… 그렇지..
    네 이야기가 하나같이 동의 못할 예기란 건 아니다.
    그냥 이런 저런 쪽으로 생각해보는거지…

Leave a Reply

Your email address will not be published. Required fields are marked *