[책] C++ 클래스와 상속 외 1권

WRITING SOLID CODE

이전부터 명성만 듣다가 갑자기 눈에 띄어 서점에서 집어왔습니다.?명불허전. 역시 대단하군요. 이 ?책의 배경은 무려 도스와 IBM-PC가 주류이전인 시대입니다.

선구자적인 철학과 개념으로 가득한 프로그래밍의 교과서와도 같은 내용을 담고 있습니다. 요컨데 어느 날 갑자기 켄트백이 TDD를 생각해낸 게 아닙니다. assert는 이미 80년대 개발자들에겐 많이 사용되던 스킬로 전처리가 지원되는 언어라면 거의 이 코드가 안보이는 언어가 없었습니다.

어째서 디버그버전의 검사가 릴리즈버전과 다른지, 어떻게 디버그버전을 보다 버그없이 만들어낼 것인가에 대한 여러 가지 고민은 현대의 개발언어에서도 똑같이 통용됩니다.

제가 주로 사용하는 기본 개발 철학이 격리인데 일단 이 책 제목 자체가 solid를 포함하여 저와는 아주 궁합이 잘 맞는군요.

최근에 추천하는 디버깅 셋트 문고 시리즈에 포함시켜야겠습니다.

제가 추천해드리는 디버깅마스터 코스는 다음과 같습니다(그러고보니 회사에서만 가르치고 한 번도 블로그에서 언급한 적이 없었습니다 ^^)

맨먼스미신 → WRITING SOLID CODE → 켄트백의 테스트주도개발 → Debug It → 프로그램은 왜 실패하는가?

개념 상의 위치를 보건데 저 자리에 이 책이 들어가는군요. 참 왜 이렇게 고대인(?)들은 위대한지 모르겠습니다. 미천한 후손들은 그저 노가다나 할 뿐.

C++ 클래스와 상속

야자와 아저씨의 모든 저서는 항상 훌륭합니다. How to 시리즈로 대표되는 그의 시리즈 저서는 공통된 특징을 지니면서도 명쾌한 문체로 일관성있는 철학을 전달합니다.

국내에는 성안당이 성공과 실패를 결정하는 1% 시리즈로 역서를 출간하고 있습니다(개인적으로 왜 이런 제목을 쓴 건지 이해가 되지만 용서는 안되는 심정이랄까요^^)

일단 야자와 아저씨가 How to에서 깔고 있는 기초적인 철학은 컴터란 물리적인 하드웨어적인 측면하에서 작동하기 때문에 프로그래밍을 작성하거나 개념적인 이론을 다룰 때 반드시 그 하부구조를 이해해야 바른 결론에 도달할 수 있다는 것입니다.

당연하다고요? 당연하다면 당연하지만 전 대부분의 책이 이러한 당연함에 수렴하지 않고 응용층을 이용해 더욱 응용된 코드로 유인하며 무개념만 양산하는 샘플코드로 가득히 채우는 책들만 만나게 됩니다.

따라서 야자와사장님이 외치는 How to는 How to Use라는 답변이 아니라 How to Work? 라는 질문입니다.

책도 이에 충실하게 집필되어 그것이 그렇게 움직이는 원리를 보다 하부구조부터 알기 쉽게 차근차근 설명해갑니다.

또 삽소리를 많이 했군요 ^^;

암튼 간에 이 책은 보통 c++책보다 훨씬 재밌습니다. 전 비얀스트롭책이 아니라 프라이머스 시리즈로 c++을 처음에 배웠습니다. 그 이후 오랜 시간 후에 더욱 제게 영향을 끼친 책은 빅c++이었습니다. 하지만 c++의 역사적인 사실은 결국 비얀스트롭책에 자세하게 있어서 괜히 안보고 버텼다란 후회도 한 적이 있었습니다.

하고 싶은 말이 뭐냐면 야자와사장님의 책은 처음 c++클래스가 어떻게 해서 만들어진 건지 역사적인 사실을 매우 자세하게 코드로 설명해줍니다.

구조체에서 구조체포인터가 생겨나고 구조체 포인터를 함수에 보내기 시작하면서 OOP개념을 도입하는 과정이 어떻게 일어나는지, 결과적으로 구조체의 포인터를 공유하는 함수가 탄생하고 컴파일러 수준에서 함수와 구조체를 바인딩하게 되는 모든 과정을 상세히 설명합니다.

물론 그 이후의 자세한 c++클래스의 스펙도 하나하나 알기 쉽게 설명하는 센스는 여전합니다.

c++의 클래스는 역사적으로 가장 오래된 oop의 아버지입니다.

단지 c++의 클래스를 배우는 문제를 넘어 클래스의 본래 의미를 고찰하는 시간을 갖는 것으로서도 이 책은 충분한 매력이 넘칩니다.

그나저나 주문한 원서 2권은 아직 안왔군요. 대략 도착하면 합쳐서 리뷰를 쓰려고 했는데 곧 하나 더 쓰게 될 듯.

%d 블로거가 이것을 좋아합니다: