C++는 산업용 소프트웨어 개발에 널리 사용되는 대규모 언어입니다. 그 자체의 복잡성과 실제 문제를 해결하는 능력은 학문적 연구 가치와 산업적 가치가 매우 뛰어납니다. C 언어와 마찬가지로 C++도 여러 중요한 영역에서 매우 성공적이었습니다.
그러나 저수준 프로그래밍 분야에서는 C++이 C를 압박하고 있으며 C의 강한 반등에도 시달리고 있는 것은 부인할 수 없는 현실이다. 고급 프로그래밍 분야에서 Java와 C#은 지속적으로 C++의 영역을 침범하고 있습니다. 어쩌면 C++와 C의 통합은 언제나 꿈이 될지도 모릅니다. 아마도 Java와 C#의 열풍은 결국 C++를 그 뿌리로 돌아가게 할 것입니다. 즉, 근본적인 장점이 있는 개발 영역으로 돌아가게 될 것입니다. 고성능 응용 프로그램 설계, 임베디드 프로그래밍 및 수치 과학 컴퓨팅 등을 확장합니다. 그렇다면 이것도 나쁘지는 않다고 생각합니다.
C++는 엄청난 지적 투자를 유치하여 중량급 소프트웨어 제품, 라이브러리 및 서적을 포함하여 이 분야에 수많은 뛰어난 작품이 있습니다. "C++ 프로그래밍에 관한 네 권의 책과 다섯 가지 고전"이라는 제목의 덜 엄격한 의미는 다음과 같습니다: 네 권의 C++ 프로그래밍 책 ⅹ 다섯 가지 고전. 예, 이 기사(및 다음 기사)에서는 카테고리별로 20권 이상의 좋은 C++ 책을 추천할 것이며 귀하는 자신의 필요에 따라 해당 도서를 선택하여 읽을 수 있습니다.
TCPL과 D&E
TCPL과 D&E는 "C++ 프로그래밍 언어"이자 "디자인과 진화"입니다. Bjarne Stroustrup이 작성한 각각의 C++"입니다. 먼저 Bjarne이 C++ 언어의 창시자이기 때문에, 두 번째로 "첫 번째"보다 더 중요한 이유 때문에 이 두 책을 별도로 나열합니다. 이 두 책은 의심할 여지 없이 C++ 분야의 걸작입니다. C++ 언어의 바이블이라고 해도 과언이 아닙니다.
Bjarne Stroustrup, The C++ 프로그래밍 언어(특별판)
《C++ 프로그래밍 언어(특별판) )", 기계산업 출판사
"C++ 프로그래밍 언어(특별판)(영문 복사판)", 고등교육 출판사
현재까지 TCPL은 C++ 표준 문서 다음으로 가장 권위 있는 C++ 참조 매뉴얼입니다. 대부분의 사람들과 달리 저는 Bjarne의 서면 언어가 그가 만든 프로그래밍 언어보다 열등하지 않다고 생각합니다. 적어도 저는 이런 종류의 학문적 작업을 좋아합니다. 이 책의 C++ 언어 설명은 명확하고 간단합니다. 다른 어떤 작가나 책도 할 수 없는 언어 제작자의 관점에서 C++를 살펴봅니다. Bjarne 자신보다 C++를 더 잘 사용하는 방법을 아는 사람은 없습니다.
중급 및 고급 C++ 개발자를 대상으로 한 진지한 책입니다. 숙련된 C++ 프로그래머이고 보다 필수적인 C++ 지식을 이해해야 하는 경우 이 책은 바로 여러분을 위한 것입니다. 읽고 나면 웃음이 터지는 그런 작은 책은 아니다. 주의 깊게 이해하고 계속해서 씹어보아야 할 책이다. 읽는 과정에서 비얀 씨가 강조한 내용과 한 문장으로 언급한 내용에 각별히 주의하시기 바랍니다. 저는 개인적으로 이 책의 네 번째 부분인 "Designing with C++"를 좋아합니다. 비슷한 프로그래밍 언어 책에서는 이런 내용을 보기 어렵습니다. 심지어 Bjarne이 이 부분을 별도의 책으로 작성해야 한다고 생각합니다.
Bjarne Stroustrup, The Design and Evolution of C++
《The Design and Evolution of C++ Language》, 기계 업계 출판사
"The Design and Evolution of C++ Language(English Edition)", Machinery Industry Press
D&E C++ 언어 디자인 원칙, 디자인 결정 및 디자인 철학에 대한 논문입니다. C++가 다른 언어가 아닌 오늘날의 모습이 된 이유를 명확하게 설명합니다. C++ 언어의 창시자로서 Bjarne은 독특하고 심오한 통찰력을 생생하게 보여주었습니다. 널리 칭찬받는 언어 기능 외에도 Bjarne은 논란의 여지가 있거나 심지어 거부된 C++ 기능을 회피하지 않고 논리적으로 엄격하고 설득력 있는 설명을 하나씩 제공했습니다. 콘텐츠는 C++, 클래스가 있는 C, C++ 디자인 규칙, 표준화, 라이브러리, 메모리 관리, 다중 상속, 템플릿 등의 선사 시대를 다루고 있습니다. 또한 예외 메커니즘, 런타임 유형 정보 및 네임스페이스를 포함한 중요한 새로운 기능에 대한 소개도 제공합니다. 각각 심도 있게 논의됐다. 모든 C++ 프로그래머는 Bjarne의 설명을 통해 언어에 대한 이해를 심화할 수 있어야 합니다.
이 두 권의 책에는 응축된 지식과 엄청난 양의 정보가 담겨 있다는 점을 다시 한 번 말씀드리고 싶습니다.
입문 튜토리얼
모든 언어를 배우려면 초보자부터 숙련까지 단계별 과정이 필요합니다. 프로세스를 마스터합니다. 그러나 소위 초보자라고 불리는 사람은 자신이 완전한 초보자인지, 다른 언어에 익숙한 "초보"인지, 심지어 특정 언어의 프로그래밍 분야에서 상당한 성과를 이룬 마스터인지 판단하기 어렵습니다. .일반화? C++ 초보자마다 다른 입문서가 필요합니다.
Andrew Koenig, Barbara E. Moo, Accelerated C++: 예제를 통한 실제 프로그래밍
《Accelerated C++ 중국어 버전 ", 중국전력출판사
시중에 나와 있는 대부분의 C++ 튜토리얼과 달리 이 책은 "C in C++"로 시작하지 않고 진정한 C++ 기능으로 시작합니다. 처음부터 표준 라이브러리를 사용하여 프로그램을 작성합니다. 설명이 점차 심화되면서 이러한 표준 라이브러리 구성 요소가 의존하는 기본 개념이 하나씩 설명됩니다. 또한, 이 책에서는 다른 C++ 교과서와 달리 예제를 사용하여 언어와 표준 라이브러리를 설명합니다. 후자의 두 책은 대부분의 C++ 교과서처럼 예제를 사용하여 언어 기능을 보여주는 것이 아니라 예제 프로그램을 지원하기 위해 설명합니다. 및 표준 라이브러리 사용.
저자는 C++ 분야의 프로그래밍 실습, 교육 및 훈련, 기술 저작 분야에서 세계 최고 수준입니다. 나는 표준 라이브러리와 C++ 언어의 기본 기능을 많이 활용하는 이 상쾌한 글쓰기 스타일을 좋아합니다. 이 교과서 앞에는 현재까지의 거의 모든 C++ 교과서가 일식이거나 시대에 뒤떨어진 것처럼 보입니다. 이 교과서는 국내 고등교육에 있어서는 다소 전위적일 수 있지만, 나는 여전히 동료들에게 적극 추천한다. 그건 그렇고, Bjarne과 나와의 최근 서신에서 그는 이 책에 대해 다음과 같이 말했습니다. C++를 배우는 숙련된 프로그래머에게 이 책은 세계 최고의 책이 될 수 있습니다.
Stanley B.Lippman, Josee Lajoie, C++ Primer(3판)
《C++ Primer(3RD) 중국어판', 중국전력출판사
이 책의 이름은 다소 오해의 소지가 있습니다. 저자는 이 책이 C++를 처음 접하는 사람들을 위해 쓰여졌다고 주장하지만, 책의 두께와 설명의 깊이를 보면 그렇지 않다는 것을 알 수 있습니다. 아마도 "초보자부터 숙련자까지"의 C++ 튜토리얼이라고 부르는 것이 더 적절할 것입니다. 저는 개인적으로 이 책이 C++을 전혀 모르는 초보자에게는 적합하지 않다고 생각합니다. 이 책을 읽기 전에 최소한 C나 C++에 대한 배경 지식이 조금 있거나, 다른 언어에 대한 프로그래밍 경험이 최소한 있어야 합니다.
이 책에서는 일부 고급 C++ 기능에 대한 논의가 생략되어 있지만 여전히 가장 포괄적인 C++ 학습 튜토리얼이라고 할 수 있습니다. 실제로 C++ 초보자라도 이 책을 차근차근 읽고 "C++ 입문서 답안집"에 따라 모든 연습문제를 풀 수 있다면 그의 레벨은 분명 전문 C++ 프로그래머 반열에 들어갈 수 있을 것이다. 나는 개인적으로 이미 TCPL을 소유하고 있더라도 이 책은 여러 면에서 TCPL보다 더 자세하고 이해하기 쉽기 때문에 여전히 소유할 가치가 있다고 생각합니다.
Stanley B. Lippman, Essential C++
"Essential C++ 중국어 버전", 화중과기대학교 보도자료
"Essential C++(복사판)", 중국전력출판사
이 책도 고려해 볼 만하다 덜 엄격하게 이 책은 "C++ Primer"의 압축 버전입니다. 이 책은 절차적 프로그래밍, 일반 프로그래밍, 객체 기반 프로그래밍, 객체 지향 프로그래밍, 템플릿 프로그래밍, 예외 처리 등 C++의 가장 대표적인 주제를 하나씩 설명합니다. Stanley는 "다른 언어 프로그래밍 경험이 있는" C++ 초보자가 수용할 수 있는 가장 기본적인 수준으로 임계값을 낮추어 "C++ Primer"와 같은 책을 읽지 않고도 C++ 프로그래밍을 빠르게 시작할 수 있도록 합니다. 예제를 통해 학습을 안내하고 독자가 가능한 한 짧은 시간에 C++의 본질을 이해할 수 있도록 노력합니다.
C++ 프로그래밍 패러다임(패러다임)의 모든 측면을 다른 사람이 설명하려면 수백 페이지가 필요할 수도 있지만, 이 작은 책은 그 일을 믿을 수 없을 만큼 훌륭하게 해냅니다. 나는 개인적으로 기법이 풍부하고 간결하며 할 말이 있는 이런 책을 좋아한다. 이 책에는 또한 분명한 스타일이 있습니다. 모든 프로그램 예제는 표준 라이브러리 구성 요소를 사용하는데, 이는 참신합니다.
위 세 권의 책 중 어느 것도 프로그래밍 완전 초보자를 위해 쓰여진 것은 아닙니다. C++ 프로그래밍의 완전한 초보자는 Francis Glassborow의 새 책(아직 출판되지 않음): "컴퓨터 프로그래밍 초보자 입문: You Can Do It!"을 읽을 수 있습니다. 이것은 Bjarne도 권장합니다. Francis Glassborow는 수년에 걸쳐 거의 모든 고전 C++ 책에 대해 논평해 왔으며 자연스럽게 C++ 커뮤니티에서 큰 관심을 불러일으켰습니다.
효율적이고 탄탄한 프로그래밍
이 코드는 제가 2년 전 지방청장으로 있을 때 작성했습니다. 디스패칭 시스템 프로젝트 SCADA 시스템에서 실시간 전력 정보를 얻는 게이트웨이 프로그램입니다. 통신 인터페이스는 흔하지 않은 데이터베이스 직접 연결 방식을 채택합니다(이 게이트웨이 프로그램은 한쪽 끝은 SQL Server 6.5, 다른 쪽 끝은 Oralce 8.1.6에 연결됨). 실시간 측정 포인트가 거의 10,000개에 달하기 때문에 매번 모든 샘플을 업데이트하거나 삽입하는 것은 분명히 비효율적입니다. 게이트웨이 프로그램에 메모리 라이브러리를 구축했습니다. 얻은 데이터를 먼저 비교한 다음 물리적 데이터베이스를 업데이트할지 여부를 결정합니다(다른 더 복잡한 작업도 수행됩니다...). 따라서 효율성과 리소스 사용이 향상됩니다. .기대했던 효과가 달성되었습니다.
이 프로그램은 아주 잘 돌아가고 있었는데, 사이트를 떠난 지 하루 만에 시스템 관리자가 전화해서 가끔 네트워크 장애나 다른 이유로 인해 게이트웨이 프로그램이 충돌할 수도 있다고 말했습니다. 문제는 Windows 2000 Advanced Server도 "블루 스크린"으로 변하게 한다는 것입니다! 솔직히 말해서 의도하지 않은 프로그램이 이렇게 하는 것을 본 적이 없습니다. 당시 다른 큰 프로젝트로 바빠서 디버깅을 위해 사이트에 갈 수 없었고, 결국 경험을 바탕으로 한 예외 처리 코드로 메모리 라이브러리 코드를 조심스럽게 캡슐화해야 했습니다. ...). 이렇게 하면 문제가 완전히 해결되지는 않지만 결국 프로그램은 더 이상 그렇게 추악하지 않습니다.
여기서 그런 이야기를 하는 게 무슨 소용이 있겠습니까(그 끔찍한 버그를 생각할 때는 '탭'이라고 생각하지 않았습니다). 제가 말하고 싶은 것은 어떤 소프트웨어든 견고함 없이는 효율성이 없다는 것입니다. C++ 프로그래머에게 효율적인 프로그램을 작성하는 것은 어렵지 않을 수 있지만, 연중무휴 24시간 실행되어야 하는 서버측 소프트웨어를 작성하는 것은 그리 쉽지 않습니다. 많은 요소를 고려해야 하며 때로는 이러한 요소가 훨씬 더 어렵습니다. C++ 언어 및 개발 도구 자체를 뛰어넘습니다. 실제 프로젝트 소프트웨어를 개발하는 프로그래머로서 우리는 경험을 쌓기 위해 스스로 벽에 부딪힐 필요가 없습니다. 우리가 겸손하다면 다른 사람의 경험은 종종 우리에게 좋은 참고가 됩니다. 이러한 이유로 나는 견고성과 효율성 모두에서 이점을 얻을 수 있는 다음 책을 읽어볼 것을 권장합니다(물론 예외 처리보다 훨씬 더 많은 내용을 다룹니다).
Scott Meyers, 효과적인 C++: 프로그램 및 디자인을 개선하는 50가지 구체적인 방법(2판)
Scott Meyers, 보다 효과적인 C++: 프로그램 및 디자인을 개선하는 35가지 새로운 방법
《Effective C++ Chinese Edition》, 화중 과학기술대학교 출판부
"Effective C++ 중국어판", China Electric Power Publishing House
"Effective C++(사본판)", China Electric Power Publishing House
"Effective C++"가 주로 C++의 비교적 기본적인 개념과 기술을 다룬다면, "More Effective C++"는 예외 처리를 포함한 일련의 고급 개념과 기술에 중점을 둡니다. . 기술. 전자와 비교할 때 후자에는 두 가지 주요 차이점이 있습니다. 첫째, 새로운 표준 C++ 콘텐츠가 많이 포함되어 있다는 점입니다. 둘째, 논의하는 주제는 "전술적"이 아닌 "전략적"인 경향이 있으며 토론은 더 깊고 철저합니다. . 특히 가상 소멸자, 스마트 포인터, 참조 카운팅, 프록시 클래스 등의 기술과 패턴에 대한 심도 있는 논의가 이렇게 작은 책에 등장한다는 것은 상상하기 어렵습니다.
편안한 테크닉과 뛰어난 작문 실력을 갖춘 Scott은 의심할 여지 없이 세계 최고의 C++ 기술 작가 중 한 명입니다. 두 책 모두 단순성, 명확성, 가독성 측면에서 탁월합니다. 간단히 말해서, 프로그래밍 기술과 디자인 사고를 향상시키기 위해 Scott이 제공한 85가지 방법은 모두 중급 및 고급 C++ 프로그래머에게 필수적인 기술입니다. 나는 이 두 권의 책을 강력히 추천합니다(나중에 살펴보겠지만 사실 한 권이 더 있습니다).
Herb Sutter, 뛰어난 C++: 47가지 엔지니어링 퍼즐, 프로그래밍 문제 및 솔루션
Herb Sutter, 더욱 뛰어난 C++: 40가지 새로운 엔지니어링 퍼즐, 프로그래밍 문제 및 해결 방법
"Exceptional C++ Chinese Edition", China Electric Power Publishing House
"더 뛰어난 C++ 중국어판", 화중 과학기술대학교 출판부
자신이 C++ 언어 전문가라고 생각하시나요? 답변하기 전에 ISO C++ 표준 위원회 사무총장이 쓴 이 두 권의 책을 읽어 보십시오. 이 두 권의 책에서 Herb는 "질문과 답변" 접근 방식을 사용하여 C++ 언어 기능 학습을 안내합니다. 각 주제에 대해 Herb는 먼저 귀하의 질문과 혼란을 합리적으로 상상한 다음 귀하의 답변이 틀렸을 것이라고 추측한 다음 지침을 제공하고 최선의 해결책을 제안하며 마지막으로 유사한 문제를 해결하는 방법을 요약합니다.
이 두 권의 책은 C++ 언어의 세세한 부분까지 파고드는 전형적인 작품이다. 매우 얇지만 내용은 스콧의 두 권을 훨씬 능가할 정도로 밀도가 높다. Brains는 읽는 데 시간이 많이 걸립니다. 저는 개인적으로 Scott의 책보다 이해하기가 훨씬 더 어렵다고 생각합니다. 이 얇은 책 두 권에 담긴 지식을 연구하려면 최소한 몇 달은 걸릴 것입니다! (Scott의 서문에서 그는 한 번 이상 GotW 문제의 함정에 빠졌다고 고백했습니다. 이것이 무엇을 의미하는지 알아야 합니다.) 언어의 세부 사항을 공부하면 어떤 이점이 있습니까? 대부분의 경우 C++ 코드의 배후에서 무슨 일이 일어나고 있는지 신경 쓸 필요는 없지만, 그렇게 할 때 이 두 책은 C++ 언어의 미묘하지만 중요한 측면을 드러내기 때문에 좋은 단서를 제공할 수 있습니다. .
Stephen C. Dewhurst, C++ 문제: 코딩 및 디자인의 일반적인 문제 방지
《C++ 프로그래밍 트랩 》 , 중국청년출판사
스티븐의 이론적 소양과 실무 경험 덕분에 이 책은 읽을 가치가 있는 좋은 책입니다. Stephen은 Bell Labs의 최초 C++ 사용자 중 한 명이었습니다. 그는 C++를 사용하여 컴파일러, 증권 거래, 전자 상거래 및 임베디드 시스템을 포함한 영역의 문제를 성공적으로 해결했습니다. 이 책에는 저자의 일선 개발 경험에서 얻은 99가지 프로그래밍 통찰력이 담겨 있습니다. 이를 이해하면 거의 모든 일반적인 C++ 설계 및 프로그래밍 문제를 피할 수 있습니다.
C++ 프로그래밍 초보자에게도 이 책을 읽으면 Scott과 Herb의 책을 읽는 것보다 더 쉽고 즉각적으로 도움이 될 것이라고 생각합니다. 나는 개인적으로 이 책의 글쓰기 스타일을 좋아합니다. 스티븐의 견해 중 상당수는 극단적인 것처럼 보일 수 있지만 반박할 수 없습니다. 물론 이러한 자신감(그리고 건조한 유머)은 오만한 편집증이 아닌 저자의 깊은 기술적 이해력에서 비롯됩니다.
위에서 추천한 책 외에도 Dov Bulka와 David Mayhew가 공동 저술한 "Efficient C++: Performance Programing Techniques"("Programming Techniques to Improve C++ Performance", Tsinghua University 출판사)도 살펴볼 가치가 있습니다. 이 얇고 작은 책은 고성능 C++ 애플리케이션 개발에 중점을 두고 있습니다. 두 저자는 모두 IBM 소프트웨어 전문가이며 매우 높은 성능을 요구하는 시스템 구축 분야에서 일하고 있습니다. 이 책은 그들의 경험을 바탕으로 작성되었습니다. 어떤 사람들은 C++와 관련이 없는 것에 대해 이야기하는 데 많은 시간을 소비하기 때문에 이 책을 좋아하지 않지만, 나는 바로 이러한 점 때문에 내 시야가 넓어졌습니다.
템플릿 및 일반 프로그래밍
템플릿 및 템플릿 기반 일반 프로그래밍은 의심할 여지 없이 오늘날 가장 활발하게 개발되는 C++ 프로그래밍입니다. 기술. 템플릿의 첫 번째 혁신적인 적용은 일반 컨테이너 및 알고리즘 분야에서 템플릿 기술의 적용을 완벽하게 입증한 STL이었습니다. Boost 및 Loki와 같은 최신 라이브러리는 템플릿 기술의 잠재력을 계속해서 극대화합니다. 템플릿 및 일반 프로그래밍 분야에서는 다음 두 권의 두꺼운 책을 추천합니다.
David Vandevoorde, Nicolai M. Josuttis, C++ Templates: The Complete Guide
"C++ 템플릿 개요(중국어 번체 버전)", Taiwan Qifeng Information Co., Ltd.
"C++ 개요 템플릿(중국어 번체판)"간체판)", 인민우편출판사
책을 칭찬하는 옛날 방식이 있는데, 대략 "만약" 이 책을 읽지 않았다면 원하는 것은 무엇이든 할 수 있습니다. "지구"에는 종종 과장된 요소가 있습니다. 그러나 "C++ 템플릿: 전체 가이드"를 읽지 않고는 C++ 템플릿 프로그래밍에 능숙해질 수 없다고 말한다면 이 주장은 전 세계 대다수의 C++ 프로그래머에게 해당됩니다.
이 책은 C++ 템플릿 도서 분야의 오랜 공백을 메워줍니다. 이전에는 고급 템플릿 프로그래밍 기술과 일반 패턴에 초점을 맞춘 "현대 C++ 디자인"과 특정 템플릿 프레임워크 및 구성 요소 사용에 대한 가이드인 "C++ 표준 라이브러리"와 같은 책이 있었습니다. 그러나 템플릿 메커니즘에 대한 깊은 이해가 부족하면 자유롭게 "기립"하기 어려울 것입니다. 이러한 관점에서 나는 C++ 템플릿 기술에 대한 철저한 이해를 원하는 모든 사람에게 이 책을 추천합니다.
이 책은 중국 본토와 대만에서 각각 번역되어 있지만 번역자는 서로 다릅니다. 당신이 이 글을 읽을 때쯤이면 두 가지 번역본 모두 시장에 나와 있을 것이고, 이는 물론 독자들에게 한 가지 선택권을 더 줄 것입니다. Hou Jie 씨는 자신의 개인 웹사이트에 중국어 번체의 대부분의 장을 공개했기 때문에 살짝 엿보는 것도 좋을 것입니다.
Andrei Alexandrescu, 최신 C++ 디자인: 일반 프로그래밍 및 디자인 패턴 적용
"새로운 C++ 디자인 사고: 일반 프로그래밍 "유형 프로그래밍 및 디자인 패턴의 응용", 화중 과학기술대학교 출판부
"새로운 C++ 디자인 사고(사진 복사판)", 중국 전력 출판부
자신이 C++ 템플릿 프로그래밍의 달인이라고 생각하시나요? J에게 대답하기 전에 이 책을 읽어보세요. 천재가 쓴 경외심을 불러일으키는 걸작입니다. 일반 모드는 시야를 무한히 확장하며 C++ 프로그래머의 사고 한계에 도전하기에 충분합니다.
이 책은 두 부분으로 구성되어 있습니다. 첫 번째 부분에서는 Loki 라이브러리에서 사용하는 기본 기술과 전략 기반 클래스 디자인 및 템플릿을 포함한 몇 가지 고급 언어 기능에 대해 설명합니다. 로컬 전문화, 컴파일 타임 어설션, Typelist 및 작은 개체 할당 기술 등 두 번째 부분에서는 일반화 펑터, 싱글톤, 스마트 포인터, 객체 팩토리, 추상 팩토리, 방문자 및 다중 메서드 등을 포함하여 Loki의 중요한 구성 요소와 일반 패턴 기술에 중점을 둡니다. 모든 기술은 눈을 뜨게 하고 숨이 막힐 정도로 놀랍습니다.
C++를 배우다 보면 너무 멀리 가는 것은 더 깊은 이해를 추구하지 않는다는 핑계가 되는 경우가 많습니다. 그러나 객체지향이 C++의 전부는 아니며, 템플릿과 일반 프로그래밍도 그 중 절반을 차지합니다. "진지한" C++ 프로그래머라면 이 입증된 성공적인 기술을 시기적절하게 후속 조치하는 것이 현명한 조치입니다.
결론
이 책들은 워낙 유명해서 굳이 추천할 필요도 없을 것 같아요. 그러나 C++ 프로그래머 팀이 다른 최신 언어만큼 빠르게 성장하지는 않더라도 떠나는 기존 사람들보다 항상 새로운 사람들이 더 많이 들어오고 있습니다. 새로 오신 분들을 따뜻하게 환영하는 것 외에도 저는 개인적으로 C++ 서적의 "목록"을 작성해야 할 때라고 생각하며 이러한 "목록"이 관심 있는 독자들에게 도움이 되기를 바랍니다. 인내심을 갖고 은혜롭게 행동하십시오. 다음 기사에서는 표준 라이브러리, 네트워크 프로그래밍 및 기타 측면에 대한 좋은 C++ 책을 계속해서 소개하겠습니다. 좋은 책과 함께라면 이번 겨울도 춥지 않을 것 같아요.
C++ 프로그래밍에 관한 네 권의 책과 다섯 가지 고전(2부)
나는 TCPL을 "인벤토리"했습니다. 이전 기사 D&E, 입문 튜토리얼, 효율적이고 강력한 프로그래밍, 템플릿 및 일반 프로그래밍에 관한 좋은 C++ 책이 12권 이상 있습니다. 겨울이 봄으로 바뀌고 있습니다. C++ 도서의 놀라운 여정을 이어가겠습니다. 제가 연구소에 근무할 때 같은 연구소의 다른 두 연구 기관과 협력하여 대규모 물 보전 허브 파견 통합 프로젝트를 개발했습니다. 세 가지 소프트웨어 시스템은 모두 서로 통신해야 합니다. 세심한 고객(공부가 많은 시스템 관리자)은 통신 모듈을 디버깅할 때 동일한 통신 프로토콜에 대해 내 코드는 30줄을 초과하지 않는 반면 상대방의 코드는 150줄을 초과하여 이해하기 어렵다는 사실을 발견했습니다. 시스템 관리자는 모든 사람의 프로그래밍 스타일과 습관이 다르다며 매우 당황했습니다. 저는 표준 라이브러리를 사용하지만 그는 전통적인 C 프로그래밍 스타일과 자신에게 익숙한 다른 기술을 사용합니다.
오해하지 마세요! 나는 결코 이 파트너를 폄하할 생각이 없습니다. 사실 저는 정말 깊은 C 프로그래밍 기술을 갖고 있는 프로그래머들을 종종 존경합니다. 결국, 오늘날 C++의 성공은 주로 C에 대한 깊은 뿌리에 기인합니다. C++ 프로그래머로서 C++의 C에 익숙하지 않으면 기본기가 탄탄하지 않고 기술적 자신감이 부족하다고 생각하는 경향이 있습니다.
하지만 C++는 다중 패러다임 프로그래밍 언어입니다. 전문 프로그래머는 특정 상황에 따라 어떤 프로그래밍 스타일을 사용해야 하는지 알아야 합니다. 현장에서 즉석 개발을 자주 해야 하는 프로젝트 리더로서, 긴급한 작업을 신속하고 빠르게 해결하기 위해 기존 라이브러리(및 구성 요소)를 최대한 활용하는 데 익숙합니다. C++ 표준 라이브러리의 입증된 효율성(및 견고성)은 이미 존재합니다. 그렇다면 이를 사용하지 않으시겠습니까?
Nicolai M. Josuttis, C++ 표준 라이브러리: 튜토리얼 및 참조
《C++ 표준 라이브러리: A 튜토리얼 및 참고자료 자습 튜토리얼 및 참고 매뉴얼', 화중과학기술대학교 출판부
백과사전 스타일의 C++ 표준 라이브러리 책으로, 몇 번이고 상담을 받으세요. 완성도, 디테일, 정확성 면에서 타의 추종을 불허합니다. 이 책은 STL뿐만 아니라 스트림과 지역화를 포함한 전체 표준 라이브러리를 포괄하여 각 표준 라이브러리 구성 요소의 사양과 사용법을 자세히 설명합니다. 이 책의 부제에서 알 수 있듯이 처음에는 튜토리얼로 읽고 나중에는 참조 매뉴얼로 읽어야 합니다.
이해하기 쉬운 문체 덕분에 이 책은 읽기가 매우 쉽습니다. 표준 라이브러리를 사용하는 방법을 배우고 그 잠재력을 극대화하려면 이 책이 있어야 합니다. 인터넷에서 말한 대로 이 책은 책장뿐만 아니라 컴퓨터 책상 위에도 놓아두어야 한다. 나는 모든 전문 C++ 프로그래머에게 이 책을 강력히 추천합니다.
Angelika Langer, Klaus Kreft, 표준 C++ IOStream 및 로케일: 고급 프로그래머 가이드 및 참조
《 People's Posts and Telecommunications Publishing House
"표준 C++ 입력 및 출력 스트림 및 현지화" C++ 표준 라이브러리는 STL, 스트림 및 현지화의 세 부분으로 구성되어 있습니다. 시중에는 스트리밍과 현지화에 관한 논문이 많지만 이 책은 이 두 분야 중 최고입니다. 현재까지 이 책보다 스트리밍과 현지화에 대해 더 자세히 설명하는 책은 없습니다. 리우쿠를 "사용할 수 있는" 수준에 머물고 있으니 놓치지 마세요
2001년 여름, 중국어판을 쭉 읽었습니다. 책의 내용부터 포장까지 모든 것이 나에게 깊은 인상을 주었지만 대부분 부정적이었습니다. 2003년 가을에 우연히 한 온라인 서점에서 이 책의 중국어 번역본을 매우 저렴한 가격에 판매하고 있다는 것을 알게 되었습니다. 미안해요.
Scott Meyers, 효과적인 STL: 표준 템플릿 라이브러리 사용을 개선하는 50가지 구체적인 방법 "효과적인 STL(사진 복사 버전) ", 중국전력출판사
Scott의 "Effective C++", "More Effective C++"의 중국어 번역본을 읽고 기대가 컸습니다. 중국어판 판아민씨의 개인 홈페이지를 통해 그와 그의 파트너가 이 책의 번역을 완료한 것으로 보이지만, 다행히도 원본을 볼 수 있습니다. 🎜>
이 책은 STL을 사용하는 프로그래머라면 꼭 읽어야 할 책입니다. 이 책에서 Scott은 STL 컨테이너와 알고리즘의 작동 방식과 이를 가장 잘 사용하는 방법을 알려줍니다. Scott의 다른 작품과 마찬가지로 이 책도 명확하고 정확한 문체로 작성되었으며 읽기가 매우 쉽습니다. 이 책을 읽고 나면 여러분도 나와 다른 C++ 프로그래머들과 같은 생각을 갖게 될 것입니다. Scott은 언제 "보다 효과적인 STL"을 작성할 것인가?
STL과 관련하여 Matthew H. Austern의 "Generic 프로그래밍 및 STL: C++ 표준 템플릿 라이브러리 사용 및 확장"("Generic 프로그래밍 및 STL: C++ 표준 템플릿 라이브러리 사용 및 확장") STL", China Electric Power Press). 이 책은 강한 학문적 분위기를 물씬 풍깁니다. "Accelerated C++: Practical 프로그래밍 by 예제" 책 끝에서 Andrew Koenig와 Barbara Moo는 "C++에 대한 Ruminations" 외에 다른 두 권의 좋은 고급 책을 엄숙히 추천합니다. 그 중 하나는 TCPL이고 다른 하나는 이 책이에요!
네트워크 프로그래밍
네트워크 프로그래밍 시대에 C++는 어떤 역할을 해야 할까요? 환경)을 알려드립니다.
Douglas C. Schmidt, Stephen D. Huston, C++ 네트워크 프로그래밍, 1권: ACE 및 패턴을 사용한 복잡성 마스터하기
Douglas C. Schmidt, Stephen D. Huston, C++ 네트워크 프로그래밍, 2권: ACE 및 프레임워크를 사용한 체계적인 재사용
《C++ 네트워크 프로그래밍, 1권: 애플리케이션 ACE and Patterns Eliminate Complexity", 화중과학기술대학교 출판사
"C++ 네트워크 프로그래밍, 2권: ACE 및 프레임워크 기반의 체계적 재사용", 전자 산업 출판사
엔터프라이즈급 네트워크 프로그래밍에는 C++를 사용합니다. 현재 ACE(및 이 두 책)는 고려해 볼 만한 선택입니다. ACE는 고성능 네트워크 애플리케이션 및 미들웨어 구축을 목표로 하는 객체 지향, 크로스 플랫폼, 오픈 소스 네트워크 프로그래밍 프레임워크입니다. Douglas는 ACE의 창립자이며 Stephen은 수년 동안 ACE에 기술 지원 및 컨설팅 서비스를 제공해 왔습니다. 두 사람 모두 ACE 커뮤니티의 전문가입니다(예, ACE의 영향력과 실제 적용이 커뮤니티를 형성했습니다).
ACE는 대학과 연구 기관에서 인기가 있을 뿐만 아니라 전 세계적으로 수천 개의 상업용 애플리케이션에서 성공적으로 사용되었습니다. ACE는 통신, 항공우주, 의학 및 금융 분야의 네트워크 시스템에서 중요한 역할을 수행해 왔으며 앞으로도 계속해서 수행할 것입니다. 고성능 통신 시스템을 개발할 준비가 되었다면 세계 최고의 전문가 집단을 고려해 보시기 바랍니다.
ACE는 C++ 객체지향 디자인 기술, 템플릿 등 고급 언어 기능 외에도 수많은 패턴을 사용합니다. "C++ 네트워크 프로그래밍" 볼륨 1과 볼륨 2에서는 ACE의 모든 측면을 가르칠 뿐만 아니라 패턴 및 일반 프레임워크 설계와 같은 고급 기술도 가르칩니다. 따라서 중급 또는 고급 C++ 프로그래머로서 진지한 C++ 네트워크 프로그래밍을 거의 하지 않더라도 이 두 책을 읽으면 도움이 될 수 있습니다.
예, 모든 네트워크 애플리케이션이 웹 서버(및 기타 애플리케이션 서버)와 중량급 구성 요소 모델을 사용해야 하는 것은 아닙니다. 사고 방식을 바꾸려면 가벼운 것부터 시작할 수도 있습니다. ACE 구성요소의 이점을 누리세요.
기타
다음 도서는 Think가 없기 때문에 "기타" 섹션에 포함되어 있습니다. 좀 더 적절하게 분류하면 위의 책들만큼 읽을 가치가 있습니다.
Bruce Eckel, C++로 생각하기, 1권: 표준 C++ 입문(2판)
Bruce Eckel , Thinking in C++, 2권: 실용 프로그래밍(제2판)
"C++ 프로그래밍 사고(2판) 제1권: 표준 C++ 안내서", 기계 산업 출판사
"C++ 프로그래밍 사고(영문판 2판)", 기계산업 출판사
" "Thinking" 초판 in C++'는 1996년 Software Development 잡지로부터 Book Shock Award를 수상했습니다. 새롭게 출시된 제2판은 C++ 표준화의 영향과 최근 몇 년간 객체지향 분야의 최신 연구 및 실습 결과를 반영하기 위해 내용을 대폭 재작성하고 조정했습니다. "입력 스트림", "다중 상속", "예외 처리" 및 "런타임 유형 인식"과 같은 고급 주제가 C++ 표준화 이후 추가된 일부 내용과 함께 두 번째 볼륨에 배치됩니다. Bruce는 숙련된 C++ 강사이자 컨설턴트입니다. 그의 교육 및 저작 경험은 "트릭" 기술 직원이 작성한 작품보다 독자들에게 더 매력적입니다. 실제로 비슷한 책들 중에서 이 책은 대부분의 독자들에게 TCPL이나 "C++ Primer"보다 더 가독성이 좋습니다. 그런데 작가 사이트에 방문하시면 2권을 미리 보실 수 있습니다.
Andrew Koenig, Barbara E. Moo, C++에 대한 반추: 프로그래밍 통찰력과 경험의 10년
《 C++에 대한 명상', People's Posts and Telecommunications Press
앤드류는 세계에서 몇 안 되는 C++ 전문가 중 한 명입니다. 이 책은 언어 세부사항보다는 C++ 프로그래밍 아이디어와 프로그래밍 기술에 관한 책입니다. 이미 어느 정도 기초를 다졌다면 이 책을 통해 C++로 프로그래밍할 때 어떻게 생각하고 해결책을 표현하는지 가르쳐 줄 것이다. 책 전체의 기술적 표현이 철저하고, 내용도 이해하기 쉽다. Bjarne은 이 책에 대해 다음과 같이 논평했습니다. 이 책은 "C++가 무엇인지, C++가 무엇을 할 수 있는지"에 대한 통찰력으로 가득 차 있습니다.
Stanley B. Lippman, C++ 개체 모델 내부
"C++ 개체 모델에 대한 심층 탐구 ", 화중기술대학교 출판부
"C++ 개체 모델 심층 탐구(복사 버전)", 중국 전력 출판부
컴파일러의 관점에서 C++를 관찰하면 현재 상황과 이유를 이해하는 데 도움이 될 수 있습니다. 이 책에서는 생성자, 함수, 임시 개체, 상속, 가상화, 템플릿 인스턴스화, 예외 처리, 런타임 유형 식별 등을 포함하여 C++ 개체 지향 프로그래밍의 다양한 기본 운영 메커니즘에 대해 설명합니다. 또한 구현의 일부 측면도 소개합니다. C++ 개체 모델 프로세스에서 발생하는 장단점. 더 깊이 파고드는 C++ 프로그래머라면 이 책을 놓치지 마세요.
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, 디자인 패턴: 재사용 가능한 객체 지향 소프트웨어의 요소
"디자인 패턴: 재사용 가능한 객체 지향 소프트웨어의 기초", 기계 산업 언론
"디자인 패턴: 재사용 가능한 객체 지향 소프트웨어의 기초(영어 버전) )", Machinery Industry Press
재사용 가능한 객체지향 소프트웨어를 디자인하려면 디자인 패턴을 마스터해야 합니다. 이 책은 C++ 프로그래머를 위해 특별히 작성된 것은 아니지만, 특히 C++ 프로그래머는 기본 예제 언어로 C++(및 Smalltalk)를 사용함으로써 이점을 얻을 수 있습니다. 네 명의 저자는 모두 객체지향 소프트웨어 분야에서 국제적으로 인정받는 전문가들이다. 이들은 객체지향 소프트웨어 설계 경험을 상세하게 디자인 패턴으로 기록했다. 이 책의 영향력은 너무나 컸기 때문에 네 명의 저자와 이 책에는 GoF(Gang of Four)라는 별명이 붙을 정도였다. 학문적 분위기가 강하고, 엄격하고 간결한 문체를 지닌 이 책은 패턴을 설명하는 일부 책만큼 읽기 쉽지는 않지만, 정말로 디자인 패턴을 정확하게 이해하고 싶다면 이 책이 최고의 권위자이다. 디자인 패턴을 배우려면 이 책을 계속해서 씹어먹어야 합니다. 그런데, 디자인 패턴을 열린 사고의 열쇠로 바꾸고, 결코 폐쇄적인 사고의 족쇄가 되지 마십시오.
읽어볼만한 좋은 C++ 책도 있지만 여기에 모두 나열할 수는 없습니다. 예를 들어 John Lakos의 저서 "Large-Scale C++ Software Design"("Large-Scale C++ 프로그래밍", China Electric Power Press) 및 Mr. Hou Jie의 "STL Source Code Analysis"(Huazhong University of Science and Technology Press) 등 .
『STL 소스코드 분석』은 참 독특한 책인데, 더 좋을 수도 있겠다는 생각이 듭니다. 개인적으로 Hou Jie 씨가 초판이 출시된 이후 템플릿 기술을 축적하고 다시 생각해 본 후 더욱 깊이 있고 철저하며 포괄적인 "Second Edition"을 작성해 주기를 바랍니다. 불행하게도 Hou Jie씨는 책 "C++ Templates: The Complete Guide"의 번역을 마친 후 템플릿, 일반 프로그래밍 및 STL 분야와 일시적으로 작별을 결정한 것 같습니다.
2004년 3월 31일 추가: 제가 가장 자주 참고하는 두 권의 참고서는 "C++ 표준 프로그램 라이브러리"와 "STL 소스 코드 분석"입니다. 물론 이것은 나의 올해 글쓰기 계획과 많은 관련이 있습니다.
C++를 사용하여 대규모 소프트웨어 시스템을 성공적으로 개발하려면 대부분의 C++ 책에 설명된 논리적 설계 문제를 잘 이해해야 할 뿐만 아니라 "대규모 소프트웨어 시스템"에 대한 숙달도 필요합니다. C++ 프로그래밍''에 설명된 물리적 설계 기술입니다. 물론 이 책은 좀 오래된 책이지만, 에너지와 돈에 여유가 있다면 한 권 구입해서 나쁠 것은 없습니다.
이 시점에서 추천하지 않는 (좋은) 책도 있다는 점을 언급할 필요가 있다고 생각하는데, 그 주된 이유는 다음과 같습니다.
위 책들만으로도 충분하고 좋습니다.
중국어든 영어든 일반 채널에서 구매하기 어려운 책은 추천하지 않습니다.
작가(번역가)의 명성은 추천에 영향을 미치지 않습니다. 우리는 사람이 아니라 책을 읽고 있습니다.
한 번도 읽지 않은 책은 추천하지 않습니다. 나는 적어도 한 가지 버전(전자 버전 포함)을 읽어야 합니다. 이 "읽기"는 일반적으로 "주의 깊게 읽기"를 의미하지만 일부는 "탐색"으로만 간주될 수 있습니다.
결론
나는 평범한 기술 작가이자 번역가로서 기술 창작의 어려움을 잘 알고 있으며, 번역(그리고 행복)을 배우고 기술 서적의 제작, 번역, 제작, 출판 및 마케팅 뒤에 숨은 세부 사항에 대해 어느 정도 알아보세요. 오늘은 만족스럽지 못한 책에 대해서는 아무 말도 하지 않겠습니다. 동일한 책의 다양한 버전을 나열하는 목적은 단지 귀하에게 더 많은 정보를 제공하고 선택권을 한 가지 더 제공하기 위한 것입니다.
이 글을 쓰는 후반 단계에서 저는 Bjarne에게 편지를 써서 그가 이 글을 쓴다면 어떤 글을 쓸 것인지 물었습니다. 그는 나에게 간결한 조언을 해주었다. 위에 나열된 책의 대부분이 세계 최고의 C++ 책임을 확인하면서 Bjarne은 전문 프로그래머에게 "The C++ Standard: Incorporating Technical Corrigendum No. 1"을 추천하는 것을 잊지 말라고 상기시켰습니다. 이 책은 C++ 표준 사양의 "책 버전"이며 Bjarne이 서문을 직접 작성했습니다.
Bjarne도 내 추천 목록에 C++ 프로그래머의 Windows 프로그래밍에 도움이 될 책이 없다는 점을 친절하게도 알려주었습니다. 이것이 바로 제 의도였습니다. 이 기사에서는 플랫폼 중립적인 C++ 작업(네트워크 프로그래밍 제외)만 추천하고 검토합니다. 이는 운영 체제나 통합 개발 환경과 아무 관련이 없으며 심지어는 작업과도 아무 관련이 없다고 상상합니다. 컴파일러. 귀하의 비즈니스 개발 요구 사항에 따라 귀하가 선호하는 분야와 관련된 C++ 서적을 선택하여 읽을 수 있습니다.
"시스템 독립적이고 플랫폼 중립적"이라고 하면 "추상화 계층"이라는 개념이 생각나지 않을 수 없습니다. 실용적인 응용 프로그램을 개발하는 C++ 프로그래머는 일반적으로 특정 운영 체제, 특정 개발 환경 및 특정 비즈니스 분야에서 작업합니다. 표준 C++ 및 C++ 표준 라이브러리에 대한 확실하고 심오한 이해를 통해 의심할 여지 없이 다양한 운영 체제 및 개발 환경에서 작업할 수 있습니다. 서로 다른 비즈니스 영역 간에 발생하는 "추상적" 비용.
위 내용은 C++ 프로그래밍의 4권과 5경의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!