C++은 C언어를 기반으로 한 언어 입니다.
컴퓨터는 전류의 흐름을 인식하여 전류가 흐를때는 1, 흐르지 않을때는 0 으로 인식하여 모든 동작이 전류의 흐름을 이용하여 어떤 논리적인 흐름을 인식하는 기기 입니다.
이러한 기기를 움직이기 위해서는 사람은 이 기계에게 로직을 심어 주어야 하는데 그것이 프로그램입니다.
이러한 로직을 0과 1을 이용해서 심어주는 것은 사람에게는 너무 힘든일이었습니다.
하지만 이러한 일들을 대신 해 주는 일을 C언어라는 문법을 개발 하면서 많은 로직이 수월해 졌습니다.
결국은 사람이 가독성 있는 프로그래밍 언어인 C언어로 프로그램 구현 후 컴파일을 하게 되면 기계가 인식 할 수 있는 0과 1로 변환을 해 주는 컴파일러를 만든 것이 획기적인 프로그램의 발전을 이룬것이 아닐까 생각합니다.
그만큼 C언어의 역사는 깊고 또한 기계 깊숙히 까지 제어 할 수 있는 문법중에 하나 입니다.
이러한 C언어의 단점은 사람사는 세계와는 약간 다르다는 것에 있었습니다.
예를 들면 강아지와 고양이가 만나서 서로 아웅다웅 하면서 싸우고 있을때...
C언어에서는 강아지를 한번 호출해서 멍멍 호출을 하고 그 멍멍이 끝나면 다시 고양이를 한번 호출해서 야옹야옹을 말하게 하는 이차원적인 사고를 바탕으로 한 문법이었습니다.
이러한 언어는 기계의 속도가 빠르지 않을때는 최선의 방법이었을 것입니다.
하지만 기계의 속도가 빨라지면서...
실제 세상에 있는 객체를 프로그래밍화 할 수 있는 언어들이 나왔는데...
그 중에 하나가 C언어를 기반으로 한 C++ 언어 입니다.
객체란 위에서 설명을 한 강아지와 고양이를 별도로 하나의 강아지/하나의 고양이로 만들어 두고...
필요할때 생성을 해서 짖어 라고 시킨다든가 하는 3차원적인 사고 방식을 프로그래밍화 할 수 있는 것입니다.
이렇게 객체지향 언어들의 특징은 실 생활에서 필요한 로직들을 프로그래밍화 할때 생각하기가 편하다는 것입니다.
전문가를 위한 C++은 이러한 객체지향 언어인 C++의 모든것이라고 할 수 있습니다.
처음 이책을 만났을때 다른 C++ 책과 많이 다를게 뭐가 있을까 라는 생각을 많이 했었는데요.
처음 이책을 만나면서 그 두께에 한번 깜짝 놀랄 수 밖에 없었습니다.
제가 보고 있는 C++STL 책의 3배 두께...
책의 페이지는 무려 1500페이지
하도 궁금해서 무게를 재어 봤더니 2KG이 넘는 그 두께감...
예전에 비주얼 베이직이나 델파이등과 같은 프로그래밍 언어를 배울때 가끔 이것보다 더 두꺼운 책을 구매해서 보았던것 같네요.
그 책들은 거의 매뉴얼 + 문법으로 언어들을 소개해준 책들이었는데요.
이 책도 결국은 그러한 매뉴얼 + 문법으로 이루어져 있을것이라 판단을 했는데요.
C++ 언어의 어떤 부분에서 이렇게 두껍게 출판을 할 수 있을까 하면서 열어본 내용은 제가 생각했던 그 이상이었다는 것을 알게 되었습니다.
이 책은 C++ 문법 책이라기 보다는
C++ 문법은 기본적으로 학습한 분들이 한단계 업그레이드 시키기 위한 방법의 책이라고 생각하시면 될것 같아요.
이 책에서는 어떤 툴에 대한 매뉴얼은 찾아 볼 수가 없었고...
순수하게 C++을 다루는 법에 대해 설명을 하고 있었는데요.
제가 프로그램을 시작하고 업무 프로그램을 구현하면서 한참 지나고 나서 깨우친 느낌을 이 책에서 전달을 해주고 있더라구요.
한가지 예를 들면 네이밍에 관한 문제였는데요.
프로젝트를 수행하다 보면 여러 사람이 한가지 프로젝트를 수행함에 있어서 각기 다른 프로그램을 만들어서 각각의 단위테스트 완료 후에 한가지 프로젝트를 위해서 합칠때 네이밍 형태가 너무 다르다면 정말 헷갈릴수가 있는데요.
이러한 부분때문에 SI 프로젝트를 수행할때 PM은 먼저 함수의 네이밍 방법, 변수의 네이밍 방법등을 먼저 정의하고 그 방법에 맞춰서 프로젝트를 수행하게 되는데요.
실제로 이러한 네이밍은 단순한 예에 불과하지만...
이 책에서는 이렇게 몇년간의 프로젝트를 수행하면서 깨달았던 문제들에 대해서...
어떤 방법으로 프로그램을 구현해야 더 좋은지를 안내해 주는 안내서라고 할 수가 있습니다.
따라서 이 책은 C++을 갓 시작하는 사람이 C++을 공부하기 위한 책은 아닙니다.
오히려 갓 시작한 사람은 이 책이 독이 될 수 있는것이...
이 책은 문법에 대해서 그렇게 친절하지는 않다는 것입니다.
기본적인 문법을 알고 실무를 경험한 사람이 이 책의 도움을 받는 다면 한단계 업그레이드 될것이라 생각하는데요.
그 이유는 제가 몇년전에 프로젝트에서 메모리 누수 부분 때문에 엄청 고생을 한 적이 있는데.
이 책에서는 이러한 메모리 누수에 대한 해결책까지도 나와 있다는 것이죠...
미리 한번 이 책을 본다면 프로젝트를 바라보는 시각이 달라 질 것이라 생각하게 되네요.
이 책의 정가가 그리 저렴한 것은 아니지만...
정말 필요한 분에게는 이 책의 정가 보다 몇배의 효과가 있는 책은 아닐까 생각을 해 보게 되는데요.
이 책은 '나는 리뷰어다'에 선정이 되어서 받은 도서인데...
제가 이 리뷰어에 선정이 되지 않았다면 읽어 볼 일이 없었을텐데...
이렇게 이 책을 읽어 보게 된 일에 큰 감사의 말씀을 전하고 싶은 마음이 드네요.
제 입장에서도 이러한 책을 읽어 봄으로써 알고 있던 것은 다시 정리를 해 보는 계기가 되었고.
모르고 있던 부분에 대해서 한단계 업그레이드 되는 것을 느끼게 되었습니다.
제가 학생들을 지도하는 입장이긴 하지만 학생들을 지도 하기 위해서는 학생들 보다 더 많이 알고 있어야 하는 입장에 있다 보니 항상 공부를 해서 더 많이 알아야 하는데.
이 책에서는 C++을 사용하는 방법과 기법들에 대해서 더욱더 풍성한 정보를 제공해 주는 것은 아닌가 하는 생각이 들었네요.
제가 두번째 사진에서 뇌를 자극하는 C++STL 책을 사진을 찍어 보았는데요.
이 책을 읽으시기 전에 뇌를 자극하는 C++STL 까지는 마스터를 하고 나서 이 책을 보시는 것을 권해 드립니다.
책의 상세한 목차를 원하시는 분은
http://www.hanbit.co.kr/store/books/look.php?p_code=B3215427289
이 링크에서 확인을 해 보실 수가 있는데요.
C++을 이용한 프로젝트 매니저 또는 현재 현업에서 C++을 이용해서 프로젝트를 수행하는데 조금 더 실력을 업그레이 하시고 싶다면 이 책을 한번 읽어 보시라고 권해 드리고 싶네요.
이 책은 한빛미디어 "나는 리뷰어다" 에서 제공받았습니다.
인천 서구 원당컴퓨터 학원
'기타 > 도서리뷰' 카테고리의 다른 글
구글활용 전문가 되기 (274) | 2019.10.30 |
---|---|
빅데이터 우등생 수학 (300) | 2019.10.08 |
작은 수학자의 생각실험3 - 비밀문서의 암호를 풀어라 (12) | 2019.09.11 |
단추공- 단단히 추려낸 공식집 미적분+확률과 통계 리뷰 (4) | 2019.09.09 |
Head First Agile 개념부터 시험 대비까지 (7) | 2019.09.04 |