티스토리 뷰

Hobby/Book

[Book] C++ 하이킹 : 객체지향과 만나는 여행

생각많은 소심남 2013. 7. 25. 10:47

 작년 한학기동안 학부 컴파일러 수업을 들었었다. 그때 C++로 구현하는 과제가 있었는데 기본적인 내용에 대한 이해가 부족해서 조금 고생했던 기억이 난다. 

원래 주로 다루던 언어가 아무래도 하드웨어랑 왔다갔다하면서 다루는 내용이 많다보니 C를 위주로 공부하고 있었는데 C++을 새로 접하고 난 후에 어 이런 기능도 있네 하면서 신기했던 적도 있다. 반면 이게 왜 있을까? 싶을 정도로 기능이 많다. 사실 언어에 대한 능력이 부족하다고 느끼는 건 언어 자체의 이해가 부족했다기 보다는 문법이 눈에 익지 않아서, 혹은 언어가 제공하는 기능을 제대로 활용하지 못하고 있기 때문이 아닐까 싶기도 하다. 내가 C++을 바라보는 눈도 사실은 그랬다. 오죽하면 이런 그림도 있을까?



위 그림은 프로그래밍 언어를 나무를 자르는데 필요한 도구로 표현한 내용인데 잘보면 C++은 기능이 엄청많다. 문제는 그 걸 다 적절하게 쓰지 않는 거다. 물론 그냥 답만 딱 내면 모르겠지만 기왕이면 파이썬같이 그냥 한번에 딱 처리할 수 있는게 효율적이지 않으련지.. (다른 언어에 대해서는 언급하지 않겠다.)

 아무튼 C++을 다루면서도 그 기능에 대한 이해가 부족했었기에 이번 기회에 기본서 하나를 선택해서 보게 되었다.



 사실 기본서의 정의가 뭘지 아직도 개념이 잡히지 않는다. 아마 독자의 취향에 따라 기본서의 개념은 확 달라질 것이다. 어떤 사람은 예제와 기본 개념 설명이 적절히 나열된 책을 기본서라고 할 것이고, 혹은 예제 많이, 개념 많이, 아니면 양만 많이(?) 들어있는 책을 고를 수도 있다. 예전에 프로그래밍 수업을 선택하면서 내가 선택했었던 책은 C++ Primer Plus (Stephen Prata 저) 였다.



개인적으로 봤을 때는 C++ 기초 플러스 책은 정말 구성이 잘 되어 있다. 물론 스트롭스트롭씨가 쓴 The C++ Programming Language 책을 안 읽어봐서 모르겠지만 정말 예제와 개념, 연습 문제가 적절하게 들어있는 최고의 책이었던 거 같다. 그런데 문제는 양이다. 과연 누가 저 책을 들고 다니면서 볼 수 있을까? 자그마치 1500페이지다. 그래서 보통 연구실에만 놔두고 필요할 때만 보는 책이 되어버렸다. 이번에 고른 책은 딱 절반이다. 그러면 과연 양을 줄인 만큼 필요한 내용이 다 들어있는지를 살펴보면 이책이 기본서로 충분한지를 생가해볼 수 있을 듯 하다. 



책은 총 17개 장으로 나눠져 있으며, STL활용과 클래스 설계 실습 프로젝트인 마지막 2장을 제외하고 15개의 장에서 개념들을 다루고 있다. 여기서 9장까지가 C와 C++의 방향이 어느정도 일치하는 부분이고 본연적으로 C++ 기능을 소개하는 부분은 10장 부터라고 보면 될 것 같다. 처음 배우는 사람이나 이미 배운 사람들을 배열한 구성이라고 본다. 



이 책이 이전에 읽었던 책에 비해서 좋았던 점은 위와 같이 줄마다 어떤 기능을 하는지 설명하는 점이었다. 보통 일반적인 책에서는 코드내의 주석기능을 통해서 해당 줄의 역할이 무엇인지를 소개하고는 한다. 그런데 처음 코드를 보다보면 가끔 루프나 브랜치 관련 부분으로 인해서 줄의 순서와 코드의 진행 순서가 다른 경우가 있기 때문에 주석만 보고 흐름을 보기에 어려운 점이 있다. 이때 하나로 정리된 내용을 보면서 흐름을 잡는 데는 도움이 되었다. 책의 모든 예제에 이런 라인에 따른 설명이 제시되어 있다.



또 각 챕터 중간중간마다 생길 수 있는 궁금증에 대해 저자가 몇마디로 설명해놓은 내용들이 있다. 그냥 지나칠 수도 있겠지만 한번쯤 읽어보면 평소에 배우면서 가졌던 궁금점을 해소할 수 있을 듯 하다.


조금 아쉬웠던 점은 바로 요약 부분이다. 사실 이 책의 타겟이 대학이나 학원에서 강의교재로 쓸 수 있는 것이기 때문에 어쩌면 이런 기본서류의 책에는 항상 챕터 마지막에 요약이라는 부분이 존재하는데 책을 읽다보면 이 부분이 왜 있는지 참 의문스럽다. 사실 이 부분이 있다는 거 자체가 시험볼때는 필요한 내용만 암기해서 보면 되기 때문에 이런 요약 세션이 필요하다고 느껴질 수 있겠지만 개인적으로 생각하기엔 C++은 이런 것으로 배웠다고 할 수 있을만한 게 절대 아니다. 차라리 예제나 연습문제를 이런 부분을 대신해서 추가되었으면 어땠으려나 싶은데... 아마 개인취향일 거 같다..


 아무튼 이미 고생해서 배웠던 내용을 다시 되짚어 보기에 참 좋았던 책이었다. 무엇보다도 C++을 처음 다루는 사람을 대상으로 한 것이기 때문에 내용 자체가 쉽고, 설명이 잘 되어있어 빠르게 읽어나갈 수 있었고 특히 내 입장에서는 평소에 조금 취약했던 클래스 생성이나 상속에 대한 내용을 예제를 통해서 익힐 수 있던 좋은 기회가 아니었나 싶다.

댓글