2019년 7월 1일 월요일

[책리뷰] 객체지향의 사실과 오해 -조영호 저-



사실 2년 전에 서점에서 중간 정도 읽은 기억이 있다.

그 이후로 이 책에 언급한 몇가지 내용들이 계속 기억에 남았었는데,
시간이 지나고 그 내용들의 문장은 기억나지만 문맥이 흐릿해져 느긋하게 정독을 하고자 책을 구매했다.

이 책은 코드는 거의 없고 저자의 철학 혹은 저자가 공부해온 전문가들의 이론을 설명하는데 대부분을 사용한다.
UML도 찾기 어렵고 수도코드도 없다. 하지만 어떻게 개발을 해야 하는지 설명을 해주는 책이다.

이 책은 표지에서도 나오듯이 객체지향이랑 역할,책임,협력이라는 관점을 설명하는 것이 주 목적이다.
역할은 그 객체의 존재이유이며 책임은 그 역할이 어떤 책임들을 가지느냐로 정의된다고 나는 이해했다.
그리고 협력은 그 역할/책임들로 서로 어떻게 연결이 되느냐 하는 것이다.

이 책은 객체지향의 패러다임을 좀 더 이해하게 해주는 주옥같은 책이다.
사실 여러 언어를 사용해봤지만, 결국 문제는 사람이라는 걸 모르는 사람은 없을 것이다.
완벽한 제약을 걸지 않는 이상 우리는 결국 옳다고 생각하는 길보다는 쉬운 길을 택할 것이다.

블로그에 보면 하스켈을 공부하던 시기도 있었다.
하스켈을 공부하면서 느낀 점은 꽤나 많은 제약으로 인해 결국 하스켈이 원하는 개발방법을 따르려고 노력하지 않으면
개발을 할 수 없다는 것이다.

모나드를 이해하려고 노력하지 않으면 안되며, 함수지향적인 생각을 해야 한다.
스몰토크를 공부한 적은 없지만 아마 스몰토크도 그러할 것이다.

내가 개인적으로 좋아하는 리스프쪽 언어 또한 그 언어와 어울리는 개발방식이 있다. 그렇기에 그에 맞게 사람은 생각을 하게 된다.

하지만 우리가 생각하는 소위 많은 사람들이 사용하는 언어들(자바,파이썬,자바스크립트,C++,C#) 등은 사람들은 사로잡기 위해 모든 것들을 넣었다.
자바는 나의 작은 생각으로 객체지향언어라고 하기에는 정말 많은 부가기능들이 많다.
아마 모든 사람들의 니즈를 충족시키기 위해서 였을까?
그 깊은 뜻을 알지는 못한다. 아마 많은 사람들이 욕하면서도 쓰는 이유는 결국 어떻게든 개발을 하면 돌아가기 때문인 것 같다.

하지만 어떤 개발방식 예를 들어 객체지향/함수지향/TDD/RDD/DDD 등의 방식을 사용하려 한다면 자기자신을 제약하고 채찍질하여
통제해야 하지 않을까 싶은 생각이 이 책을 읽으면서 들었다. 물론 더더욱 공부해야 하는 것은 물론이고!

두고두고 읽으면서, 항상 기억을 하도록 해야겠다.

이 책은 위키북스의 조영호라는 분이 만든 책이다. 정말 감사하다는 말을 올려야 겠다. 새로운 책을 최근에 발행하셨다.
조만간 읽어야겠다.

댓글 없음:

댓글 쓰기