< C++ Primer > 5판을 읽고...
C++ 책을 본지 하도 오래 되기도 했고, 새로운 표준이 도입되면서 단편적으로 새로운 기능들을 찾아보는 것에도 한계가 있는 것 같아 C++ 입문서로 유명한 <C++ Primer> 를 읽어 보기로 하였다. 국내에 5판이 번역되어 있어, 5판 번역서를 읽었다.
<C++ Primer> 5판, Stanely B. 외 지음, 이상주 옮김, 피어슨에듀케이션코리아(PTG)
<C++ Primer> 는 흔히 <C++ Primer Plus> 와 많이 헷갈린다고 한다. 둘 다 훌륭한 입문서로 알려져 있지만, 사실 따지고 보면 <C++ Primer> 가 원조이다. 하지만 판수는 <C++ Primer Plus> 가 더 높은 건 함정.
모든 책이 그렇듯, 앞부분은 언어의 기초이고, 기존에도 익히 알고 있었던 내용들이라 빠르게 넘어갔지만, 뒤로 갈수록 책장을 넘기는 속도가 떨어졌다.
STL 을 다루는 부분을 조금 꼼꼼하게 읽었다. 모든 내용을 다루고 있지는 않지만, 일관된 인터페이스를 기준으로 각 STL 함수들을 사용하는 방법을 설명하고 있어 STL 을 조금 더 이해할 수 있었다.
뒤로 템플릿에 들어가서는... ㅠ.ㅠ 책장이 넘어가질 않았다. 그럼에도 불구하고 꿋꿋하게 읽어나가면서 항상 궁금했던 std::begin() 과 std::end() 가 어떻게 작동하는지 알 수 있었다.
비슷한 활용으로 원소 갯수를 알려주는 함수를 이렇게 작성할 수 있다.
N 은 컴파일러가 계산해준다. 이 함수는 sizeof( s ) / sizeof(s[ 0 ]) 과 동등하다.
전체적으로 C++11 에 대한 설명이 추가되어 있다. 특히 마지막에 난수 관련 함수들이 간략하게 설명되어 있다. C++ 에서 난수 기능을 제공하지 않아 C 의 srand()/rand() 를 써야했던 C++ 프로그래머들에게는 단비와 같을 것이다. C 의 도움 없이 C++ 로 난수 또는 통계 관련 프로그래밍을 하고 싶어하는 프로그래머라면 꼭 읽어볼 가치가 있는 부분이다.
여기저기 흩어져 있던 편린들을 모아 익히다 보니 서로를 체계적으로 엮기가 어려웠다. 하지만 이 책을 읽으면서 그 편린들이 하나의 일관된 체계 하에 정리되는 것을 느낄 수 있었다.
C++ 을 이해하는데 큰 도움이 되었지만, 몇 가지 아쉬운 점이 있었다. 일단 번역의 문제다. 몇 가지 용어들은 익숙하지 않은 것들이 많았다.
예를 들어, '사상' 이라는 말이 자주 나오는데, 처음에 쉽게 와닿지 않았다. 이보다는 '대응' 이라는 표현이 더 일반적인 표현이 아닐까 생각했다.
이외에도 '포함 객체' 나 '연결 지시문(linkage directive)' 등 언뜻 봐서는 이해되지 않는 말들이 많았다. 이 때에는 원문을 보면 알 수 있었다. 다소 난해한 표현이거나 새로운 번역 시도일 경우 원문을 같이 표기하거나 역주를 달았으면 보다 수월하게 읽어나갈 수 있지 않았을까 하는 아쉬움이 있었다. 다들 아는데, 나만 모르는 건가 ?
뿐만 아니라, 가끔 어색한 문장들이 보이곤 했다. 오타도 간혹 있었다. 편집 오류처럼 보이는 부분도 있었다. 원문을 보지 못한 상태라 이 부분은 확실히 판단하기 어렵지만, 편집이 어색해 보이는 것은 어쩔 수 없었다.
번역서가 가질 수밖에 없는 고질적인 문제인 것일까 ?
내용면에서도 몇 가지 아쉬움이 있다.
이 책의 목적 자체가 입문서를 지향하고 있지만, C++11 의 중요한 개선 사항 중의 하나인 쓰레드를 다루지 않고 있다. 아울러 시간과 관련된 함수들을 다루지 않은 것은 무척 아쉬운 점이다.
그럼에도 불구하고, 이 책은 C++ 프로그래밍을 할 때 항상 옆에 두어야할 책임에는 틀림없다. C++ 을 시작하고 싶다면 단언코 이 책을 먼저 보라고 말하고 싶다.
<C++ Primer> 5판, Stanely B. 외 지음, 이상주 옮김, 피어슨에듀케이션코리아(PTG)
<C++ Primer> 는 흔히 <C++ Primer Plus> 와 많이 헷갈린다고 한다. 둘 다 훌륭한 입문서로 알려져 있지만, 사실 따지고 보면 <C++ Primer> 가 원조이다. 하지만 판수는 <C++ Primer Plus> 가 더 높은 건 함정.
모든 책이 그렇듯, 앞부분은 언어의 기초이고, 기존에도 익히 알고 있었던 내용들이라 빠르게 넘어갔지만, 뒤로 갈수록 책장을 넘기는 속도가 떨어졌다.
STL 을 다루는 부분을 조금 꼼꼼하게 읽었다. 모든 내용을 다루고 있지는 않지만, 일관된 인터페이스를 기준으로 각 STL 함수들을 사용하는 방법을 설명하고 있어 STL 을 조금 더 이해할 수 있었다.
뒤로 템플릿에 들어가서는... ㅠ.ㅠ 책장이 넘어가질 않았다. 그럼에도 불구하고 꿋꿋하게 읽어나가면서 항상 궁금했던 std::begin() 과 std::end() 가 어떻게 작동하는지 알 수 있었다.
비슷한 활용으로 원소 갯수를 알려주는 함수를 이렇게 작성할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <iostream> using namespace std; template <typename T, unsigned N> static int elmNums(T (&s)[N]) { return N; } int main() { int s[ 10 ]; cout << elmNums(s); return 0; } |
N 은 컴파일러가 계산해준다. 이 함수는 sizeof( s ) / sizeof(s[ 0 ]) 과 동등하다.
전체적으로 C++11 에 대한 설명이 추가되어 있다. 특히 마지막에 난수 관련 함수들이 간략하게 설명되어 있다. C++ 에서 난수 기능을 제공하지 않아 C 의 srand()/rand() 를 써야했던 C++ 프로그래머들에게는 단비와 같을 것이다. C 의 도움 없이 C++ 로 난수 또는 통계 관련 프로그래밍을 하고 싶어하는 프로그래머라면 꼭 읽어볼 가치가 있는 부분이다.
여기저기 흩어져 있던 편린들을 모아 익히다 보니 서로를 체계적으로 엮기가 어려웠다. 하지만 이 책을 읽으면서 그 편린들이 하나의 일관된 체계 하에 정리되는 것을 느낄 수 있었다.
C++ 을 이해하는데 큰 도움이 되었지만, 몇 가지 아쉬운 점이 있었다. 일단 번역의 문제다. 몇 가지 용어들은 익숙하지 않은 것들이 많았다.
예를 들어, '사상' 이라는 말이 자주 나오는데, 처음에 쉽게 와닿지 않았다. 이보다는 '대응' 이라는 표현이 더 일반적인 표현이 아닐까 생각했다.
이외에도 '포함 객체' 나 '연결 지시문(linkage directive)' 등 언뜻 봐서는 이해되지 않는 말들이 많았다. 이 때에는 원문을 보면 알 수 있었다. 다소 난해한 표현이거나 새로운 번역 시도일 경우 원문을 같이 표기하거나 역주를 달았으면 보다 수월하게 읽어나갈 수 있지 않았을까 하는 아쉬움이 있었다. 다들 아는데, 나만 모르는 건가 ?
뿐만 아니라, 가끔 어색한 문장들이 보이곤 했다. 오타도 간혹 있었다. 편집 오류처럼 보이는 부분도 있었다. 원문을 보지 못한 상태라 이 부분은 확실히 판단하기 어렵지만, 편집이 어색해 보이는 것은 어쩔 수 없었다.
번역서가 가질 수밖에 없는 고질적인 문제인 것일까 ?
내용면에서도 몇 가지 아쉬움이 있다.
이 책의 목적 자체가 입문서를 지향하고 있지만, C++11 의 중요한 개선 사항 중의 하나인 쓰레드를 다루지 않고 있다. 아울러 시간과 관련된 함수들을 다루지 않은 것은 무척 아쉬운 점이다.
그럼에도 불구하고, 이 책은 C++ 프로그래밍을 할 때 항상 옆에 두어야할 책임에는 틀림없다. C++ 을 시작하고 싶다면 단언코 이 책을 먼저 보라고 말하고 싶다.
댓글
댓글 쓰기