Oct 102010
 

‘멀티스레드 프로그래밍에 능숙하다.’ 무엇을 의미할까? 스레드, 뮤텍스, 세마포어 등등 의미를 알고 조작할 수 있는 API 사용에 능숙한 것? 아니. 그건 분명히 아닐 것이다. 멀티스레딩으로 깨지지 않고 빠르게 돌아가는 디자인을 할 수 있는 능력이라 생각한다.

신나게 클록 속도를 올리다가 발열이 감당이 안 돼서 이제 멀티코어 시대로 넘어왔다. 이 사실은 이제 멀티스레드 프로그래밍 능력은 그냥 당연히 갖춰야 하는 기본 기술이 됐다는 걸 뜻한다. 공짜 점심이 끝나버린 거지. 위에서 말한 멀티스레드 디자인 능력이 부족한 것 같아 기본 서적을 찾던 중에 많이 추천해서 보게 됐다.

어떤 주제를 공부할 때, 큰 그림을 먼저 보고 필요에 따라 세부사항으로 내려가는 Top-down 방식으로 공부할 수도 있고 반대로 세부사항부터 튼튼히 쌓고 위로 올라가는 Bottom-up 방식으로 공부할 수도 있다. 이건 주제에 따라 혹은 개인 취향에 따라 결정된다. 내가 멀티스레드 프로그래밍을 다시 공부할 때 선택한 방법은 Top-down 방식. 큰 그림을 먼저 보고 싶었다. 수많은 프로그래머가 멀티스레드 프로그래밍 디자인에 같은 문제로 고생하고 고민했을 터, 당연히 패턴이 만들어지게 된다. 이 책은 이런 패턴 중에 기초 패턴들을 잘 설명했다.

초보자용으로 많이 추천하는 책인데, 읽고 나니 나도 추천하고 싶다. 내가 주로 쓰는 언어는 C++. Java를 전면에 내세워 책을 살 때 많이 망설였는데, Java에서만 쓸 수 있는 멀티스레드 디자인 패턴을 설명하는 것도 아니니 언어에 그리 얽매일 필요는 없다. 사실 책을 볼 수 있을 정도로 Java를 공부하는 건 필수적이다. 요즘 괜찮은 책들은 다 예제 코드로 Java를 사용한다. 물론 C++로도 책에 나온 예제를 같은 추상화 레벨로 프로그래밍할 수 있다. 우리에겐 boost::thread가 있다.

아꿈사에서 이 책 내용을 요약해서 발표를 했었다.

 

by-nc-sa
Sep 112010
 

책 제목 보고 이 책 안 사려고 했다. 책 제목이 마음에 안 든다. 아꿈사 스터디 책으로 선정돼서 어쩔 수 없이 사긴 했지만 그닥 내키진 않았다. 예전에 읽었던 ‘사랑하지 않으면 떠나라’와 비슷해 보였고 어디서 긁어모은 멋진 말들로 도배된 책에 질려 있었는데, 제목을 보니 딱 멋진 말을 모아놓은 책 같았기 때문이다. 하지만, 내 짬밥에 이런 생각을 하긴 이른가 보다.

견습과정을 걷고 있는 프로그래머에게 하고 싶은 조언을 ‘상황, 문제, 해결책, 실천 방안’으로 만든 패턴들을 모아 놓은 책인데, 내게 필요하고 명심해야 할 패턴들이 많았다.

‘지금 하는 일을 항상 더 좀 더 좋고 세련되고 빠르게 해결하는 방법이 있을 거라 생각하는 태도’를 견습 과정이라 정의한다. 그리고 이 태도는 숙련공이 돼서도 가져야 하는 마음가짐이라고 한다. 난 이 책을 읽고 오히려 숙련공인데, 자기를 견습생이라 생각하는 분들이 많아질까 봐 걱정이 되기도 한다. 너무 겸손해하지 마시고 좀 썰을 많이 풀어주세요. 굽신굽신.

한번 읽고 땡이 아니라 가까운 곳에 두고 마음을 다잡아야 할 때나 답답할 때, 다시 읽고 싶은 책이다.

Continue reading »

by-nc-sa
Sep 062010
 

테스트 코드도 계속 관리해야 하는 코드다. 릴리즈 빌드에 포함이 안 된다고 해서 악취가 진동하게 놔뒀다가는 하나만 고쳐도 엄청나게 많은 테스트 코드가 깨지는 등 감당을 못하게 된다. 좋자고 하는 건데, 테스트 코드가 오히려 병목이 될 수도 있다. ‘Invoice를 테스트하려니깐 Customer를 만들어야 하고 이걸 만들려니 Address가 필요하고 또 이걸 만들려니 City가 필요하다. 게다가 지금 테스트하고 싶은 코드는 Customer와 관계가 없다. 어휴~ 테스트하려는 객체를 생성하려다 진이 다 빠지겠다.’ 이런 문제를 한 사람만 겪은 것도 아니고 또한 해결책을 찾지 못한 것도 아니다. 그러면? 당연히 패턴이 나올 수 있다.

이 책은 프로젝트에 테스트 코드가 있는 프로그래머에게 제일 도움이 될 것 같다. 아니면 나처럼 아직 프로젝트에 테스트 코드가 없지만 ‘꼭’ 넣을 예정이고 다른 사람이 겪은 시행착오를 줄이고 싶은 프로그래머에게도 도움이 된다. 레거시 코드에 유닛 테스트를 넣는 방법은 설명하지 않는데, 그런 경우엔 Working Effectively With Legacy Code 책에서 많은 도움을 얻을 수 있다. 책에서도 무지 추천함.

이 책이 테스트 코드에 쓰는 패턴 용어를 확실하게 교통정리를 한다는 목표가 있기 때문인가? 저자가 이름을 명확히 정의하는 게 마음에 든다. 완전 용어덕후. 이름을 왜 이렇게 지었는지도 설명하고 mock, fake, stub, dummy와 같이 막 혼용해서 쓰이고 있는 용어도 교통정리를 확실하게 해준다. 나도 저런 용어를 보면 정말 헷갈렸는데, 나만 그런 게 아니라고 따뜻한 형님처럼 얘기하는 센스도 잊지 않았다.

지금은 테스트 코드를 넣기 전. 한창 진행하고 있을 때, 이 책을 다시 본다면 느낌이 많이 다르겠지?

 

by-nc-sa
Aug 302010
 

원조. 뭔 말이 더 필요할까? 읽기가 딱딱해서 그렇지 사실 여기 있는 내용을 이해하기 쉽게 풀어놓은 책이 태반이다. 결국 그 말은 이 책에 있는 내용 이상을 쓴 책이 잘 없다는 뜻. 다른 책을 먼저 읽다가 “아~ 이런 시각을 가질 수 있구나!”라고 생각한 항목이 몇 개 있었는데, 이 책에 있는 내용이다. 아 좀 허탈.

꽤 오래전에 책을 샀는데, 드디어 한 번 제대로 읽었다. 옛날엔 읽다가 무슨 얘기인지 이해가 안 돼서 도중에 접어 버렸는데, 경력이 쌓이니 이제야 어떤 얘기를 책에서 하고자 하는지 알겠다. 그래도 발전이 좀 있었네.

명서. 책이 어려워 쉽게 설명한 다른 책을 먼저 읽겠지만 결국 이 책으로 돌아오게 된다.

 

by-nc-sa
Aug 022010
 

내공이나 디자인 패턴에 대한 지식 없이 ‘GoF 디자인 패턴’을 처음부터 읽어서 이해하기는 힘들다. 그래서 GoF 디자인 패턴에 나온 패턴을 이해하기 쉽게 풀어놓은 책을 골라서 먼저 읽는다. 이 책도 그런 책 중의 하나다.

디자인 패턴을 사용해서 우아하게 문제를 해결하기에 앞서 하나를 변경하려면 사방팔방을 다 들쑤셔야 하는 나쁜 해결방법부터 보여주는 게 좋다.프로그래밍 면접 이렇게 준비한다‘에서 O(n^2) 답을 먼저 제시하고 개선해서 O(logn) 혹은 O(n)으로 문제를 해결하는 게 좋았는데, 이 책에서도 이런 접근 방법을 보여줘서 좋았다.

그리고 제목 그대로 C++을 사용해 예제 코드를 짰다. Java로 예제를 짠 책들이 넘쳐나는데, C++을 주로 사용하는 프로그래머에겐 반가운 일이다. 허나 그냥 소스 코드를 C++ 문법에 맞춰 짠 것에 지나지 않는다. C++ 구현 이슈를 하나도 다루지 않는다. 명색이 책 이름에 C++을 붙였는데도 말이다. 아무리 언어 스팩에 멀티 쓰레드가 포함이 안 됐다고는 하나 멀티 쓰레드 환경에서 싱글톤을 다루지 않은 건 이해가 안 된다.

겹치는 예제도 있고 ‘GoF 디자인 패턴’에 나온 내용을 그대로 붙인 것도 많이 보인다. 원조인 책이 분명히 있고 그걸 쉽게 이해하기 위한 책이라서 이런 부분은 어쩔 수 없다고는 생각한다. 하지만, 이 책을 보는 사람은 ‘GoF 디자인 패턴’ 책을 본다고 가정하고 이해하는 데 필요한 지식을 풀어서 설명하면 어땠을까 하는 아쉬움이 남는다.

평가가 좋은데, 나는 마음에 안 들었다. 포지션이 애매하다. 디자인 패턴을 처음 접하는 사람에게는 이 책보다는 ‘Head First Design Patterns’가 더 낫다. 아님 헤드 퍼스트보다는 수준이 높은 책을 원한다면 ‘실전 코드로 배우는 실용주의 디자인 패턴’이 낫다. 자바를 못해서 C++로 된 이책을 사는 거라면 말리고 싶다. 자바로 된 정말 좋은 책들이 많다. 언어 때문에 그런 책들을 포기하는 건 너무 아까운 일. C++을 배웠다면 책을 읽을 정도만큼만 자바를 배우는 건 그리 어렵지 않다.

 

by-nc-sa
Jul 262010
 

GoF 디자인 패턴이 어떻게 실제로 쓰이는지 예제로 설명하는 책이다. 책 서문에서 밝히듯이 패턴을 다 쓰려고 남발했지만 적절하게 사용해서 소스 코드를 보는 것만 해도 많은 공부가 됐다.

소스 코드도 훌륭하지만, 무엇보다 자기주장이 확실한 게 좋았다. GoF 디자인 패턴을 쉽게 풀어쓴 책들은 명성 때문인지 저자 자기주장을 고이 접어놓는데, 이 책을 쓴 홀럽 아저씨는 그런 거 없다. 자바 월드에 이 책에 실린 1장, 2장 초안을 공개했다가 공격을 많이 받았다고 하던데, 그 정도로 자기주장이 확실한 책이다. 요즘 나름 자기 스스로 고수라고 생각하는 사람들은 왜 그리 묻는지 지겨웠다. 난 진짜 그런 사람들이 어떻게 생각하는지 궁금하다. 스스로 보여주기는커녕 묻기만 하는데, 그런 차에 고수가 자기주장을 확실히 하는 이 책을 만나서 얼마나 반가웠는지 모른다.

Continue reading »

by-nc-sa
Jun 142010
 

요즘 읽고 있는 ‘Java 언어로 배우는 디자인 패턴 입문 멀티 쓰레드 편’에 나오는 내용을 요약해서 만든 발표 자료.

Java 소스만 있는 터라 이 기회에 boost를 배우면서 책 내용을 구현하고 있다. 써보니 boost::thread도 참 편하다. 책에 나온 소스 구현이 다 끝나면 리뷰를 올릴 예정. 아아~ 블로그가 프로그래밍 책 리뷰 블로그가 된 것 같아.

by-nc-sa