Accelerated c++
이 글을 보는 모든 분들께 그리고 이렇게 리뷰를 할 수 있게 제공해주신 한빛미디어 관계자분께도
진심으로 감사의 인사를 드립니다.
이번에 리뷰할 서적은 핵! 어렵다고 생각하는 C++이다.
음! 그래도 도전!
표지는 너무 이쁘다.
C++를 C++답게 배우는 16가지 방법!
하지만 이쁜 표지만큼 속 내용도 재미있고 흥미롭게 다가올까!?
우리는 C++이 매우 어려운 언어임을 익히 들었기 때문에
사실, 이 서적을 보는 많은 분들께서 두려움 반 호기심 반으로 시작하실 것 같다.
그래도 열어보자.
자! 첫날부터 가보자.
당연히 3~4일차까지는 항상 그랬듯이 문제가 없을 것이다.
그 이후부터 프로젝트에 어떻게 적용할까 고민하면서 보는 것이 습관이 되어 있으므로 조금 머리가 아플 것이라 생각한다.
이번 서적은 C++라서 더욱 그럴 것 같다!
생각보다 구조가 신선하다.
1장부터 바로 소스를 적는다. 이 언어가 어떤 언어인지 역사는 어떠했는지 이런 것은 나오지 않는다.
백문의 불여일타의 실현인가!
아주 쏙 마음에 든다!
다른 서적처럼 핵심정리와 연습문제는 당연히 있다. 그러나 소스부터 기술하고 그 다음에 설명하는 방식은 국내 서적이랑 차이점이 있어 보인다. 아무래도 많은 설명 후에 소스를 적고 다시 설명하고 이런 패턴에 익숙해지다보니 낯설기도 하다.
그래도 신선하고 좋았다.
프로그래밍을 조금이라도 해보신 분이라면 첫 날은 무리없이 쭉쭉 진도가 가능하다.
정말 마음에 들었던 것은 문제를 제시하고 해결 과정을 보여주며 완성한다는 것이다.
그래서 챕터마다 작은 프로그램 하나씩 완성하는 것이 목표다.
기본적인 using 사용법, 반복문, 제어문 등이 있는 챕터라 크게 어려운 내용은 없지만, 빠르게 읽어나갈 때 서적의 구조라던지 작가가 전달하려는 것이 무엇인가 정확히 캐치하려고 노력한다.
데이터 일괄처리 챕터 이후에는 지금까지 들어보지 못했던 생소한 라이브러리, 벡터 타입 등 알아야 될 단어가 꽤 있다.
컨테이너, 템플릿 클래스 등도 마찬가지다. 벌써부터 집중해야 될 챕터가 온 것 같다.
챕터4부터는 상당히 중요하다.
연산 구조화 시키는 방법, 함수 사용법, 데이터 구조화, 프로그램 통합, 수정까지. 절대 많은 양의 코드는 아니지만, 반드시 적어보고 이해해야 될 것으로 생각한다.
여기서부턴 더욱 심화된 라이브러리 사용법과 함수 사용법에 대하여 익힐 수 있다.
정신차려야되는 챕터다!
순차, 임의접근, 반복자의 대한 개념도 나오고 벡터, 리스트 사용법과 둘의 차이점도 나온다.
6챕터에선 라이브러리가 표준 알고리즘을 제공할 때 공통의 인터페이스를 활용하는 방법을 설명한다.
성적 산출 프로그램을 작성하는데, 꼭 집어 필요한 핵심에 대하여 잘 나와있다.
스토리지 클래스 지정자 사용 방식, URL 함수 작성 등 재미있는 부분도 상당히 많다.
효율적인 성능을 위한 연관 컨테이너의 사용, 재귀호출은 더할나위없이 중요한 개념이라고 본다.
7장 반드시 정독!
그리고 작성해고 완성해보자!
제네릭 함수는 쭉 한번 보길 바란다.
강조하고 싶은 챕터는 9, 10 챕터다. 물론 제네릭 함수도 꺼낼 말이 많지만, 사서 보길 바란다!
정말로 구매해서 봐야 뼈를 맞는다. 뼈를 맞을수록 성장한다!
너무 중요한 개념이 나온다. 사용자 정의 타입을 구조체나 클래스로 정의하는 법, 멤버 함수를 정의하는 법.
그리고 생성자, 생성자 이니셜라이저다.
10챕터에 나오는 포인터, 함수포인터, 배열, 인덱싱 등 C언어 프로그래밍을 조금이라도 해본 분이라면 이 단어를 들어봤을 것이다.
파일 입출력, 메모리 관리에 대한 사항도 나온다. 주로 문법적인 요소가 많으므로 주의 깊게, 그리고 정독해서 읽어보자.
뇌가 하늘로 솟는 기분일 것이다.
지금까지 코드 작성은 기본 틀만 잡았다면, 이제 객체 복사, 할당, 소멸하는 과정을 조금 더 구체적으로 알아볼 수 있는 챕터다.
코드 작성을 하는 프로그래머가 객체의 동작을 컨트롤 하는 방법이라고 나와있는데 이건 어찌보면 당연한 것이다!
공부한 내용의 핵심을 보자면, 다음과 같다.
일반적으로 클래스는 객체의 생성, 복사, 할당, 소멸 상황에서 발생하는 일을 제어한다.
생성자는 객체의 생성이나 복사가 일어날 때 부수적으로 발생하는 결과로 호출된다.
할당 연산자는 할당을 포함하는 표현식에서 호출되고 소멸자는 객체가 소멸되거나 범위를 벗어날 때 자동으로 실행된다.
생서자에서 자원을 할당하는 클래스는 항상 변함 없이 복사 생성자, 할당 연산자, 소멸자를 정의해야 한다.
할당 연산자를 작성할 때는 반드시 자가 할당 여부를 확인해야 하고 기본 할당 연산자와의 일관성을 유지하려면 왼쪽 피연산자의 참조를 반환하는 것이 좋다.
너무 좋은 내용이 많이 있다. 이제부터 시작인가 보다.
13챕터에서는 상속과 동적 바인딩에 대한 내용이 주를 이룬다.
자바 또는 객체지향 언어를 사용해본 분은 상속과 동적 바인딩에 대해서 들어본 적이 있거나 알고 있을 것이다.
그러나 이 단어를 처음 들어봤다면, 몇번씩 읽어야 되는 챕터다. 그만큼 중요하다.
포인터나 참조를 이용해 가상 함수를 호출할 때 적용되는 동적 바인딩, 오버로딩, 오버라이딩, 가상 소멸자, 가상 함수, 정적 멤버!
나열할 수 없을 만큼 중요 포인트가 많이 집결되어 있다.
꼭 정독하자!
넓고 넓은 지식을 익히는 것도 중요하지만 프로그래밍 공부는 깊게 그리고 확실히 알 수 있을 때까지 학습하는 것이 중요하다.
그래서 서적이 베이스를 잡고 학습하는데 큰 지장은 없지만, 호수를 봤으면 바다를 보고 싶은 것이 사람 마음이다!
서적은 매우 중요하다. 그러나, 서적에서 본 세상보다 더 큰 세상이 인터넷에 많이 있다.
이 정보를 잘 활용할 줄 아는 스킬도 필요하고 커뮤니티 활동, 그리고 사이드 프로젝트로 정파와 사파의 길도 각각 연구해보는 것도 좋은 방법이라고 생각한다.
그리고 언제나 옆에는 서적이 수북히 쌓여 참고 서적으로 두면 좋다.
한번 봤던 내용은 다시 써먹을 수 있게 잘 표기하고 정리해두는 것도 추천한다.
이 서적에서는 다음 학습 단계를 여러 서적을 추천하고 사이트도 친절하게 설명해 준다.
정말 지적 호기심이 왕성하다면, 나머지는 시간 문제다.
인생 뭐 있을까? 도전이다!
신기하게도
C++ 프로젝트를 개인 사이드로 해본 적이 없는 것 같다.
아니 있어도 그건 기억하지 못하거나 낮은 레벨에서의 경험이었을 것이다.
그리고 사실 C++는 하고 싶은 생각도 별로 없었다.
그러나
이 리뷰가 참 많은 도움이 되었다.
작가의 크나큰 노력이 보인다.
많은 라이브러리를 소개하며 정말 생산성 높은 프로그램을 작성할 수 있게
차근히 설명해 준 것이 또 나의 지적 호기심을 일깨워 주었다.
물 맛을 봤으니 정말 바다로 나가고 싶은 생각이 든다!
C++ 서적 중에서 동기부여가 되는 서적 중 하나다.
매우 추천한다.
★★★★
리뷰를 마치며!