전문가를 위한 C++ - C++20, 병렬 알고리즘, 파일시스템, 제네릭 람다, 디자인 패턴, 객체지향의 원리를 익히는 확실한 방법, 개정5판
마크 그레고리 지음, 남기혁 옮김 / 한빛미디어 / 2023년 3월
평점 :
장바구니담기



#프로그램언어 C++ 하면 떠오르는 기억이 참 많다. 터보 C를 쓰다가 C++ 언어라는 것이 새로 등장하면서 학생 신분으로 거금을 들여 볼랜드 C++ 정품 패키지를 구입했었다. 그리고 당시 객체지향 관련 책이 많지 않아, 짧은 영어 실력에 C++ 강좌 비디오 테이프를 보며 공부했던 기억이 난다. 지금과 달리 뭐 하나 배우기가 쉽지 않았던 시절이었다.


그랬던 C++이 벌써 20버전을 내놓았다. 3년 주기로 언어를 업그레이드 하는 상황이라 올해 23버전이 나오겠지만, 아직 발표가 된 것이 아닌 만큼 현재 최신 버전은 20이라 할 수 있다. 한때, 새로운 언어들의 좋은 기능들을 수용하지 못해, 퇴물이 되는 것이 아닌가 하는 우려도 있었으나, 1983년 정식 등장하여, 2.0, 98, 03, 11, 14, 17, 20 버전으로 지속적으로 발전하며 그런 걱정을 해소해 왔다.


덕분에 지나온 긴 세월만큼 C++은 일반 #프로그래밍 외에 #임베디드, 운영체제, #인공지능, 각종 드라이버, 라이브러리, 그래픽 엔진 등 다른 어떤 언어보다 광범위한 곳에서 아직도 활발히 쓰이고 있다.



이러한 C++ 언어의 파워는 잘 알고 있지만, 내 경우, 주력 언어가 C#과 자바 쪽이다 보니, 필요할 때만 C++을 활용하고 있어서, 내가 지금 어느 버전 정도 알고 있는지 명확하지가 않다. C++20 버전에는 모듈 기능도 추가되고, 예외처리, 소스코드 표현, 람다 함수, 컨테이너 등이 개선되었다고 하는데, 어떤 차이가 있고 어떻게 쓰는지 잘 모른다. 그래서 종합적으로 C++의 모든 것을 살펴 볼 수 있는 '전문가를 위한 C++'을 보게 되었다.


#전문가를위한 C++의 부피는 딱 봐도 어마어마하다. 목침이 연상될 정도의 두께로 1691쪽에 달한다. 책상에 놓고 책 내용이 자면서 머릿속에 들어 오면 얼마나 좋을까 하면서 장난 삼아 베어봤는데, 팔보다 이게 편했다. 부피가 두껍다 보니, 가지고 다니며 보기엔 부담이 된다. 분철하거나 아예 전자책을 이용하는 것이 좋을 것이다.



이 책의 구성은 총 6개의 파트로 되어 있다. 첫 파트는 주로 C++ 언어의 기초 정보를 담고 있다. 초단기 속성 코스, 스트링, 코딩 스타일 같은 내용이 들어 있다. 이곳이 기초 파트이긴 하지만, 초심자 대상의 내용이 아니다. C++ 또는 다른 언어 사용자들이 빠르게 살펴 볼 수 있게 구성되어 있는 것이다. 코딩 스타일 부분은 명명 규칙, 주석, 서식 그런 것을 다루고 있어서, 아직 프로그램이 익숙하지 않은 사람 경우 중요한 참고 내용이 될 수 있을 것이다.


파트 2부터는 단계별로 내용이 깊어진다. 추상화, 객체지향 설계, 재사용 설계 같이 C++ #소프트웨어 작성에 기본이 되는 것을 익히고, 파트 3에서는 메모리 관리, 클래스, 객체, 상속, 템플릿, 에러처리, 오버로딩, 표준 라이브러리, 람다식 등 나머지 C++ 기능을 배운다.


파트 4, 5는 멀티스레드, 소프트웨어 공학, 효율적 코딩, 테스트, 디버깅, 디자인패턴, 크로스 플랫폼과 같이 중급 이상의 내용을 다룬다. 실제 코딩에 있어 도움이 되는 파트로 전문가의 각종 기술을 익힐 수 있다.



'전문가를 위한 C++'이 좋은 점은 단순히 이런 기술이 있다고 나열식으로 말하는 것이 아니라, 이런 기능을 어떻게 쓰고, 어떤 문제가 생기면, 어떻게 대처하라는 설명이 아주 상세히 나오고 있다는 것이다. 처리 속도나 대안까지 나오는 거 보면, 다 테스트를 거친 거 같다. 이런 것들이 NOTE, CAUTION 코너로 강조된 부분도 있으나, 책 전반 곳곳에 나오므로 시간이 걸리더라도 꼼꼼히 살펴 보기 바란다. 이 책의 진가는 이런 곳에 숨어 있으므로 절대 놓치면 안 된다.


새로운 C++20의 기능들은 C++20 박스로 별도 표시되어 있다. 책을 보면서 그동안 바뀐 기능들이 참 많다는 것을 알 수 있었다. 너무 몰랐다. #3방향비교연산자 는 보면서, 뭔가 웃기기도 하고 신기하기도 했다. 모듈은 유용해 보이는데, 아직 실제 프로그래밍에 써보지 않아서, 어설프게 느껴진다.



파트 6은 부록을 모은 곳인데, 왜 부록편이 아니라, 굳이 파트 6으로 했나 했는데, 부록A C++ 면접 예상 질문을 보고 이해가 됐다. 본문만큼 중요 파트인 것이다. 책 내용을 부록A에서 요약 정리했다. 기억할 사항 모아 놨고, 면접 질문을 유형으로 답안과 함께 주의할 점까지 일일이 코치하고 있다. 이런 진정한 멘토가 없다.


'전문가를 위한 C++'는 이미 고급 이상의 #전문가 수준이라면, 새롭게 도입되는 C++ 기술을 전반적으로 살펴보는데, 좋을 것이고, 중급자에게는 보다 탄탄한 실력을 쌓고, 폭넓은 시각을 가지는 데 도움이 될 것이다. 입문자 경우 이 책이 다소 어려울 수 있으나, 다른 책과 함께 참고해서 진도를 나간다면, 보다 빠른 기술 습득과 함께 중상급 이상의 프로그래머가 어떻게 코딩하고, 프로그램을 개선해 나가는지 작업 모습을 엿볼 수 있는 좋은 기회가 될 것이다.


'전문가를 위한 C++'에 어울리는 단어는 딱 명불허전이라 생각된다. 좋은 내용을 담고 있다 보니, 개정5판이 나올 정도로 오랜 기간 많은 프로그래머의 사랑을 받았을 것이다. 깊이 있는 내용과 각종 조언을 담은 이만한 C++ 종합서는 드물 것이다. 책을 두고 가성비를 논하는 건 이상할 수도 있으나, 나에게 있어 이 책의 가성비는 극상으로 느껴진다. 자신의 C++ 실력을 한 단계, 두 단계 발돋움하기 진짜 좋은 책이다.


댓글(0) 먼댓글(0) 좋아요(1)
좋아요
북마크하기찜하기 thankstoThanksTo