Programming -- Principles and Practice Using C++ (3rd Edition)
- "Programming -- Principles and Practice Using C++ (3rd Edition)" ที่จัดพิมพ์โดย Addison-Wesley มีกำหนดวางจำหน่ายในเดือนเมษายน 2024
- ISBN: 978-0-13-830868-1
- สามารถซื้อได้โดยตรงจากเว็บไซต์ของสำนักพิมพ์
แนะนำหนังสือ
- หนังสือเล่มนี้จะช่วยให้ทุกคนที่ตั้งใจจริงได้เรียนรู้หลักการพื้นฐานของการเขียนโปรแกรม และพัฒนาทักษะเชิงปฏิบัติที่จำเป็นต่อการเขียนโปรแกรมจริง
- ฉบับก่อนหน้านี้มีนักศึกษาหลายพันคนใช้งานได้อย่างประสบความสำเร็จ
- ฉบับปรับปรุงนี้มีลักษณะเด่นดังต่อไปนี้:
- ตั้งอยู่บนสมมติฐานว่าเป้าหมายของผู้อ่านคือการเขียนโปรแกรมที่ดีพอให้ผู้อื่นสามารถใช้งานและบำรุงรักษาต่อได้
- เน้นแนวคิดและเทคนิคพื้นฐาน มากกว่ารายละเอียดทางเทคนิคของภาษาในจุดที่กำกวม
- ไม่ใช่เพียงบทนำสู่ภาษาโปรแกรม แต่เป็นบทนำสู่การเขียนโปรแกรมโดยทั่วไป ซึ่งรวมถึงการเขียนโปรแกรมเชิงกระบวนวิธี เชิงวัตถุ และเชิงเจเนอริก
- ครอบคลุมทั้งเทคนิคระดับล่างที่จำเป็นต่อการใช้ฮาร์ดแวร์อย่างมีประสิทธิภาพ และเทคนิคระดับสูงสมัยใหม่
- วางรากฐานที่มั่นคงสำหรับการใช้และบำรุงรักษา type ที่มีประโยชน์ ถูกต้อง และปลอดภัย รวมถึงการเขียนโค้ดที่มีประสิทธิภาพ
- แม้ออกแบบมาโดยหลักสำหรับผู้ที่แทบไม่มีประสบการณ์ด้านการเขียนโปรแกรม แต่โปรแกรมเมอร์ที่มีประสบการณ์ก็พบว่าฉบับก่อนหน้านี้มีประโยชน์ในฐานะบทนำสู่แนวคิดและเทคนิคที่มีประสิทธิผลมากกว่าเดิม
- ครอบคลุมแนวคิดสำคัญ การออกแบบและเทคนิคการเขียนโปรแกรม ฟีเจอร์ของภาษา และไลบรารีอย่างกว้างขวาง
- ใช้ C++ สมัยใหม่ล่าสุด (C++20 และ C++23)
- ครอบคลุมการออกแบบและการใช้งาน type ที่มีมาให้ในภาษาและ type ที่ผู้ใช้กำหนดเอง ร่วมกับการรับเข้า การส่งออก การคำนวณ และกราฟิก/GUI อย่างง่าย
- มีบทนำเกี่ยวกับคอนเทนเนอร์และอัลกอริทึมใน C++ standard library
แนะนำผู้เขียน
- Bjarne Stroustrup เป็นผู้ออกแบบและผู้พัฒนาต้นฉบับของ C++ และเป็นผู้เขียน "The C++ Programming Language", "A Tour of C++" ตลอดจนงานตีพิมพ์เชิงวิชาการและสำหรับผู้อ่านทั่วไปจำนวนมาก
- เขาเป็นศาสตราจารย์ด้านวิทยาการคอมพิวเตอร์ที่มหาวิทยาลัยโคลัมเบียในนครนิวยอร์ก
- ดร. Stroustrup เป็นสมาชิกของ U.S. National Academy of Engineering และเป็น fellow ของ IEEE, ACM และ CHM
- เขาได้รับรางวัล Charles Stark Draper Prize ปี 2018, Computer Pioneer Award ปี 2018 ของ IEEE Computer Society และ IET Faraday Medal ปี 2017
แนะนำ PPP3
- "Programming: Principles and Practice using C++ (3rd Edition)" (PPP3) เป็นหนังสือแนะนำการเขียนโปรแกรมสำหรับผู้ที่ไม่มีประสบการณ์ด้านการเขียนโปรแกรม
- น่าจะมีประโยชน์เช่นกันสำหรับผู้ที่มีประสบการณ์เขียนโปรแกรมมาบ้างและต้องการพัฒนาสไตล์กับเทคนิคของตน หรือเพียงต้องการเรียนรู้ C++ เวอร์ชันใหม่ล่าสุด
- แม้ออกแบบมาเพื่อใช้ในห้องเรียน แต่เขียนขึ้นจากมุมมองของหนังสือสำหรับศึกษาด้วยตนเอง
- หนังสือฉบับก่อนหน้านี้ถูกใช้เป็นพื้นฐานของวิชาเขียนโปรแกรมแรกสำหรับนักศึกษาวิศวกรรมไฟฟ้า วิศวกรรมคอมพิวเตอร์ และวิทยาการคอมพิวเตอร์ที่ Texas A&M University และอีกหลายแห่ง
- ผู้ที่เคยเห็น PPP2 จะสังเกตได้ว่า PPP3 มีขนาดประมาณครึ่งหนึ่ง สิ่งที่ทำเพื่อลดความหนามีดังนี้:
- ใช้ส่วนสำคัญของ C++20 และ C++23 เพื่อเสริมความแข็งแรงให้กับบทพื้นฐานที่มักสอนในหลักสูตรหนึ่งภาคการศึกษา และเขียนโค้ดของบทกราฟิก/GUI ใหม่บนฐานของ Qt เพื่อความสามารถในการพกพา (เช่น เบราว์เซอร์และโทรศัพท์มือถือ)
- บทที่มีความเฉพาะทางมากขึ้น (ซึ่งใน PPP2 เรียกว่า "broaden your horizon") ถูกย้ายไปไว้บนเว็บเพื่อให้ใช้งานได้ตามต้องการ
- ตัดเนื้อหาที่เป็นเอกสารอ้างอิงล้วนออก ตอนนี้สามารถหาเอกสารที่มากกว่าและทันสมัยกว่าบนเว็บได้ (เช่น cppreference.com)
- สื่อสนับสนุนของ PPP2 ยังใช้งานได้อยู่ (สไลด์การบรรยาย โค้ด เป็นต้น)
ตัวอย่างจาก PPP3
- คำนำ: หนังสือเล่มนี้สัญญาอะไรและไม่ได้สัญญาอะไร
- สารบัญ
- บทที่ 0: ถึงผู้อ่าน หมายเหตุบางประการเกี่ยวกับแนวทางที่ใช้ในหนังสือเล่มนี้
- บทที่ 10: โมเดลการแสดงผล ตัวอย่างบท หากคุณเป็นมือใหม่แบบสมบูรณ์ อย่าเพิ่งอ่านบทนี้ตอนนี้ เผยแพร่ไว้เพื่อให้ครูและผู้อ่านที่มีประสบการณ์เห็นว่าหนังสือเล่มนี้ไปได้ไกลถึงไหนในเวลาประมาณ 5 สัปดาห์ (สมมติสัปดาห์ละสองบท) และยังเพื่ออวด C++ สมัยใหม่เล็กน้อยด้วย
ข้อมูลสนับสนุน
- ลิงก์ไปยัง implementation ของ C++ และสภาพแวดล้อมการพัฒนาซอฟต์แวร์ (พร้อมคำแนะนำเล็กน้อยสำหรับการเริ่มต้น)
- วิธีใช้โมดูล (รวมถึงคำอธิบายวิธี build โมดูล PPP โดยใช้ PPP_support.h)
- โมดูล PPP สำหรับตอนที่สามารถใช้โมดูลได้
- เฮดเดอร์ "PPP.h" สำหรับการใช้โมดูล std และ PPP ได้ง่ายที่สุด
- เฮดเดอร์ "PPPheaders.h" สำหรับตอนที่จำเป็นต้องกลับไปใช้ไฟล์เฮดเดอร์
- การรองรับ GUI รวมถึงไลบรารีส่วนติดต่อผู้ใช้กราฟิก/GUI ของ PPP3 (ในบทที่ 10-14) ต้องติดตั้ง Qt เพื่อรันโค้ดนี้ โปรดดูคู่มือผู้ใช้
- ตัวอย่างโค้ดจากหลายบท (TBD)
- Errata
- สไลด์สำหรับการบรรยายที่อัปเดตสำหรับ PPP3 โดยอิงจาก PPP
- คู่มือสไตล์การเขียนโค้ดของ PPP
- เอกสารแบบฝึกหัด (TBD)
บทต่างๆ ของ PPP2
- บทเหล่านี้เขียนด้วย C++14 ไม่ใช่ C++23 แต่ยังคงถูกต้องและอธิบายหัวข้อต่างๆ ได้อย่างสมเหตุสมผล
- บทที่ 1: คอมพิวเตอร์ มนุษย์ และการเขียนโปรแกรม
- บทที่ 11: การปรับแต่งอินพุต/เอาต์พุต
- บทที่ 22: อุดมคติและประวัติศาสตร์
- บทที่ 23: การประมวลผลข้อความ
- บทที่ 24: การคำนวณเชิงตัวเลข
- บทที่ 25: การเขียนโปรแกรมระบบฝังตัว
- บทที่ 26: การทดสอบ
- บทที่ 27: ภาษาโปรแกรม C
- อภิธานศัพท์
ฉบับแปล
- ยังไม่มี สำหรับฉบับแปลของรุ่นก่อนหน้า โปรดดูหน้าปกหนังสือของผู้เขียน
ความเห็นของ GN⁺
- PPP เป็นหนังสือชื่อดังสำหรับผู้เริ่มต้นเขียนโปรแกรม และครั้งนี้ฉบับที่ 3 ก็กำลังจะออกมาโดยใช้ C++20/23 และปรับโครงสร้าง/ย่อเนื้อหาอย่างมาก ถือเป็นข่าวที่น่ายินดี
- โดยเฉพาะการยกเครื่องส่วน GUI ใหม่ทั้งหมดบนฐานของ Qt ถือเป็นตัวอย่างที่แสดงให้เห็นว่า Qt ได้กลายเป็นเฟรมเวิร์ก GUI มาตรฐานโดยพฤตินัยของโลก C++ ไปแล้ว
- ดูเหมือนว่าจะสะท้อนเทคโนโลยี C++ สมัยใหม่อย่างจริงจัง เช่น การทำโมดูล และยังเสริมการเชื่อมโยงกับเว็บมากขึ้นด้วย โดยเฉพาะการมีเวอร์ชันที่รันได้ทันทีในเว็บเบราว์เซอร์ก็ดูเหมาะกับงานการศึกษาอย่างมาก
- อย่างไรก็ตาม การใช้ C++ รุ่นใหม่ล่าสุดก็อาจทำให้ผู้เริ่มต้นสับสนได้เหมือนกัน สำหรับผู้เริ่มต้น บางทีการเริ่มจาก C++ สไตล์ C อาจยังเหมาะกว่า
- ผู้เขียนอย่าง Bjarne เป็นทั้งผู้สร้าง C++ และผู้มีบทบาทนำในการทำมาตรฐาน จึงน่าจะทำให้หนังสือเล่มนี้กลายเป็นหนังสือที่ทรงอำนาจมากที่สุดเล่มหนึ่ง ไม่ใช่แค่ผู้เริ่มต้น แม้แต่มืออาชีพก็น่าจะได้เรียนรู้ best practice และเคล็ดลับการใช้งานที่ Bjarne คัดสรรมาให้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
มีการแสดงความกังวลว่าฟีเจอร์โมดูลของ C++20 ยังไม่ได้รับการรองรับอย่างสมบูรณ์ในคอมไพเลอร์ส่วนใหญ่ ทำให้
import std;ใช้งานไม่ได้ ซึ่งอาจทำให้ผู้เริ่มต้นสับสนได้การใช้ Qt แทน FLTK ในบท GUI เป็นการเปลี่ยนแปลงครั้งใหญ่ และคาดว่าจะได้รับเสียงตอบรับที่ดีเพราะ Qt ถูกใช้อย่างแพร่หลายในอุตสาหกรรม อย่างไรก็ตาม ยังไม่แน่ชัดว่าจะส่งผลต่อเส้นโค้งการเรียนรู้อย่างไร
ในโค้ดของ Stroustrup มีการใช้
using namespace std;เพื่อให้ละคำนำหน้าstd::ได้ ทำให้อ่านโค้ดง่ายขึ้นมีการตั้งคำถามเกี่ยวกับการใช้ช่องว่างหลัง
#includeในโค้ดของ Stroustrup ที่ไม่สม่ำเสมอในอดีตเคยใช้ C++ ทำแทบทุกอย่าง ไม่ว่าจะเป็น UI หรือการพาร์ส API แต่ปัจจุบันบทบาทของ C++ ในสแตกการพัฒนาลดระดับลงไปอยู่ชั้นล่างมากขึ้น
มีประสบการณ์ศึกษาหนังสือฉบับก่อนหน้านี้อย่างลึกซึ้ง และมันช่วยเพิ่มความเข้าใจเกี่ยวกับ C++ ได้มาก แต่ก็มีคนจำนวนมากที่เขียนโค้ด C++ โดยไม่เคยอ่านหนังสือแบบนี้
มีการแนะนำหนังสือชื่อ "C++ Annotations" ซึ่งมีข้อมูล C++ ที่ทันสมัย
ฉบับพิมพ์ครั้งที่ 3 มีจำนวนหน้าและน้ำหนักลดลงเหลือประมาณครึ่งหนึ่งเมื่อเทียบกับฉบับพิมพ์ครั้งที่ 2
ปริมาณเนื้อหาที่ลดลงเป็นเพราะตัดส่วน 'Part IV: Broadening the View' ของฉบับพิมพ์ครั้งที่ 2 ออกไป และเนื้อหาส่วนนั้นยังสามารถอ่านได้ทางออนไลน์ โดยหัวข้อที่ใช้ C++11/14 ยังถือว่ายังคงใช้ได้อยู่
กำลังขอคำแนะนำเกี่ยวกับปัญหาที่
import std;ใช้งานไม่ได้ เนื่องจากหา IDE หรือคอมไพเลอร์ที่รองรับ C++20 ได้ยาก