06월 17일 리뷰 - 리뷰자 김종욱
유닉스 리눅스 명령어 사전
에릭 프리먼, 엘리자베스 프리먼, 케이시 시에라, 버트 베이츠 지음
서환수 역
거의 모든 대학에서 '디자인 패턴' 학문을 가르칠 때에 사용한다는 교재라고 칭해도 될 Head First 시리즈의 'Design Patterns'이 이번 리뷰의 메인 주제이다. 해당 도서는 다양한 Design Pattern을 다양한 그림과 재미난 설명을 통해 학습자들에게 설명해주고 있다. 무엇보다 이 도서가 마음에 드는 이유는 독자 스스로가 소스코드를 직접 작성하여 학습할 수 있도록 충분히 배려했다는 점이다. 그렇기에 이 도서가 'Design Patterns' 계에서 입문 도서로 유명세를 떨치는 것이 아닐까 조심스레 유추해본다.
책의 리뷰에 앞서 어떤이가 읽으면 좋을지에 관한 지극히 개인적인 생각을 적어보겠다.
【어떤 독자를 위한 책인가】
'Head First Design Patterns'는 컴퓨터 프로그래밍을 어느정도 해보신 중급자 이상인 분들에게 권한다. 왜냐하면 디자인 패턴은 알고리즘 이상의 추상화 과정을 한 것으로 막 프로그래밍 계에 입문한 입문자가 디자인 패턴을 먼저 학습한다는 것은 학습의 순서가 바뀐 것이라 할 수 있기 때문이다. 그러다면 왜 블로거는 학습 순서가 바뀌었다고 언급하는지에 대해서 궁금해 하실 수 있다. 이유는 다음과 같다.
1. 입문자의 경우 알고리즘, 데이터 구조 등의 기초 지식에 대한 전반적인 학습이 필요하다. 그런데 이보다 상위 추상화 개념인 디자인 패턴은 이러한 입문자의 학습 과정에 반드시 필요한 창의성을 결여 시킬 수 있다. 즉 생각의 폭을 감퇴시킬 수 있다.
2. 무엇보다 디자인 패턴은 하나의 정규화된 답이 아니다. 즉 여러 사람들이 실무에서 경험하다 보니 이러한 것들을 체계화하면 훨신더 간편하겠구나 라는 생각에서 출발한 학문이다. 따라서 이러한 실무 경험이 미흡한 입문자들의 경우 위의 디자인 패턴의 강력함을 확실히 깨닸기에는 한계가 있다.
따라서 본 블로거가 입문자분들께 권장하는 학습 트랙은 다음과 같다.
컴퓨터 구조론 -> 자료구조 -> 알고리즘 -> 실전 알고리즘 (알고스팟 등) -> 소프트웨어 개발론 -> 디자인 패턴
정도가 될 듯 하다.
【책의 구성】 'Head First Design Patterns' 책의 구성은 어떠한가.
해당 도서는 정말로 스텝 바이 스텝으로 진행하는 책이다. 즉 전 단계를 성공적으로 학습했다면 당연히 다음 장에서 보다 발전된 내용을 학습할 수 있게 구성되어 있다는 것이다. 가령 2장 옵져버 패턴의 경우 처음 입문 부분에서 옵져버 패턴이 어디에 쓰이는지 그리고 어떤 애플리케이션을 디자인하고 싶은지 등을 독자에게 물어보고 함께 생각해보게 한다. 그 이후 옵저버 패턴을 정의하고 해당 패턴을 구현하면서 단점과 이를 보완하는 방법 등에 대해서 자세히 설명한다. 물론 해당 장이 끝날 때에는 연습문제와 함께 독자가 좀더 사고력을 발전시킬 수 있도록 다양한 생각해볼 거리들을 제공하고 있다.
옵져버 패턴이 궁금해 하실 분들이 계실 것 같아서 아래에 해당 패턴에 대한 소개 자료를 함께 올린다.
Head First Design Patterns 리뷰를 마치며
- Head First Design Patterns에 있는 패턴들은 정말 실무에 많이 응용될 수 있는 아주 실용적인 패턴들이다. 가령 프록시 패턴이나, 스테이트 패턴, 싱글턴 패턴 등은 본 블로거의 취미생활인 게임 프로그래밍에 정말로 자주 사용되는 패턴들이며, 무엇보다 스테이트 패턴과 싱글턴 패턴은 AI 게임을 디자인하는데에 없어서는 안될 필수 디자인 패턴이라고 생각된다.
이처럼 디자인 패턴은 프로그래머가 프로그래밍을 함에 있어서 보다 효율적이고 획기적인 해결책을 제공해주는 훌륭한 학문이다. 물론 위의 Head First Design Patterns 책에서 설명한 내용들 외에도 수많은 패턴이 존재하지만, 디자인 패턴의 기초를 다지고 싶은 중급자 이상의 개발자가 계신다면 위의 도서로 Design Pattern 을 입문해보심이 어떻게 생각해 본다.
하단의 URL에서 위의 도서와 관련된 부록 자료들을 제공하고 있으니 본 도서를 학습하시는 분들은 꼭 아래의 파일을 함께 다운로드하여 학습하실 것을 권한다.
>>> http://www.hanbit.co.kr/lib/examFileDown.php?hed_idx=1183
【Head First Design Patterns를 읽으며…….】
한창 프로그래밍에 입문한지 6년차(한참 옛날일이다.) 정도 되었을 때에 든 생각이 바로 프로그래밍에도 패턴이 존재한다는 것이었다. 즉 우리가 매일 만들고 있는 프로그램을 구성하는 소스코드의 70% 이상은 이미 누군가 만들어 뒀거나 훨씬더 좋은 방법으로 구현된 소스코드가 세상 어딘가에 존재하는 다는 것이었다.(물론 지극히 블로거의 개인적인 생각이다.) 하지만 그럼에도 우리가 이러한 소스코드를 왜 이용하지 못하고 있는 것인지에 대해 곰곰히 생각해보니, 어떻게 해야 이러한 패턴 코드를 다른 사람들로 부터 재공 받을지, 그리고 어떻게 사용할지를 알고 있지 못했다.
하지만 신기하게도 이 생각의 솔루션은 근처에 있었다. 바로 디자인 패턴 책과 같은 다양한 패턴 책들이 출간되기 시작한 것이었다. 이는 나에게는 혁명과도 같은 일이었고, 소프트웨어 개발의 질적 향상에 큰 진전을 가져왔다.
따라서 본 블로거는 독자분들이 프로그래밍을 직접 경험하는 것도 중요하지만, 다양한 프로그래밍 디자인 패턴 책과, 다른 사람들의 소스코드를 분석하고 재구성해보면서 훨씬더 훌륭한 프로그래머가 되길 소망해본다.
【점수…….】
구성 : ★★★★★ 내용:★★★★★ 디자인: ★★★★★ 전문성 : ★★★★☆
#본 리뷰는 리뷰자 김종욱의 저작권에 귀속되므로 참고시 참고 URL과 명시를 저작자에게 알려주시길 바랍니다.
#본 리뷰의 점수 및 평가 내용은 김종욱 리뷰자의 한정된 것이므로 확정된 답이 안임을 명시합니다.
#학습과 관련된 질문과 문제에 대한 질문은 일절 받지 않습니다. 스스로 찾아서 학습하는 것 그것이야 말로 진정한 학습자입니다.
###### 감사합니다 ######