메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

이 책은 너무 두꺼워서 무섭기도 해다. 그러나 훌륭한 작품이기도 하다.

jungminl***

|

2023-04-23

전문가를 위한 C++(개정5판)

더 쉽게, 더 빠르게, 더 깔끔하게! 프로그래머가 알아야 할 C++와 C++20의 모든 것

  • 저자 : 마크 그레고리
  • 번역 : 남기혁
  • 출간 : 2023-03-30

프로그래밍 전공한지가 40년째다. 간만에 프로그래 도서를 보니 감회가 새롭다.

특히 C언어/C++언어는 직접 배워보지를 못하고 독학으로 공부를 해서 그런디 더욱 더 떨림이 컸다.

1979년, 덴마크의 컴퓨터 과학자 비야네 스트롭스트룹은 C++의 선구자적 언어인 "C with Classes" 작업에 착수하였다. 새로운 언어를 만들려는 의의는 박사 논문을 위한 스트롭스트룹의 프로그래밍 경험에서 비롯되었다.

C++는 덴마크 출신 컴퓨터 과학자 비야네 스트로스트룹(Bjarne Stroustrup)가 C언어를 바탕으로 만들었다. C 계열 언어에서 "++"라는 것은 1을 더해서 원래 변수에 대입하라는 뜻이다.

C 언어에 객체지향 프로그래밍을 지원하기 위한 내용이 덧붙여진 것이라고 할 수도 있지만, 애초부터 객체지향을 염두에 두고 만들어진 언어와는 다르게, 단지 더 좋은 C 언어로서 수속형 언어로 취급하기도 한다. 초기의 C++은 C 위에 놓인 트랜스레이터로 구현되었다. 즉, C++ 프로그램을 일단 C 프로그램으로 변환하고 나서 C 컴파일러로 컴파일하는 식이었고 따라서 C 언어에 대해 상위 호환성을 갖는 언어였다.

C++는 객체 지향 프로그래밍을 지원하지만, C++의 객체지향은 다른 객체지향 언어에서와는 성격이 좀 다르다. 대부분의 객체지향 언어에서는 많은 부분을 런타임에 처리하며 메모리를 자동으로 관리하는 반면, C++에서는 최대한 많은 것을 컴파일 타임에 처리하는 것을 지향하며 메모리 등을 프로그래머가 직접 관리하게 하기 때문에 전반적인 클래스 디자인 자체가 상당한 차이를 보이게 된다. Java 등의 다른 객체지향 언어에서와 같은 방식으로 C++ 클래스를 디자인하면 거의 틀림없이 컴파일이 제대로 안 되거나 메모리 문제가 발생한다. 특히 가비지 컬렉션을 지원하는 Java로 입문하여 C++로 갈아타는 테크를 탄 학생이라면 처음에는 메모리가 줄줄 새는 프로그램을 만들게 될 것이다. 반면 C++ 스타일을 숙지하여 다른 객체지향 언어에서 프로그래밍을 하는 경우 특별히 안 될 것은 없지만, 해당 언어의 스타일로 작성한 원어민 코드에 비해 시간이 많이 걸리고 너저분해 보이며 클래스 구조가 경직되어 수정하기 어려워진다. 소멸자가 호출되지 않는 등의 차이점은 있지만 심각한 문제가 되는 경우는 많지 않다.

 

 

2020년에 C++20이 발표되면서 2023년 기준으로 프로그래밍 언어 수위에서 4위 안에 들어 있을 정도로 40년 넘게 굳건한 입지를 자랑하고 있다.

 

일반적인 책자를 보면 프로그래밍 언어를 소개할 때에는 실전 활용법부터 언어 문법 설명에 치우치기 쉽다. 장마다 언어의 주요 기능을 소개한 뒤 문법을 예제와 함게 소개하는 책은 많다.

그러나 이책은 다르게 접근하고 있다. 구체적인 문맥없이 언어의 기본 구성 요소만 나열하지 않고 실전에서 C++를 사용하는 관점에서 소개를 하고 있다는 점이 다르다.

널리 알려져 있지 않지만 업무 흐름을 크게 높이는 기능도 소개하고 초보 프로그래머와 전문 프로그래머를 구분하는 고급 프로그래밍 기법도 소개를 하고 있어서 제법 흥미롭다.

 

이책은 코드 품질과 프로그래밍 효율을 동시에 향상시킬 수 있는 C++ 프로그래밍 기법을 소개하고 있다. C++20 주터 새로 추가된 기능을 이 책 전반에 걸쳐서 소개하고 있다.

 

이 책은 산순히 언어의 문법과 기능만 소개하는 데 머물지 않고 프로그래밍 방법론, 재사용 가능한 패턴, 바람직한 프로그래밍 스타일도 함게 소개를 하고 있다. 코드를 설계하고 작성하는 문제부터 디버깅하고 협업하는 단계에 이르는 전반적인 소프트웨어 개발 프로세스에 따라 설명하고 있다. 따라서 C++ 언어 자체의 기능과 특이한 점을 마스털 할 수 있을 뿐만 아니라 대규모 소프트웨어 개발을 위한 강렬한 기법도 익힐 수 있다.

실제로 작동되는 예제 없이 C++의 문법만 배우면 굉장히 위험해질 수 있다. 전문 C++ 프로그래머라면 단순히 C++ 문법을 아는데 그치지 않고 C++를 올바르게 사용할 줄도 알아야 한다. 이 책을 제대로 읽고 학습하고 연습하였다면 C++ 실력을 전문 프로그래머 수준으로 분명히 높일 수 있다.

 

이 책은 다음과 같이 구성되어 있다.

C++ 기초를 다지는 초단기 속성 코스부터 시작해서 좀 더 복잡한 내용으로 이어진다.

설계의 중요성, 객체지향 벙법론, 코드 재사용의 중요성 등을 설명하고 있다.

전문가처럼 C++를 다르는 기법 또한 소개하고 있어서 유용하게 학습이 가능하다.

또한 C++를 최대한 활용하는 방법도 제시하고 있다.

뒷편에서는 엔터프라이즈급 소프트웨어를 작성하는 방법을 소개하고 최근 소프트웨어 회사에서 흔히 사용하는 소프트웨어 공학기법도 소개하고 있다. 효율적인 C++ 코드를 작성하는 방법, 단위 테스트나 회귀 테스트를 비록한 다양한 테스트 방법론과 C++ 프로그램 디버깅 기법도 설명하고 있다.

이 책은 C++ 클래스 , 메서드, 함수를 빠짐업시 소개하는 레퍼런스가 아닌점을 알아야 한다.

 

Visual Studio Community.png

 

Visual Studio Installer.png

 

우리는 C++20을 학습하기 위해서 준비해야 할 것이 있다.

1. 컴퓨터 한대

2. C++ 컴파일러(마음대로 골라서 사용해도 되지만, 마이크로소프트 비주얼 스튜디오 커뮤니티 에디션을 무료로 사용할 수 있다.)

Visual Studio Community 사이트 > https://visualstudio.microsoft.com/ko/vs/community/

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?