1 คะแนน โดย GN⁺ 2024-04-20 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

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 ความคิดเห็น

 
GN⁺ 2024-04-20
ความคิดเห็นจาก 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 ได้ยาก