1P by neo 7달전 | favorite | 댓글 1개

Programming -- Principles and Practice Using C++ (3rd Edition)

  • Addison-Wesley에서 출간된 "Programming -- Principles and Practice Using C++ (3rd Edition)"은 2024년 4월 출간 예정임
    • ISBN: 978-0-13-830868-1
    • 출판사 웹사이트에서 직접 구매 가능

책 소개

  • 이 책은 열심히 노력하는 누구나 프로그래밍의 기본 원칙을 배우고 실제 프로그래밍에 필요한 실용적인 기술을 개발하는 데 도움을 줄 것임
    • 이전 에디션은 수천 명의 학생들이 성공적으로 사용했음
  • 이 개정판은 다음과 같은 특징이 있음:
    • 독자의 목표가 다른 사람이 사용하고 유지 관리할 수 있는 충분히 좋은 프로그램을 작성하는 것이라고 가정함
    • 모호한 언어 기술 세부 사항보다는 기본 개념과 기술에 초점을 맞춤
    • 프로그래밍 언어에 대한 소개가 아니라 절차적, 객체 지향, 제네릭 프로그래밍을 포함한 프로그래밍 일반에 대한 소개임
    • 하드웨어를 효율적으로 사용하는 데 필요한 하위 수준 기술과 현대적인 고급 기술을 모두 다룸
    • 유용하고 정확하며 안전한 타입을 사용하고 유지 관리할 수 있으며 효율적인 코드를 작성하기 위한 견고한 기반을 제공함
    • 주로 프로그래밍 경험이 없는 사람들을 위해 설계되었지만, 숙련된 프로그래머도 이전 에디션에서 더 효과적인 개념과 기술에 대한 소개로써 유용하다고 느꼈음
    • 필수적인 개념, 설계 및 프로그래밍 기술, 언어 기능 및 라이브러리를 광범위하게 다룸
    • 최신 C++(C++20 및 C++23)를 사용함
    • 입력, 출력, 계산 및 간단한 그래픽/GUI와 함께 기본 제공 타입과 사용자 정의 타입의 설계 및 사용을 다룸
    • C++ 표준 라이브러리 컨테이너 및 알고리즘에 대한 소개를 제공함

저자 소개

  • Bjarne Stroustrup은 C++의 설계자이자 원래 구현자이며, "The C++ Programming Language"와 "A Tour of C++" 및 많은 대중적이고 학술적인 출판물의 저자임
  • 그는 뉴욕시에 있는 컬럼비아 대학교의 컴퓨터 과학 교수임
  • Stroustrup 박사는 미국 국립 공학 아카데미 회원이며 IEEE, ACM 및 CHM 펠로우임
  • 그는 2018년 Charles Stark Draper Prize, IEEE 컴퓨터 학회의 2018년 Computer Pioneer Award, 2017년 IET Faraday Medal을 수상했음

PPP3 소개

  • "Programming: Principles and Practice using C++ (3rd Edition)"(PPP3)는 프로그래밍 경험이 없는 사람들을 위한 프로그래밍 입문서임
  • 약간의 프로그래밍 경험이 있고 스타일과 기술을 향상시키거나 단순히 최신 C++를 배우고 싶은 사람들에게도 유용할 것임
  • 교실에서 사용하기 위해 설계되었지만, 자습서의 관점에서 작성되었음
  • 이 책의 이전 버전은 Texas A&M University와 다른 많은 곳에서 전기공학, 컴퓨터 공학 및 컴퓨터 과학 학생들을 위한 첫 번째 프로그래밍 수업의 기초로 사용되었음
  • PPP2를 본 사람들은 PPP3의 크기가 절반 정도라는 것을 알 수 있을 것임. 무게를 줄이기 위해 한 일은 다음과 같음:
    • C++20와 C++23의 핵심 부분을 활용하여 일반적으로 한 학기 과정에서 다루는 기초 장을 강화하고, 이식성을 위해 Qt를 기반으로 그래픽/GUI 장의 코드를 다시 작성함(예: 브라우저 및 휴대폰)
    • 더 전문적인 챕터(PPP2에서 "시야 확대"로 알려진)는 필요에 따라 사용할 수 있도록 웹에 배치함
    • 순수 참조 자료 제거. 이제 웹에서 더 많고 최신 자료를 찾을 수 있음(예: cppreference.com)
  • PPP2의 지원 자료는 여전히 사용 가능함(강의 슬라이드, 코드 등)

PPP3 샘플

  • 서문: 이 책이 약속하는 것과 약속하지 않는 것
  • 목차
  • 0장: 독자에게 드리는 말. 이 책에서 취한 접근 방식에 대한 몇 가지 참고 사항
  • 10장: 디스플레이 모델. 샘플 장. 완전한 초보자라면 이 장을 당장 읽지 마세요. 교사와 경험 많은 독자에게 이 책이 5주 정도(주당 두 장을 가정)에 어디까지 도달하는지 보여주기 위해 게시합니다. 또한 약간의 현대 C++을 과시하기 위함

지원 정보

  • C++ 구현 및 소프트웨어 개발 환경에 대한 링크(및 시작하기 위한 약간의 조언)
  • 모듈 사용 방법(PPP_support.h를 사용하여 PPP 모듈을 빌드하는 방법 설명 포함)
  • 모듈을 사용할 수 있을 때를 위한 PPP 모듈
  • 모듈 std와 PPP를 가장 쉽게 사용하기 위한 "PPP.h" 헤더
  • 헤더 파일 사용으로 다시 돌아가야 할 때를 위한 "PPPheaders.h" 헤더
  • PPP3의 그래픽/GUI 사용자 인터페이스 라이브러리(10-14장에서)를 포함한 GUI 지원. 이 코드를 실행하려면 Qt를 설치해야 함. 사용자 매뉴얼 참고
  • 여러 장의 샘플 코드(TBD)
  • 정오표
  • PPP를 기반으로 PPP3용으로 업데이트된 강의용 슬라이드
  • PPP 코딩 스타일 가이드
  • 연습 문제 자료(TBD)

PPP2의 장

  • 이 장들은 C++23이 아닌 C++14를 사용하여 작성되었지만 여전히 올바르며 주제를 합리적인 방식으로 소개함
    • 1장: 컴퓨터, 사람, 프로그래밍
    • 11장: 입출력 사용자 정의
    • 22장: 이상과 역사
    • 23장: 텍스트 처리
    • 24장: 수치 연산
    • 25장: 임베디드 시스템 프로그래밍
    • 26장: 테스팅
    • 27장: C 프로그래밍 언어
  • 용어집

번역본

  • 아직 없음. 이전 에디션의 번역본은 저자의 책 표지 페이지 참조

GN⁺의 의견

  • PPP는 프로그래밍 입문자를 위한 유명한 책이었고, 이번에 C++20/23을 활용하고 내용을 대폭 정리/축소한 3판이 나오는군요. 반가운 소식입니다.
  • 특히 GUI 부분을 Qt 기반으로 전면 개편한 것은 Qt가 C++계의 사실상 표준 GUI 프레임워크로 자리잡았음을 보여주는 사례라 할 수 있겠네요.
  • 모듈화 등 최신 C++ 기술을 적극 반영하고 웹과의 연계도 강화한 것 같아 기대가 됩니다. 특히 웹브라우저에서 바로 실행할 수 있는 버전이 있다니 교육용으로 안성맞춤이네요.
  • 다만 최신 C++을 사용하다보니 초보자가 혼란스러워 할 수 있을 것 같기도 합니다. 여전히 초보자용으로는 C 스타일의 C++로 시작하는 것이 나을 수도 있겠어요.
  • 저자인 Bjarne는 C++의 창시자이자 표준화를 주도해왔기에 가장 권위있는 서적이 될 것 같습니다. 초보자뿐 아니라 전문가들도 Bjarne이 선별한 best practice와 활용 팁을 배울 수 있을 거에요.
Hacker News 의견
  • C++20 모듈 기능이 아직 대부분의 컴파일러에서 완전히 지원되지 않아 "import std;"가 작동하지 않는 것에 대한 우려가 제기됨. 초보자들이 혼란스러워할 수 있음.

  • GUI 챕터에서 FLTK 대신 Qt를 사용한 것은 큰 변화로, 업계에서 Qt가 널리 사용되고 있어 좋은 반응을 얻을 것으로 예상됨. 다만 학습 곡선에 어떤 영향을 미칠지는 불확실함.

  • Stroustrup의 코드에서는 "using namespace std;"를 사용하여 std:: 접두사를 생략할 수 있어 코드 가독성이 향상됨.

  • Stroustrup의 코드에서 #include 뒤에 공백을 일관되게 사용하지 않는 것에 대한 의문이 제기됨.

  • 과거에는 C++를 사용하여 UI, API 파싱 등 거의 모든 것을 처리했으나, 현재는 개발 스택에서 C++의 위치가 하위로 내려갔음.

  • 이전 버전의 이 책을 깊이 공부한 경험이 있으며, C++에 대한 이해를 높이는 데 큰 도움이 되었음. 하지만 이런 책을 읽지 않고 C++ 코드를 작성하는 사람들도 많았음.

  • C++에 대한 최신 정보를 담은 "C++ Annotations"라는 책을 소개함.

  • 3판의 페이지 수와 무게가 2판에 비해 절반 정도로 줄었음.

  • 2판의 'Part IV: Broadening the View' 섹션이 제거되었기 때문에 분량이 줄어들었으며, 해당 내용은 온라인에서 볼 수 있음. C++11/14를 활용한 주제들은 여전히 유효함.

  • C++20을 지원하는 IDE나 컴파일러를 찾기 어려워 "import std;"가 작동하지 않는 문제에 대한 조언을 구하고 있음.