1. 첫번째 글
출처:
http://www.hanbit.co.kr/media/channel/view.html?cms_code=CMS7807003885&cate_cd=005
2. 두번째 글
출처:http://scienceofdata.tistory.com/entry/c-%EC%B1%85-%EC%B6%94%EC%B2%9C%ED%95%B4%EC%99%B8%EB%B2%88%EC%97%AD%EC%84%9C-%EA%B8%B0%EC%A4%80
c++ 11의 새로운 기능을 익히려고 좋은 책이 없나 인터넷을 검색하던 도중에 c++ 책 추천에 관련된 좋은 글이 있어서 짧게 남겨봅니다.
번역할때 생략한 부분도 있고 오역도 있을 수 있으니 원문을 확인하시기 바랍니다.
원문 : http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
초보
- 프로그래밍 경험이 없는 입문자
- Programming: Principle and Practice Using C++ (Bjarne Stroustrup) (C++11/C++14반영) (번역서 o) : c++ 창시자가 쓴 책, 초보자를 위한 소개서이지만 초보자만을 위한 책은 아님. 국내 번역서가 있고 역자의 번역수준도 괜찮다는 평이 있습니다.
- 프로그래밍 경험이 있는 입문자
- C++ Primer(Stanle Lippman, Sosee Lajoie, and Barbara E. Moo) (C++11 반영) (번역서 o) : c++에 대해 철두철미하게 소개한 책. 자세한 설명과 접근성이 용이한 형식으로 작성됨. 다른 언어 경험이 있는 사람들을 대상으로 함.
- A Tour of C++ (Bjarne Stroupstrup) (C++11 반영) : The Programming Language 4th ed 챕터 2-5의 확장판. 튜토리얼을 통해 표준 c++에 대한 개요를 설명. (약 180page, 14챕터로 구성), c++을 알고 있거나 다른 언어 경험이 있는 사람들을 대상으로 함
- Accelerated C++ (Andrew Koenigand barbara Moo) (C++11 반영 x) (번역서 o) : 풍부한 구성. 프로그래밍에 관한 설명보다 c++에 대한 설명을 주로 다룸. 다른 언어를 경험해본 사람들을 대상으로 구성. 매우 컴팩트한 c++ 소개.
- Thinking in C++(Bruce Eckel) (C++11 반영 x) (번역서 없는듯) : 튜토리얼 스타일의 책. 낮은 난이도로 구성되어 있음. 근데 꽤 많은 기본적인 오류가 있음.
- 훌륭한 교범
- Effective C++ (Scott Meyers) (C++11 반영 나름대로 함) (번역서 o) : C++ 개발자라만 꼭 읽어봐야 하는 책. c++에 대한 약 50가지 기억하기 쉬운 지침 소개. c++11 및 c++14에 대한 내용이 실려있기는 하나 구식이 되어버림. 최신 내용은 Effective Modern c++를 추천
- Effective Modern C++ (Scott Meyers) (C++11/C++14 반영) (번역서 o) : Effective C++의 최신 버전. C++03 -> C++11/C++14로의 전환을 목표로 쓰여진 책. 번역서는 전문 용어 번역에 대한 논란이 좀 있으나 그것만 빼면 괜찮은 수준
- Effective STL (Scott Meyers) (C++11 반영 x) (번역서 o) : Effective c++과 유사한 목표로 쓰여진 책. 표준 라이브러리 사용에 대한 지침/사용방법 소개. 규칙과 이유를 설명.
- More Effective C++ (Scott Meyers) (C++11 반영 x) (번역서 o) : Effective C++ 에서 규칙 추가. Effective C++ 보다 중요하지 않지만 알아두면 좋은 내용 소개
- Exceptional C++ (Herb Sutter) (C++11 반영 x) (번역서 o) : 자원 관리, 예외 안정성, pimpl idiom, name lookup, 좋은 클래스 디자인 및 c++ 메모리 모델을 다룸.
- More Exceptional C++ (Herb Sutter) (번역서 o, 절판) : 일반화 프로그래밍(generic programming), 최적화, 자원관리에 대한 논의가 담겨 있음. 1 책임 법칙(Single responsibility principle)과 비멤버 함수를 통해 모듈화 코드를 작성하는 아주 좋은 설명이 담겨 있음
- C++ Coding Standards (Herb Sutter and Andrei Alexandrescu) (번역서 x): 올바른, 이해하기 쉬운, 효율적인 c++ 코드를 작성하게 도와주는 101개의 규칙, 양식, 위험등에 관해 서술
- C++ Templates : The Complete Guide (David Vandevoorde and Nicolai M. Josuttis) (C++11 반영 x) : C++11 이전의 템플릿에 관한 내용 수록. 기초적인것에서부터 고급 템플릿 메타프로그래밍, 템플릿이 어떻게 동작하는지에 대한 자세한 설명, 그리고 많은 위험요소들에 대한 논의가 수록되어 있다. 2016년에 second edition이 출간될 예정이다.
- Modern C++ Design (Andrei Alexandrescu) (C++11 반영 x) (번역서 o 절판) : 고급 일반화 프로그래밍 기법에 대한 획기적인 책. 정책기반 디자인, 타입 리스트, 본질적인 프로그래밍 idioms 그리고 유용한 디자인 패턴들( factories, visitor 등)이 일반화 프로그래밍을 이용해 효율적으로, 모듈적으로, 깔끔하게 구현될 수 있는지를 설명한다.
- C++ Template Metaprogramming (David Abrahams and Aleksey Gurtovoy) ( C++11 반영 x ) (번역서 o 절판)
- C++ Concurrency In Action (Anthony Williams) (C++ 11 반영) ( 번역서 x ) : 스레드 라이브러리, atomics 라이브러리, c++ 메모리 모델, 락, 뮤텍스, 멀티스레드 어플리케이션의 디버깅과 디자인에 대한 이슈를 포함한 C++11의 concurrency 지원을 다룬 책
- Advanced C++ Metaprogramming (Davide Di Gennaro) ( C++11 반영 ) ( 번역서 x ) : pre-C++11의 템플릿 메타프로그래밍 기법 메뉴얼. 이론보다 실전사용법에 더 촛점을 둠.
- The C++ Programming Language (Bjarne Stroustrup) ( C++11 반영 ) ( 번역서 o ) : C++ 창시자가 쓴 책. C++의 핵심부터 표준 라이브러리, 프로그래밍 패러다임과 C++ 언어의 철학이 담겨져 있음. 번역서가 있으나 오타가 있다는 이야기가 있음
- C++ Standard Library Tutorial and Reference (Nicolai Josuttis) ( C++11 반영 ) ( 번역서 o ) : C++ 표준 라이브러리에 대한 소개와 레퍼런스.
- The C++ IO Streams and Locales (Angelika langer and Klaus Kreft) : 대부분의 책에서 아주 아주 조금만 다루는 부분인 streams 과 locales에 대해 다룬 책
- The C++ Standard (INCITS/ISO/IEC 14882-2011)
- Overview of the New C++ (C++11/14) (PDF only) (Scott Meyers) (C++11/14 반영) : ppt 자료이며 3일 코스로 구성되어 있음. 짧지만 질은 좋음
- CppCoreGuidlines (C++11/14/17? evolving) (Bjarne Straustrup, Herb Sutter) : C++을 잘 사용할 수 있도록하는 가이드라인. 책의 목표는 최신 C++을 효과적으로 사용할 수 있도록 사람들을 돕는 것. 이 가이드라인은 인터페이스, 자원관리, 메모리관리, 동시성과 같이 상대적으로 난이도 있는 부분에 촛점을 둠.
- The Design and Evolution of C++ (Bjarne Stroustrup) : C++이 왜 이렇게 생겼는지 알고 싶다면 일어보시라. 표준 C++ 이전의 모든것을 다룬다
- Rumination on C++ (Andrew Koenig and Barbara Moo)
- Advanced C++ Programming Styles and Idioms (James Coplien)
- Large Scale C++ Software Design (John Lakos) : C++의 큰 프로젝트 관리에 대한 테크닉을 설명. 새로운 버전이 2015년에 출간 될것으로 기대됨
- Inside the C++ Object Model (Stanley Lippman) : 가상 멤버 함수가 일반적으로 어떻게 구현되는지, 다중 상속 시나리오에서 기초 객체가 어떻게 메모리에 배치되는지, 그리고 이러한 것들이 성능에 어떻게 영향을 끼치는지 알고 싶다면 읽어보아라
3.세번째 글
출처
http://jacking.tistory.com/555
일본인 C++ 프로그래머 ‘책 벌레’님 C++ 프로그래머의 실력을 레벨로 나눈 글입니다.
일본 IT의 특성인지 좀 이해가 안 가는 부분도 있네요. Boost에 대한 것은 한국과 비슷한데 예전에 아는 분이 말하기를 선임들이 Boost를 사용하는 것을 싫어해서 사용 못한다는 이야기를 들은 적이 있는데 일본도 그런 곳이 적지 않은가 보군요.
다른 방식으로 레벨을 나눈어 본 분들은 트랙백 부탁합니다.^^
레벨0
C++ 이라는 것은 C에 괴상한 기능을 덧붙인 언어라는 것은 알고 있지만 별 이유 없이 공부할 마음이 없다. C의 무엇이 부족한지 이해가 안 간다.
레벨 1
C++에 대해서 구글링하거나 입문서를 읽거나 한다. 문법은 C에 뒤에 억지로 덧붙인 느낌이다. 그렇지만 문법이 너무 이해하기 어렵다.
레벨 2
vector라든가 너무 편리해서 눈물이 나온다. 또 하나 하나 realloc()을 호출하지 않아도 괜찮다. 그렇지만 반복자라고 하는 것을 잘 몰라서 포인터를 사용하고 있다.
구조체 안에 함수를 쓸 수 있는 것은 편리할지도 모른다. 적어도일부러 구조체의 포인터를 인수로 건네주지 않아도 된다.
레벨 3
템플릿을 몰라서 좌절 중. 템플릿을 알면 STL을 더 잘 알 수 있게 될 것 같다. 그렇지만 좋은 참고서가 발견되지 않는다.
계승이라든가 가상 함수도 편리하다고 깨닫는다. namespace도 수수한게 편리하다.
레벨 4
간신히 템플릿에 대해 설명하고 있는 책이나 사이트를 찾아냈다.
템플릿 코드 쓰는 법을 기억한다.
레벨 5
함수 오브젝트나 반복자라고 하는 개념을 이해한다. 간신히 STL을 완전하게 사용할 수 있게 되었다.
지난 달 쓴 자신의 C++ 소스 코드를 보고 얼굴이 빨게 진다.
레벨 6
일본어의 서적은 단념허고 원서를 찾아 다닌다. C++ Templates이나 Template Metaprogramming을 읽는다.
마침내 템플릿을 완전하게 이해한다. Dependant Name도 Two Phase Lookup도 Argument Deduction도 SFINAE도 이해한다.
ADL은 사악한 기능이라고 깨닫는다.
지난 달 쓴 자신의 C++ 소스 코드를 보고 얼굴이 빨게 진다.
레벨 7
메타 프로그래밍을 이해한다. 기억한지 얼마 안된 메타 프로그래밍의 테크닉이나 Boost 라이브러리를 사용해 보고 싶어서 안달이 난다. 그렇지만 회사에서 그것을 허락해 주지 않는다. ㅠ.ㅠ
Boost의 구현을 알고 싶어서 소스를 읽는다.
C++의 규격도 조금 읽어 본다.
레벨 8
회사에서 Boost를 눈치보지 않고 사용해도 아무도 뭐라고 말하지 않는다. 이것은 즉 아래의 몇 개의 경우를 의미한다.
- 얼마 없는 C++를 무서워 하지 않고 사용하는 사람을 뽑는 곳에 입사.
- 고도의 C++를 가르치는 일에 종사.
- 자신이 만든 회사이므로 좋아하는 코딩 룰을 결정할 수 있었다.
레벨 9
C++0x의 드래프트 규격을 읽는다. C++0x의 드래프트에 들어가 있는 신기능에 대해 조사하기 시작한다.
C++에 대해서 의문이 생기면 우선 규격을 확인하게 된다.
레벨 10
C++ 영역에서 자신의 이름을 모르는 사람이 없다. 모르는 사람으로부터「아, 선생님 언제나 C++로 신세를 지고 있습니다」 이렇게 말해진다.
C++ WG(C++ 지역 유저 모임) JP의 멤버이다.
레벨0xA
C++ SC의(C++ 표준 위원회) 멤버이다.
Bjarne Stroustrup와 호형호제 하는 사이이다.
4. 네번째 글
프로그래밍에 도움이되는 추천 책들입니다.
[C/C++/STL]
- 열혈강의 C 프로그래밍
- 열혈강의 C 포인터
- C 언어로 배우는 알고리즘 입문
(C 언어를 어느 정도 익히셨다면, 반드시 알고리즘 예제를 직접 생각해보면서 공부해야 합니다.
이 과정을 거치지 않으면 나중에 후회하게 됩니다. 흑-_-;)
- 열혈강의 C++ 프로그래밍
(열혈 강의 시리즈는 번역서가 아니고 저자가 한국인이라서 아무래도 내용 전달이 명확하고,
프리렉에서 동영상 강의를 보너스로 제공한다는 점이 매력적입니다. 책 내용도 쓸만하구요)
- C++ 기초 플러스
(기초 플러스라는 제목과 달리 생각보다 좀 빡센 책이지만 내용은 아주 좋죠.
열혈강의 C++ 하나 보고 나서 보시는 편이 좋을 듯 합니다)
- Effective C++
- More Effective C++
(스캇 마이어의 명작 중 명작이죠. C/C++ 을 공부하신 분은 반드시 보셔야 합니다.
각종 기법과 개념들을 설명해줍니다)
- STL 튜토리얼.레퍼런스 가이드
(STL 은 제가 C++ 배운 후 가장 큰 감동이었습니다. 흑 T_T;)
- Effective STL
(역시 스캇 마이어의 명작. 내용도 흥미진진하고 재미있습니다.)
- Accelerated C++
(예제로 되어 있고, STL 의 내용도 나오므로 기존에 공부를 해두고 봐야 합니다.)
- Essential C++
- Modern C++ Design
(템플릿, 패턴에 대해 배울 수 있습니다. GoF 책 후에 봐도 괜찮구요)
[API/MFC]
- Visual C++ Programming Bible 6.X
- Visual C++ 6 완벽가이드 2/E
- 윈도우즈 API 정복
(위의 3종 셋트는 너무나 잘 알려진 API/MFC 관련 책)
- API 로 배우는 Windows 구조와 원리
(하드웨어 아키텍쳐와 운영체제에 대해 배울 수 있습니다.
전산과 컬리큘럼에 다 있는 내용이겠으나, 내용이 참 좋습니다.
이걸 완벽 이해하신 후 다른 책을 보시면 뭔가 좀 더 와 닿는게 있죠)
- 윈도우즈 프로그래머를 위한 MFC 구조와 원리
(MFC 에 자동으로 생성된 코드들 100% 이해 하기 힘드신 분 꼭 보셔야죠.
이미 MFC 를 다루지 않는 분이더라도 MFC 를 경험하셨으면 볼만한 책)
[관련 기술]
- Multi Thread Programming
- 열혈강의 TCP/IP 소켓 프로그래밍 (정말 쉽게 되어 있습니다. 소켓의 기초 공부로 최고~)
- Network Programming for Windows 2/E
(위의 책과 겹치는 부분이 좀 있지만 전체적으로 내용이 정말 좋습니다)
- Effective TCP/IP Programming - 네트워크 프로그램을 향상시키는 44가지 Tips
- Windows 시스템 실행파일의 구조와 원리
- Windows 구조와 원리 : OS를 관통하는 프로그래밍의 원리
- Windows 시스템 프로그래밍
- CODE COMPLETE 2/E (고급 코드 작성을 위한 스캇 마이어의 대작. 졸트상 2회 수상이라죠?)
- GoF의 디자인 패턴
- Refactoring
[기타 볼만한 서적]
- 피플웨어
- 조엘 온 소프트웨어 : 유쾌한 오프라인 블로그
- 조엘이 엄선한 소프트웨어 블로그 베스트 29선
- 행복한 프로그래밍
- 누워서 읽는 알고리즘
- 실용주의 프로그래머
- 생각하는 프로그래밍
- 익스트림 프로그래밍
- 테스트 주도 개발
출처- 데브피아
'TipNote' 카테고리의 다른 글
IT학원 ㅇㅇㅌㅂㅋ, 8개월 등록 후, 수강후기 컴퓨터공학과 (0) | 2023.02.22 |
---|---|
IT 관련 무료 공개 책 pdf 사이트 모음, 정리 (0) | 2019.08.03 |
컴퓨터로 가능한 몰래카메라 - 16가지 심각한 IT 장난 (0) | 2019.05.09 |
인싸되기 안녕하살법 (0) | 2019.04.24 |