이미 소장하고 있다면 판매해 보세요.
1장. 기초 쌓기
1.1 소개 1.2 프로그램 1.3 함수 1.4 타입과 변수, 산술 연산 1.5 범위와 수명 1.6 상수 1.7 포인터, 배열, 참조 1.8 테스트 1.9 하드웨어와의 매핑 1.10 조언 2장. 사용자 정의 타입 2.1 소개 2.2 구조체 2.3 클래스 2.4 열거 2.5 공용체 2.6 조언 3장 모듈성 3.1 소개 3.2 분리 컴파일 3.3 네임스페이스 3.4 함수 인수와 반환값 3.5 조언 4장. 오류 처리 4.1 소개 4.2 예외 4.3 불변 4.4 오류 처리 대안 4.5 어설션 4.6 조언 5장. 클래스 5.1 소개 5.2 구체 타입 5.3 추상 타입 5.4 가상 함수 5.5 클래스 계층 구조 5.6 조언 6장. 필수 연산 6.1 소개 6.2 복사와 이동 6.3 자원 관리 6.4 연산자 오버로딩 6.5 전통적 연산 6.6 사용자 정의 리터럴 6.7 조언 7장. 템플릿 7.1 소개 7.2 매개변수화 타입 7.3 매개변수화 연산 7.4 템플릿 메커니즘 7.5 조언 8장. 콘셉트와 제네릭 프로그래밍 8.1 소개 8.2 콘셉트 8.3 제네릭 프로그래밍 8.4 가변 인자 템플릿 8.5 템플릿 컴파일 모델 8.6 조언 9장. 라이브러리 훑어보기 9.1 소개 9.2 표준 라이브러리 컴포넌트 9.3 표준 라이브러리 구성 9.4 조언 10장. 문자열과 정규식 10.1 소개 10.2 문자열 10.3 문자열 뷰 10.4 정규식 10.5 조언 11장. 입력과 출력 11.1 소개 11.2 출력 11.3 입력 11.4 I/O 상태 11.5 사용자 정의 타입의 I/O 11.6 출력 포맷팅 11.7 스트림 11.8 C 스타일 I/O 11.9 파일 시스템 11.10 조언 12장. 컨테이너 12.1 소개 12.2 vector 12.3 list 12.4 forward_list 12.5 map 12.6 unordered_map 12.7 할당자 12.8 컨테이너 훑어보기 12.9 조언 13장. 알고리듬 13.1 소개 13.2 반복자 사용 13.3 반복자 타입 13.4 프레디킷 사용 13.5 알고리듬 개요 13.6 병렬 알고리듬 13.7 조언 14장. 범위 14.1 소개 14.2 뷰 14.3 생성자 14.4 파이프라인 14.5 콘셉트 개요 14.6 조언 15장. 포인터와 컨테이너 15.1 소개 15.2 포인터 15.3 컨테이너 15.4 대안 15.5 조언 16장. 유틸리티 16.1 소개 16.2 시간 16.3 함수 조정 16.4 타입 함수 16.5 source_location 16.6 move()와 forward() 16.7 비트 조작 16.8 프로그램 종료 16.9 조언 17장. 수 17.1 소개 17.2 수학 함수 17.3 수 알고리듬 17.4 복소수 17.5 난수 17.6 벡터 산술 17.7 수 제약 17.8 타입 에일리어스 17.9 수학 상수 17.10 조언 18장. 동시 실행 18.1 소개 18.2 태스크와 스레드 18.3 데이터 공유 18.4 이벤트 대기 18.5 태스크 커뮤니케이션 18.6 코루틴 18.7 조언 19장. 역사적 배경과 호환성 19.1 역사 19.2 C++ 기능 진화 19.3 C/C++ 호환성 19.4 참고문헌 19.5 조언 부록. std 모듈 |
저비야네 스트롭스트룹
관심작가 알림신청Bjarne Stroustrup
역심지현
관심작가 알림신청심지현의 다른 상품
◈ 지은이의 말 ◈
C++가 완전히 달라졌다. C++98이나 C++11에 비해 아이디어를 더 명쾌하고 간단하게 그리고 직관적으로 구현해낼 수 있게 됐다. 컴파일러도 더 빠르고 더 정확하게 결과 프로그램을 생성해낸다. 이 책은 현재 ISO C++ 표준인 C++20 정의를 기준으로 삼아 C++ 주요 공급자가 구현한 C++를 전반적으로 살펴본다. 또한 C++23까지 표준으로 채택될 예정은 없으나 빈번하게 쓰는 라이브러리 컴포넌트도 소개한다. 다른 최신 언어와 마찬가지로 C++ 역시 규모가 매우 크므로 효과적으로 사용하기 위해서는 아주 다양한 라이브러리가 필요하다. 이 얇은 책은 이미 C++에 익숙한 프로그래머가 모던 C++ 구성 요소를 배우기에 알맞다. 주요 언어 기능을 대부분 소개하며 주요 표준 라이브러리 컴포넌트도 다룬다. 하루 이틀이면 읽겠으나 훌륭한 C++ 코드를 작성하기에는 턱없이 부족하다. 완벽하게 설명하기보다는 개략적인 내용과 꼭 필요한 예제만을 제공해 프로그래머에게 시작점을 제공하고자 한다. 이 책은 프로그래밍 경험이 충분하다고 가정한다. 아니라면 『Programming: Principles and Practice Using C++, Second edition 한국어판』(에이콘, 2015) 같은 책부터 읽어보기 바란다. 프로그래밍 경험이 있더라도 사용했던 언어나 개발했던 애플리케이션이 이 책에서 소개할 C++ 방식과 상당히 다를 수 있다. 코펜하겐이나 뉴욕 같은 도시를 관광한다고 해보자. 단체 여행이라면 단 몇 시간 만에 도시의 주요 관광지를 돌아다니며 뒷이야기를 들은 후 다음 장소까지 추천받는다. 이렇게 돌아다녀서는 그 도시에 대해 전혀 알 수 없다. 보고 들은 것이 오롯이 내 것이 되지 않는다. 어떤 이야기는 너무 기이해서 아예 믿어지지도 않는다. 그 도시의 삶을 지배하는 형식적 규칙과 비형식적 규칙을 도무지 알 도리가 없다. 제대로 알려면 몇 년은 살아야 한다. 하지만 약간의 운이 따라 준다면 전체적인 설명을 간략하게 듣게 될지도 모른다. 그럼 그 도시의 무엇이 특별한지, 어떤 부분이 흥미로운지 알게 된다. 이렇게 투어를 마치면 그제서야 진정한 탐험이 시작된다. 이 책에서 제공할 투어는 객체지향과 제네릭 프로그래밍 같은 프로그래밍 스타일을 지원하는 C++ 언어 기능을 소개한다. 언어 기능마다 매번 자세한 참조 매뉴얼을 제공하진 않는다. 훌륭한 교재가 늘 그러하듯이 되도록이면 기능을 사용하기 전에 설명부터 하겠지만 간혹 불가능할 수 있고 모든 독자가 책을 순차적으로 읽지도 않는다. 독자가 어느 정도 기술적 숙련도를 갖췄다고 가정하겠다. 그러니 필요할 때마다 교차 참조나 색인을 활용하기 바란다. 같은 맥락에서 이 투어는 철저한 설명 대신 예제 관점에서 표준 라이브러리를 설명한다. 필요하다면 자료를 추가로 찾아보자. ISO 표준에서 제공하는 기능은 C++ 에코시스템의 극히 일부다(예를 들어 라이브러리, 빌드 시스템, 분석 도구, 개발 환경 등). (품질은 제각각이지만) 온라인상에는 수많은 자료가 존재한다. CppCon이나 Meeting C++ 같은 콘퍼런스에서 어렵지 않게 유용한 튜토리얼과 소개 동영상을 찾을 수 있다. ISO C++ 표준에서 제공하는 언어와 라이브러리를 기술적으로 자세히 살피려면 Cppreference를 읽어보자. 표준 라이브러리 함수나 클래스가 나올 때 정의를 찾아보기 쉽고, 설명서를 읽다 보면 관련 기능이 많이 나온다. 이 투어는 C++를 층층이 쌓인 케이크 대신 통합된 전체로 바라본다. 그래서 C나 C++98, 혹은 그 이후의 ISO 표준에 소개된 언어 기능은 거의 다루지 않는다. 이러한 정보는 19장에 나온다(역사적 배경과 호환성). 목표는 최대한 기초에 집중하면서 간략하게 설명하는 것이지만 모듈(3.2.2절), 콘셉트(8.2절), 코루틴(18.6절) 같은 새로운 기능을 신나게 소개하고 싶은 유혹을 완전히 떨치지는 못했다. 최신 개발 방식을 따르려는 시도 역시 과거의 C++ 버전에 익숙한 많은 독자의 호기심을 충족시킬 것이다. ◈ 옮긴이의 말 ◈ 프로그래밍 언어는 끝을 모르고 진화한다. 특히 C++처럼 거대한 언어는 그 속도와 규모를 따라잡기가 결코 쉽지 않다. 바쁜 일상 속에서 프로그래머는 새로 나온 버전과 기능을 익히느라 늘 고달프다. 이러한 고민을 들어주기라도 하듯이 C++의 창시자 비야네 스트롭스트룹은 이 책을 통해 변화하는 C++ 버전 속에서 어떤 점을 꼭 알고 넘어가야 하는지 간결하고 정확하게 짚어준다. 이 책 한 권으로 C++을 완벽히 숙달할 순 없어도 최소한 어디서부터 시작해야 하는지 알 수 있다. 위에 인용한 비야네 스트롭스트룹의 말처럼 간단하게 끝낼 일을 굳이 어렵게 돌아갈 필요는 없다. 저자는 단순히 기능을 나열하는 데서 멈추지 않는다. 여러 가지 개념을 연계하고, 어떤 상황에서 어떤 요소가 어떻게 쓰이는지 이해하기 쉬운 예제를 들어 설명한다. 적재적소에서 알맞은 표준 라이브러리를 소개하고, 참고하면 좋을 내용도 빠뜨리지 않는다. 독자라면 아무리 좋은 기능이라도 어떻게 조합하고 활용하느냐가 프로그램의 품질을 좌우한다는 사실을 익히 알고 있을 것이다. 훌륭한 유스 케이스를 많이 알아둘수록 코드 수준은 높아지기 마련이니 저자가 고심해 만든 예제를 가볍게 지나치지 말자. C++는 C++20이 등장하며 큰 변화를 맞이했다. 무엇보다 사용자의 의도를 보다 직관적으로 반영할 수 있는 여러 요소가 대거 추가됐다. 모듈, 콘셉트, 코루틴이 대표적이다. 저자는 C++를 구성하는 기본 요소인 타입, 클래스, 연산, 템플릿, 컨테이너, 예외, 입출력 등을 각 장의 주제로 삼아 기초를 탄탄히 세움과 동시에 C++에 새로 추가된 요소들을 제네릭 프로그래밍과 협력적 멀티태스킹 같은 최신 개발 방식과 맞물려 설명한다. C++20을 기준으로 삼았으나 C++23에 담길 내용도 넌지시 내비친다. C++ 위원회에서 활동했던 경험을 바탕으로 현재 진행 중인 프로젝트를 간간이 언급하며 앞으로를 대비할 수 있게 돕는다. 시간이 촉박하다면 일단 차례부터 읽어보자. 한눈에 쉽게 들어오도록 구성된 차례가 원하는 방향과 목적지로 안내할 것이다. 저자가 아무 까닭 없이 제목을 『Tour of C++』로 지었을 리 없다. C++라는 세계를 즐겁게 여행하며 좀 더 쉽게 C++를 익히는 계기가 되기를 바란다. |