8 คะแนน โดย xguru 2022-09-27 | 6 ความคิดเห็น | แชร์ทาง WhatsApp
  • ทีม Google Chrome ได้แจกแจงปัญหาราว 40 ข้อที่เกิดขึ้นเมื่อนำ C++20 มาใช้ และสรุปแนวทางแก้ไขไว้
  • มาตรฐาน C++ ออกทุก 3 ปี และหลังจากออกรีลีสแล้ว Chrome จะเริ่มนำมาใช้จริงครั้งแรกก็อีก 3 ปีให้หลัง
  • C++20 มีการเปลี่ยนแปลงจำนวนมาก
    • การเลิกซัพพอร์ต, การจัดลำดับตัวดำเนินการเปรียบเทียบใหม่, การเปลี่ยนกฎของ aggregate ฯลฯ
  • ปัญหาต่างๆ
    • style guide ของ Google อ้างอิง C++17
    • การรองรับ C++20 ของ Clang ยังไม่สมบูรณ์ และต้องใช้ libc++ เวอร์ชันใหม่
    • ไบนารีบน Windows มีขนาดใหญ่ขึ้น
    • เลิกซัพพอร์ต std::iterator (ตั้งแต่ C++17)
    • มีการเพิ่มคีย์เวิร์ดใหม่อย่าง concept, requires ทำให้ชนกับชื่อตัวแปรเดิมได้
    • และอื่นๆ อีกมาก

6 ความคิดเห็น

 
galadbran 2022-09-27

เอ๊ะ… ภาษาระดับ c++ ไม่น่าจะสร้าง breaking change ออกมาเยอะขนาดนี้ไม่ใช่เหรอครับ… หรือว่านี่เป็นแค่ความคิดตายตัวของผมเอง…

 
qwery 2022-09-28

นั่นแหละถึงได้บอกว่า C++ เป็นภาษาที่ประหลาด.. ภาษาก็อัปเกรดเวอร์ชันต่อเนื่อง เพิ่มทั้งโมดูล คอร์รูทีน และสารพัดอย่าง เหมือนพยายามจะทำทุกอย่างเอง
พอมีฟีเจอร์ออกมา คอมไพเลอร์ก็มักจะรองรับกันอีก 4-5 ปีให้หลัง
แต่ละคอมไพเลอร์ก็ทำได้ไม่เหมือนกัน ไวยากรณ์ก็แตกต่างกันนิดหน่อย
พออัปเกรดเวอร์ชัน สิ่งที่เคยใช้ได้ดี ๆ ก็หายไปทีละนิด
stl ก็ใหญ่ขึ้น และพออัปเกรดเวอร์ชันแล้ว บนคอมพิวเตอร์รุ่นเก่าก็รันไม่ได้..
ถ้าจะใช้ภาษาไหน ผมอยากแนะนำให้ใช้ Go หรือ Python มากกว่านะครับ

 
heal9179 2022-09-28

รายการที่ความเข้ากันได้ย้อนหลังไม่ถูกรักษาไว้เมื่อมีการอัปเกรดเวอร์ชัน
ส่วนใหญ่เป็นกรณีของการปรับปรุงพฤติกรรมที่ไม่ได้กำหนดไว้หรือฟีเจอร์ที่มีข้อบกพร่อง
ฟีเจอร์อย่างโมดูล คอนเซปต์ และคอรูทีน ก็เป็นส่วนหนึ่งที่ภาษายังคงพัฒนาต่อเนื่องเหมือนกับภาษาอื่น ๆ
โดยเฉพาะในกรณีของโมดูล นี่เป็นความต้องการที่มีมาอย่างต่อเนื่องตั้งแต่ก่อนหน้านี้แล้ว

 
functor 2022-09-29

ผมไม่แน่ใจว่าการเลิกสนับสนุน std::iterator จะเข้าข่ายกรณีที่คุณกล่าวว่าเป็นการ "ปรับปรุงฟีเจอร์ที่มีพฤติกรรมไม่กำหนดแน่ชัดหรือมีข้อบกพร่อง" หรือไม่

 
heal9179 2022-09-28

อย่างไรก็ตาม จุดที่ C++ ตามหลังภาษาอื่นอย่างชัดเจนมีหลัก ๆ ดังนี้

  1. ตัวจัดการแพ็กเกจ
  2. ความแตกกระจายของคอมไพเลอร์
  3. วิธีคอมไพล์ที่ซับซ้อน (ต้องเรียนรู้ Make, CMake เพิ่มเติม)
  4. ความไม่ใส่ใจของชุมชน

ในบรรดาปัญหาเหล่านี้ ผมคิดว่าปัญหาใหญ่คือเพราะชุมชนไม่ค่อยใส่ใจ จึงมีบทความคุณภาพดีอยู่น้อยมาก และด้วยจำนวนผู้ใช้ที่น้อย ทำให้ปัญหาอีกสามข้อที่เหลือไม่ได้รับการแก้ไขด้วย

 
deokim 2022-09-28
  • rust