Search Results for '객체지향'

2 POSTS

  1. 2009/04/03 OOP와 Messaging (4)
  2. 2008/07/09 패턴 그리고 객체지향적 코딩의 법칙 (2)

OOP와 Messaging

2009/04/03 09:47
Alan Kay

OOP의 아버지, Alan Kay

아는-_-형에게 낚여서, GPG Study의 OOP revisited라는 쓰레드를 읽게 되었다. 이 쓰레드는 방향이 어느정도 잡힌 상태로 정리되어 있는데, 머릿 속에는 의문점이 조금 남아있어서 링크를 타고 갔더니 조금은 정리가 되는 듯 하다.

일반적으로, 대부분의 사람들은 OOP의 개념이라면서 객체, 정보은닉, 캡슐화, 상속, 다형성 등을 이야기하는데, OOP의 창시자, Smalltalk의 구현자인 Alan Kay는 중요한 개념이 Messaging이라고 말한다. 1997년의 OOPSLA가 끝난 후에, 어느 메일링에서는 “I'm sorry that I long ago coined the term objects for this topic because it gets many people to focus on the lesser idea. The big idea is messaging”이라고까지 언급했다.

대다수의 사람들에겐 C++, Java 정도가 그들이 생각하는 OOP의 한계이기 때문에, 많은 논란이 생기는듯 하다. C++, Java도 Messaging의 많은 부분을 구현하고 있긴 하지만, Alan Kay 할아버지가 1998년에 언급했던 표현으로는, 자기가 알고 있는 언어들 중에는 Messaging이 정말 제대로 되어있는 언어는 Smalltalk와 Lisp(CLOS를 말하는듯?)밖에 없다고 했다. 그의 생각을 엿볼 수 있는 링크를 두개 소개한다.

요즘 읽게되는 대부분의 글들이, 자꾸만 Smalltalk를 심도있게 학습해보라고 유혹한다.

-- 이상한 나라의 종텐.


패턴 그리고 객체지향적 코딩의 법칙

이 책은 Design Patterns(디자인 패턴)에 대해서, 비교적 쉽게 풀어낸 얇은 책이다. 나고수와 나초보의 대화를 통해 디자인 패턴에 대해서 (궁극적으로는 객체지향에 대한) 설명을 하는데, 전개가 대체적으로 쉽고, 짧고, 괜찮다.

앞부분은 좀 뻔한 내용들도 있고, 디자인 패턴을 처음 학습하는 것은 아니라서 대충대충 읽었는데, 일단 장점을 꼽자면, 국내서라는 점. 쉽다는 점. 예제가 C++이라는 점. 얇다!!라는 것이고, 단점을 말하자면, 후반부에 패턴 설명이 좀 부실하고, 예제로 대충 때우고 넘어가는 부분이 있고, 예제가 C++이라는 점이다(예제가 C++이라는 것은 장점이자 단점이다.).

아, 불만 하나 더 있는데, 아무리 패턴 자체에 강박증을 느끼면 안된다 쳐도, 목차에 패턴 이름을 좀 넣어줬으면 좋겠다 싶었다. 싱글턴이나 팩토리, 이터레이터 패턴은 안보고 넘어가도 되었는데 말이지..

그리고, 의아한 부분도 있었는데, 권장하는 코딩 스타일의 prefix같은 부분은 좀 당황스러웠다. 멤버변수에 m_ 을 붙이는 방식은 헝가리안 표기법을 처음 만든 Microsoft에서도 이젠 권장하지 않는다. 이런 노테이션과 관련된 부분은 전적으로, 해당 프로젝트를 진행하는 팀의 권한과 책임이 아닐런지.

여튼, 종합하자면, 몇 가지 결핍된 부분에도 불구하고, 이 책은 디자인 패턴 입문서로. 그중에서도 좀 더 정확한 범위를 꼽자면, C++의 문법을 어느정도 알고 있지만, 객체지향과 아직 그리 친하지 않으며, Design Patterns을 접해본 적이 없는 사람에게 권장할만한 책이다. 게다가, 얇아서 금방 읽을 수 있다. 별은 3개 반. ★★★☆

객체지향 프로그래밍에서는 두 가지만 잘 하면 되요.
북치기! 박치기! 공통점 묶기조금씩 알기!

불만은 꽤나 써놨지만, 이 책은 좋은 책이다. 하지만.. Java의 문법을 전~혀 모르는게 아니라면, 이 책보다는 Head First Design Patterns : 스토리가 있는 패턴 학습법을 추천한다. 이건 별 다섯개거든. (웃음)

p.s. 얼마전에, 오랫동안 절판이던 GoF의 디자인패턴이 다시 나왔다. DP의 창시자 4명의 바이블이니 참고 하시길. 이번엔 절판되기 전에 사야되는데.. (통장에 돈이...)