| "어떤 몰지각한 작자가 C++ 개발자에게 파블로 실험[개에게 먹이를 주면서 종을 울리는것을 반복했던 실험]을 했는지 모르겠다는 생각이 들 때가 종종 있습니다 . 그렇지 않았다면, 개발자들이 어째서 "효율(effeciency)" 이란 말만 들으면 갑자기 동공이 확대되고 군침을 질질 흘리기 시작하는 설명할수가 없지 않습니까?" More Effective C++ 책 챕터4의 효율의 첫부분에서.... 위의 말처럼 C++의 고급서적에 목말라 있는 독자들은 스캇 마이어스의 번역서에 겉표지에 "곽용재 편역"라는 말만 들어가면 마치 독자들에게 파블로 실험한마냥 , 책을 펼쳐보지도 않았는데도 불구하고 동공이 확대되고 군침을 질질 흘흘리게 만드는 경우를 볼수 있습니다 [저도 마찬가지입니다 ;) ] 왜 그럴까요? 일반적으로 우리나라에 출판되는 서적을 보면 자바나 C#책 VC++ 책은 많아도 진정 기본이되는 C++에 대한 중고급 서적은 보기 어렵다는것에서 이유를 찾을수 있습니다 기껏 좋다는 국내 C++ 서적이나 , 엉터리 번역서를 사서 읽어봐야, 본전 생각이나 나게나 할뿐이었고 , 번역서의 경우 "속았다!?"는 생각 마저 들게 만들때가 "어디 한두번이냐!" 말입니다 물론 이렇게 사고 나서 후회해봤자 , "죽은 자식 불알 만지기"란걸 알지만 , 그래도 원서 읽기도 만만치 않아서 언제나 후회짓을 선택하기 마련입니다 그래서 흔이 이바닥에서 "구를만큼 구른"? 고수분들이 이런 말들을 하곤 합니다 "고급책들은 반드시 원서!!!!를 읽어야 한다"고요..... 그 말이 꼭 틀린말은 아니지만 예외라는게 항상있기 마련이고 요즘들어서는 제대로 된 번역서들이 곧잘 출간되는걸 봐선 앞으로는, 반드시 원서를 읽을 필요는 없어질거 같아보입니다 [요즘 출판사들이 정신 차리고 좋은 책의 번역서를 내주고 있다는 것에 희망적으로 생각해도 좋을거 같습니다 예전처럼 엉터리 번역서를 내고는 살아남을수 없다는 경각심을 가진거 같으니요] 서론이 너무 길어졌는데 각설하고 전 ... 서론에서 누누이 말한 , "원서를 읽을 필요가 없는 책"중에서, 선봉에 서고 있는 More Effective C++ 책에 대해, 완독을 마치고 다른분들의 책 선택에 도움을 주기 위하여 , 감히! 서평을 준비했습니다 [요즘 가장 이슈가 되는 책중 하나일거라 생각합니다 ;) ] 먼저 이책에 대해 간단히 설명하자면 어디서나 널부러져 있고 , 흔히 볼수 있는 그런 싸구려틱한 책이 아닙니다 또한 독자 대상도 , 단호히 말해 c++에 기본이 되지않은 사람은 몇장보기도 힘든책입니다 [가끔 서평쓰는분들중 자기 수준에 안맞는 책을 사서 이해를 못한걸 가지고 번역이 엉터리라는 사람들이 있는데 그건 다른 사람에게도 엄청난 피해를 주는것이고 나중에 실력이 향상되면 이런서평을 쓴 스스로도 엄청나게 부끄러울것입니다] 하지만 C++의 단순한 문법책에 질려버렸고 , 정말이지 C++로 무얼 할수 있냐?라는 의심을 가진분들에게 충격을 안겨줄법한 내용 심심치 않게 나와버리는 그야말로 "유이무이"한 얼마 안되는 책중 하나일것입니다 게다가 책질도 매우 좋아서 명저를 수집하는 광들에게도 좋은 선물?이 될거 같은 느낌도 듭니다 ;) 내용을 한번 살펴보면, 초기에는 기본적인 문법적인 내용에, 대한 주위할점을 다루고, 다음에는 C++책 어디에도 잘 다루지 않는 예외 사용법에 대해 잘 설명해줍니다 중요한건 try catch가 예외가 일어날때만 생각하는 그런측면에서 보지 않고 "예외는 어차피 거의 일어나지 않기때문에 예외때문에 생기는 오버헤드는 제외"해버리는 면은 저의 예외처리에 대한 사고를 완전히 뒤흔드는 내용이었다고 생각이 됩니다 특히 대다수의 C++ 유저가 C++을 쓰는 이유를 효율에 두고 있는데 그 가장 중요한 효율에 대해서도 소프트웨어공학측면에서 접근하여 지연평가라는 기술을 C++로 구현한 모습에 "정말 이렇게까지 쓸수 있수도 있구나!"라는 감탄사가 절로 나오게 만들정도였죠 그외는 객체지향적인 설계와 스마트 포인터!!!(이책의 핵심중 하나라고 감히 말씀드리겠습니다) 에 대한 자세한 설계와 사용방법을 다루고 디자인패턴에서나 나오는 프록시 패턴 [근데 디자인 패턴에 나오는 프록시와다르게 구현했더군요] 이중 디스패치 등등 을 , 자바도 C#도 아닌 C++로 완벽하게 구사한 모습들을 볼수 있습니다 [C++의 언어적 한계가 있는면도 저자의 놀라운 테크닉으로 인해 거의 극복되는 모습을 볼수 있습니다] 이렇게 내용도 좋지만 그리고 이책에서 간과 할수 없는 좋은면이 또 하나 있는데 원래 원저의 책이 조금 오래된 면이 있기때문에 저자의 설명들이 요즘 컴파일러와 간혹 다른 면이 있는부분이 나옵니다 , 하지만 이 책의 편역자가 그걸 놓치지 않고 , 날카롭게 지적하고 설명하고 있어, 원저를 능가하는 번역서라 생각이 들정도 였습니다 마지막으로 또 하나 좋은 점을 들자면 책의 백미는 설명 방식인데 설명중에 곁들이는 '저자와 편역자의 농담 기술'은 워낙 유명하니 둘째치고 어떤것을 설명을 함에 있어서 처음에는 독자들이 우를 범하기 쉬운 부분을 저자가 먼저 해본다는것입니다 간단한 예로 저자가 무엇을 설명하면..... 독자들로 하여금 "뭐야 당연히 안되는거잔아?" 혹은 "이렇게 하면 될것을...별것도 아닌거 가지고..."라는 생각을 들게 만들고는..... "뭐야 당연히 안되는거잔아?"라는 생각이 무색해지겠끔 당연히 되게끔 만들어버리는 테크닉을 보여줘버립니다 또한 "이렇게 하면 될것을 별것도...." 이런 생각 역시 마찬가지로 일단 먼저 독자 생각되로 , 그렇게 해본것을 보여준다음 이렇게 하면 절대!! 안된다는것을 보여주므로써 건방진 생각을 가진 독자들을 엄청나게 부끄럽게 만듭니다 [참고로 말씀드리자면 전 , 이 책을 읽는 내내 부끄러움을 느꼈습니다 , T_T ] 본론도 매우 길어졌는데 ^^; 이제 결론을 내리자면 이제 문법정도는 알만큼 알고 C++ 프로그램도 조금 짤줄 아는 , 한마디로 기본기가 된분들에게는 반드시 읽어야할( Must Have ) 할 책중 하나임에 틀림없고 아무리 C++ 고수라 할지라도 이 책을 읽어보지 않았다면 분명 건질게 있을거라 생각될정도로 좋은 내용을 많이 담고 있다고 생각됩니다 만약 이펙티브 STL에서 만족을 느꼈던 독자라면 이책을 반듯이 읽어볼것을 권하고 싶습니다 끝으로 앞으로도 이런 좋은책을 내주시길 인포북에 희망하면서 ;) 글을 이만 마칠까합니다 |
| 나오자 마자 산 책을 조금 읽고 개강했단 핑계로 던져뒀던 책을 이제서야 다 본 소감은... 왜 이제서야 보았을까 하는 것이었습니다. 전작인 Effective C++ 은 C++ 에 대한 다양한 지침서였다면 이 책은 지침과 더불어 다양한 기법들을 소개하는 것이 핵심인 책입니다. Chapter5 에서의 내용이 바로 그러한 내용들인데 분량 면에서도 2/5 정도 차지하고 있지요 개인적으로 항목 29 : 참조 카운팅이 제일 이해하기 어려웠던 것 같군요. 허허; 이 책의 백미인 Chapter5 를 꼭 읽어보시길 바랍니다. 우선 이 책에서 맘에 안들었던 것은 단 한가지였습니다. 그것은 목차를 찾아봐야만 항목들을 찾아갈 수가 있다는 것이었죠 지면 윗부분에 이 페이지가 현재 몇 번째 항목을 말하고 있는지 씌여있지 않아 알기가 힘들더군요. 중간에 내용을 얘기하다 이 내용은 몇번째 항목에서 설명하고 있다. 란 내용이 나오는데 그걸 그냥 좌르륵 펼치며 찾는데는 애로사항이 꽃 피더군요. (이 책에도 언급된 표현이죠;;) 앞의 목차를 펼치려니 귀차니즘 때문에;; (아 이 책을 읽었으니 귀차니즘이라고 하면 안되겠습니다. Lazy Evaluation (지연평가)인가요 허허; '오늘 할 일은 내일로 미루고, 내일 할 일은 모레로 미루고, 모레 할 일은 아예 안 한다'는 게으름의 미덕;;) 개인적으로 번역서가 이 정도의 완성도를 가질 수 있다는데 매우 놀랐습니다. '여드름을 짰다가 도로 넣는 일만큼 어렵다'라던지 '앗싸 좋구나', '성급한 신혼부부는 거사를 망친다' 등등 수많은 유모어는 이 책을 읽다가 화나던 마음을 웃음으로 전이시켜주던 멋진 표현들이었습니다. 원서에는 원래 어떤 표현들이 있었는지 궁금할 정도였지요. 곽용재님이 김성모 팬이신듯. 이 책을 읽는 내내 '똥 싸느라 늦었다' 이런 표현들은 언제 나올까 기대하며 봤습니다만 아쉽게 안나오더군요; 허허 이 책은 일단 워낙 유명한 책인데다 이 책을 읽겠다고 집어든 사람은 일단 C++ 에 대해 좀더 깊게.. 알고 싶으신 분이라고 생각합니다. 그런 분께 이런 좋은 책은 또 없지요. 그냥 좋다는 얘기입니다 -_-; 이 책을 읽으면 읽을수록 왠지 C++에 대해 자신감이 사라지더군요. 왜 이렇게 몰랐던 것이 많은지.. 좋은 내용에 감동하며 읽었습니다. 책의 뒷부분에 추천하는 읽을거리에 이런 글이 있더군요 'C++ 프로그래머는 늘 좋은 C++ 자료를 찾아 떠돌아다니는 굶주린 하이에나가 되어야 합니다.' 저는 책들이 나올 때마다 자꾸 언제 다보나 하고 한숨부터 쉬니 반성해야겠습니다. 마지막으로 이 책에 써져있던 표현을 인용하겠습니다. 여기까지 보는데 참으로 우여곡절도 많았지만, 그래도 할 만 했다는 생각이 듭니다. 그렇죠? 그렇죠? 아니면 말고요. |
| 만약 'C++의 대가가 내 옆에서 나에게 비법을 가르쳐줬으면'하는 생각을 해봤거나 "C와 C++은 클래스 차이야!"라고 말하는 사람들에게 한번쯤 읽어보라고 권하고 싶은 책이다. 35가지의 프로그래밍 기법을 설명하고 있는데 그 하나하나가 저자가 직접 경험하면서 깨달은 것을 설명해서인지 아주 현실적으로 설명하고 있다... Effective C++에서 설명하지 못한 것을 이책에서 말하고 있는데 Effective C++을 읽어보지 않았다면 같이 읽으면 보다 많은 효과를 얻을 수 있을거라 생각한다. 으례 번역도서를 생각하면 글씨는 분명히 한국말로 되어있는데 이상하게도 읽어보면 무슨말을 쓴건지 아리송한데 원서를 읽어보면 어설픈 번역 솜씨에도 불구하고 그 내용을 이해할 수 있던 경험이 있었을 것이다. 이 책은 그러한 허접(?)한 번역도서와 차원이 다르다. 이런 훌륭한 책을 한국말로 읽게 해준 저자에게 고마울 따름이다... |
|
이책 보신분들은 공감하시겠지만, 른 책들과 비교해서 번역이 너무 잘되어 있습니다. 애매모호하게 번역해서 잘못 쓰는 경우가 안보이는군요.
C++ 처음 하시는 분이 책 좋다는 말듯고 덥석 물었다가는 큰일 나겠더군요. 책 서문에도 있듯이 독자가 C++을 알고 있다는 전제하에 설명하고 있습니다. 제 경우 사용하지 않거나 무심코 그냥 써버리는 코드들의 문제점을 명쾌하게 설명해 놨습니다.
explict 같은 경우는 정말 도움이 되더군요. 기본 생성자 때문에 애먹은 적이 몇번 있었는데 저자는 여기에 대한 답을 제시 했습니다. "필요없는 기본 생성자는 없애버려라!". 이 구절은 목마른 목구멍에 물을 뿌리는요.
또 나 스마트 포인터가 너무나 깔끔하게 설명되어 있네요. 스마터 포인트 관련해서 테이너에 대해서는 부족한데 그 부분은 스캇 마이어가 지은 다른책에 또 있다는 군요. 그 책도 마저 볼 예정입니다. 지연 평가나 효율을 극대화하는 방법등도 설명되어 있는데 일단 써먹기는 어려울 듯하네요.
일단 좋은 책입니다. 기대를 가지고 읽으셔도 되는 책입니다. 어느정도 내공을 쌓으신분은 꼭 한번 읽길 권합니다. [인상깊은구절] 쓸데 없는 기본 생성자는 그냥 두지 말자 |
| 장점: 고급자로 발돋움하려는 그대를 위해 추천 단점: 속도 시대에 능률은 어떤 의미를 가질까... 일단 딴 얘기. 쉬운 스크립트 언어를 찾다가 파이썬을 만나게 되었다. 그 사이트 게시판에서 어떤 글을 보았다. "C++은 일부러 어렵게 보이려는 언어 같아요." 정말 아닌게 아니라 그런 거 같다. 예전 마소 잡지에서 본 기사가 생각이 난다. C 프로그램 어렵게 찾기 대회였나? C코드를 난독조차 할 수 없도록 마구 뒤엉켜놓은 코드였다. 특별히 1등 코드가 소개되어 있었는데, #define이 다단계로 되어 있고 main함수 조차 define으로 선언해놓아 발견할 수 조차 없는 그야말로 괴상망칙한 코드였다. 어쨌든 버그는 없었다 ^^; 왜 이런 생각이 들었을까. 이 책은 확실히 공부하는데 좋은 교재다. 그러나 밑에 다른 분이 쓰신 것처럼, 누구나에게 해당되는 건 아닐것이다. 특히 자신이 초급자라고 생각될때는 더욱더 그렇다. 분명히 책장에 깨끗이 보관될 운명에 처할테니까. 이런 기술은 배워도 쉽게 써먹을 곳을 찾기 어렵다. 전문 프로그래머의 길은 멀고 험하다... 이 책이 나쁘다는 건 절대 아니다. 그러나 보기만 해도 전문가가 될 듯한 목차에 현혹되지 말고 자신이 꼭 필요한 책만을 사라고 말씀드리고 싶었다. 제 집에 있는 꽂혀있는 깨끗한 수십 권의 책을 보며 느낀 생각이다 ^^; |
| 저자의 명성과 Effective C++의 명성을 생각하면 구매할 수 밖에 없는 책이다. 사실 이 책은 초급자를 위한 책은 아니다. 책이 유명세를 타다보니까 "한번 사서 읽어볼까?" 이런 생각을 하는 사람이 많을 것입니다. 하지만 이 책을 읽기전에 꼭 알아야 할것은 자신이 C++의 템플릿정도는 좀 안다라고 할수 있거나 STL을 좀 다뤄봤다면 읽어보라고 권하고 싶고 그렇지 않다면 권하고 싶지 않군요. 내가 처음 직장생활을 시작했을때 제일 골치거리는 STL, ATL, COM 이라는 것이었는데, 그때 당시는 이게 도대체 몬지 신기하게만 보이는 것들이었다. 그리고 하나씩 조금씩 알아가면서 몬가 지금까지 봐왔던 책들과는 다른 책이 있지 않을까 생각했고, 그때 당시 찾았던게 Effective C++ 이었다. 그리고 신선한 느낌을 지울 수 없었다. 내가 생각하지도 못한 것들이 참 많다는것을 알게해주는 책이었고, 앞으로 할것이 아주 많다는 것을 알려주는 책이었기에..ㅜ.ㅜ 시중의 대부분의 C++ 책이 입문자용 책이 대부분이고 템플릿에 관해선 얼마 있지도 않습니다. STL 에 관해서 다루지 않은 책도 꽤 되는걸로 압니다. 물론 입문자용이니까 어쩔수 없겠지만 이 책은 저런 책들과는 다릅니다. 그리고 이 책이 다른책과 다른것은, 이런건 이렇게 이렇게해라..이런 것보다는, 이런 방법도 있는데 당신은 어떻게 생각하는가?..이런식의 생각을 갖게 하는것 같군요. 이런 생각을 갖게하는 다른 책이 더 있었는데 "Modern C++ Design"이라는 책과 "Exceptional C++" 이다. 재작년쯤에 읽었던걸로 기억하는데 이 책들은 C++을 하면서 생각지 못했던것을 가르쳐주는 몇안되는 책이었고 몬가 자신에게 더 많은 것을 생각해보라고 강요(?)하는 책이었다. 이 책을 슬쩍 한번 보면 알겠지만 보통 C++ 책과는 구성도 다르고 내용도 다릅니다. 그리고 중요한 것은 이 책이 C++ 고수로 가는 지름길 같은걸 제시하는 책은 아니라는 것이다. 단지 한번 더 생각해보면 더 좋은 방법이 있다는 것을 일깨워준다고나 할까? 예외처리 부분이나 효율부분에서도 몬가 특별한 것을 제시하는 것은 아니다. 하지만 신중히 볼 필요는 분명히 있다. 자신이 COM/DCOM, ATL 을 좀 다루어 봤다면 5장의 제목을 보면 "아~저게 있네" 이런 생각을 할것이다. 그리구 아마 5장을 재미있게 금방 읽어내려갈것이다. 어쩌면 나만 그런지도..ㅡㅡ;; 마지막으로 말하고 싶은 것은 이 책에서 왕도를 찾으려 하면 안된다는 것이다. 단지 유용한 무언가를 얻을 수 있다는 것은 확신한다..^^; 그리고 번역서라서 번역에 관해 궁금해 하실 분들이 있을 것이다. 이 책에서 그런 걱정은 안해도 될듯 싶다. 가끔 이해하기 까다로운 문장이 있을것이다. 나도 2번이상 수식하는 문장이 나오면 헷갈리지만 다른 사람들도 그렇지 않을까 싶다. 단지 번역의 문제라기 보다는 원문이 그런게 아닐까 싶다..ㅡ.ㅡa 편역노트라는 주석도 있으니 군데군데 도움도 될것이다. 진짜 마지막으로 하고 싶은 말은 이 책이 모두에게 고마운 책은 안될거란 것이다. 초보자에게는 이 책말구 다른 책을 사라고 권하고 싶다..꼬옥~ |