1 điểm bởi GN⁺ 2024-04-20 | 1 bình luận | Chia sẻ qua WhatsApp

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

  • "Programming -- Principles and Practice Using C++ (3rd Edition)" do Addison-Wesley xuất bản dự kiến sẽ phát hành vào tháng 4 năm 2024
    • ISBN: 978-0-13-830868-1
    • Có thể mua trực tiếp trên website của nhà xuất bản

Giới thiệu sách

  • Cuốn sách này sẽ giúp bất kỳ ai chăm chỉ nỗ lực học được các nguyên lý cơ bản của lập trình và phát triển các kỹ năng thực tiễn cần thiết cho lập trình thực tế
    • Các ấn bản trước đã được hàng nghìn sinh viên sử dụng thành công
  • Ấn bản sửa đổi này có những đặc điểm sau:
    • Giả định rằng mục tiêu của người đọc là viết ra các chương trình đủ tốt để người khác có thể sử dụng và bảo trì
    • Tập trung vào các khái niệm và kỹ thuật nền tảng hơn là những chi tiết kỹ thuật ngôn ngữ mơ hồ
    • Không phải là phần giới thiệu về một ngôn ngữ lập trình, mà là phần nhập môn về lập trình nói chung, bao gồm lập trình thủ tục, hướng đối tượng và generic
    • Đề cập cả các kỹ thuật cấp thấp cần thiết để sử dụng phần cứng hiệu quả lẫn các kỹ thuật hiện đại cấp cao
    • Cung cấp nền tảng vững chắc để sử dụng các kiểu dữ liệu hữu ích, chính xác và an toàn, có thể bảo trì, đồng thời viết mã hiệu quả
    • Chủ yếu được thiết kế cho những người chưa có kinh nghiệm lập trình, nhưng các lập trình viên giàu kinh nghiệm cũng thấy các ấn bản trước hữu ích như một phần giới thiệu về những khái niệm và kỹ thuật hiệu quả hơn
    • Bao quát rộng rãi các khái niệm cốt lõi, kỹ thuật thiết kế và lập trình, tính năng ngôn ngữ và thư viện
    • Sử dụng C++ hiện đại nhất (C++20 và C++23)
    • Đề cập việc thiết kế và sử dụng các kiểu dựng sẵn và kiểu do người dùng định nghĩa, cùng với nhập, xuất, tính toán và đồ họa/GUI đơn giản
    • Cung cấp phần giới thiệu về container và algorithm của thư viện chuẩn C++

Giới thiệu tác giả

  • Bjarne Stroustrup là người thiết kế và hiện thực hóa ban đầu của C++, đồng thời là tác giả của "The C++ Programming Language", "A Tour of C++" và nhiều ấn phẩm phổ thông lẫn học thuật
  • Ông là giáo sư khoa học máy tính tại Đại học Columbia ở Thành phố New York
  • Tiến sĩ Stroustrup là thành viên của Viện Hàn lâm Kỹ thuật Quốc gia Hoa Kỳ và là fellow của IEEE, ACM và CHM
  • Ông đã nhận Charles Stark Draper Prize năm 2018, Computer Pioneer Award 2018 của IEEE Computer Society, và IET Faraday Medal năm 2017

Giới thiệu PPP3

  • "Programming: Principles and Practice using C++ (3rd Edition)" (PPP3) là sách nhập môn lập trình dành cho những người chưa có kinh nghiệm lập trình
  • Sách cũng sẽ hữu ích với những người đã có chút kinh nghiệm lập trình và muốn cải thiện phong cách, kỹ năng hoặc đơn giản là học C++ mới nhất
  • Tuy được thiết kế để dùng trong lớp học, sách được viết theo góc nhìn của một tài liệu tự học
  • Các phiên bản trước của cuốn sách này đã được dùng làm nền tảng cho lớp học lập trình đầu tiên dành cho sinh viên kỹ thuật điện, kỹ thuật máy tính và khoa học máy tính tại Texas A&M University và nhiều nơi khác
  • Những ai từng xem PPP2 sẽ nhận ra PPP3 chỉ có kích thước bằng khoảng một nửa. Những việc đã làm để giảm độ nặng gồm có:
    • Tận dụng các phần cốt lõi của C++20 và C++23 để củng cố các chương nền tảng thường được dạy trong một học kỳ, và viết lại mã của các chương đồ họa/GUI dựa trên Qt để tăng tính di động (ví dụ: trình duyệt và điện thoại)
    • Các chương chuyên sâu hơn (trong PPP2 được gọi là "mở rộng tầm nhìn") được đưa lên web để có thể dùng khi cần
    • Loại bỏ tài liệu tham khảo thuần túy. Giờ đây có thể tìm thấy nhiều tài liệu hơn và cập nhật hơn trên web (ví dụ: cppreference.com)
  • Tài liệu hỗ trợ cho PPP2 vẫn còn có thể sử dụng được (slide bài giảng, mã nguồn, v.v.)

Mẫu PPP3

  • Lời nói đầu: Cuốn sách này hứa hẹn điều gì và không hứa hẹn điều gì
  • Mục lục
  • Chương 0: Gửi tới độc giả. Một vài ghi chú về cách tiếp cận được sử dụng trong cuốn sách này
  • Chương 10: Mô hình hiển thị. Chương mẫu. Nếu bạn là người hoàn toàn mới bắt đầu thì đừng đọc chương này ngay bây giờ. Chương này được công bố để cho giáo viên và độc giả có kinh nghiệm thấy cuốn sách đi được đến đâu sau khoảng 5 tuần (giả định mỗi tuần hai chương). Đồng thời cũng để phô diễn một chút C++ hiện đại

Thông tin hỗ trợ

  • Liên kết tới các hiện thực C++ và môi trường phát triển phần mềm (kèm một chút lời khuyên để bắt đầu)
  • Cách sử dụng module (bao gồm giải thích cách build module PPP bằng PPP_support.h)
  • Module PPP dành cho khi có thể sử dụng module
  • Header "PPP.h" để sử dụng module std và PPP một cách dễ nhất
  • Header "PPPheaders.h" dành cho khi cần quay lại cách dùng header file
  • Hỗ trợ GUI bao gồm thư viện giao diện người dùng đồ họa/GUI của PPP3 (trong các chương 10-14). Cần cài đặt Qt để chạy đoạn mã này. Xem sổ tay người dùng
  • Mã mẫu cho nhiều chương (TBD)
  • Danh sách lỗi đính chính
  • Slide bài giảng cập nhật cho PPP3 dựa trên PPP
  • Hướng dẫn coding style của PPP
  • Tài liệu bài tập (TBD)

Các chương của PPP2

  • Các chương này được viết bằng C++14 chứ không phải C++23, nhưng vẫn đúng và giới thiệu chủ đề theo cách hợp lý
    • Chương 1: Máy tính, con người và lập trình
    • Chương 11: Tùy biến nhập/xuất
    • Chương 22: Lý tưởng và lịch sử
    • Chương 23: Xử lý văn bản
    • Chương 24: Tính toán số
    • Chương 25: Lập trình hệ thống nhúng
    • Chương 26: Kiểm thử
    • Chương 27: Ngôn ngữ lập trình C
  • Bảng thuật ngữ

Bản dịch

  • Chưa có. Với các bản dịch của các ấn bản trước, hãy xem trang bìa sách của tác giả

Ý kiến của GN⁺

  • PPP là một cuốn sách nổi tiếng dành cho người mới học lập trình, và lần này ấn bản thứ 3 tận dụng C++20/23 đồng thời tinh gọn, cắt giảm nội dung đáng kể sắp ra mắt. Đây là một tin vui.
  • Đặc biệt, việc đại tu toàn bộ phần GUI dựa trên Qt có thể được xem là một ví dụ cho thấy Qt đã trở thành framework GUI tiêu chuẩn trên thực tế trong thế giới C++.
  • Có vẻ như sách đã tích cực phản ánh các công nghệ C++ mới nhất như modularization và cũng tăng cường liên kết với web, nên rất đáng mong đợi. Đặc biệt, việc có phiên bản có thể chạy ngay trên trình duyệt web khiến nó cực kỳ phù hợp cho mục đích giáo dục.
  • Tuy vậy, do sử dụng C++ mới nhất nên người mới có thể cảm thấy bối rối. Có lẽ với người mới bắt đầu, việc khởi đầu bằng C++ theo phong cách C vẫn có thể tốt hơn.
  • Tác giả Bjarne là người tạo ra C++ và đã dẫn dắt quá trình tiêu chuẩn hóa, nên đây có lẽ sẽ là một cuốn sách có tính thẩm quyền rất cao. Không chỉ người mới mà cả chuyên gia cũng có thể học được best practice và các mẹo ứng dụng do chính Bjarne tuyển chọn.

1 bình luận

 
GN⁺ 2024-04-20
Ý kiến Hacker News
  • Có ý kiến lo ngại rằng tính năng module của C++20 vẫn chưa được hỗ trợ đầy đủ trên phần lớn trình biên dịch, nên import std; không hoạt động. Điều này có thể khiến người mới bắt đầu bị bối rối.

  • Việc dùng Qt thay cho FLTK trong chương GUI là một thay đổi lớn, và được kỳ vọng sẽ nhận phản hồi tích cực vì Qt được dùng rộng rãi trong ngành. Tuy vậy, tác động của nó đến đường cong học tập vẫn chưa rõ.

  • Trong mã của Stroustrup, using namespace std; được sử dụng để có thể lược bỏ tiền tố std::, giúp mã dễ đọc hơn.

  • Có thắc mắc về việc trong mã của Stroustrup không nhất quán trong cách dùng khoảng trắng sau #include.

  • Trước đây, người ta từng dùng C++ để xử lý gần như mọi thứ như UI, phân tích API, v.v., nhưng hiện nay vị trí của C++ trong stack phát triển đã bị đẩy xuống thấp hơn.

  • Có người từng học rất kỹ các phiên bản trước của cuốn sách này và thấy nó giúp ích rất nhiều trong việc nâng cao hiểu biết về C++. Tuy nhiên, cũng có nhiều người viết mã C++ mà chưa từng đọc những cuốn sách như vậy.

  • Giới thiệu một cuốn sách tên là "C++ Annotations" với thông tin cập nhật về C++.

  • Số trang và trọng lượng của bản 3 đã giảm còn khoảng một nửa so với bản 2.

  • Dung lượng giảm là do phần 'Part IV: Broadening the View' của bản 2 đã bị lược bỏ, và nội dung đó có thể xem trực tuyến. Các chủ đề sử dụng C++11/14 vẫn còn giá trị.

  • Có người đang hỏi xin lời khuyên về vấn đề khó tìm được IDE hoặc trình biên dịch hỗ trợ C++20 để import std; hoạt động.