- ทีม 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 ความคิดเห็น
เอ๊ะ… ภาษาระดับ c++ ไม่น่าจะสร้าง breaking change ออกมาเยอะขนาดนี้ไม่ใช่เหรอครับ… หรือว่านี่เป็นแค่ความคิดตายตัวของผมเอง…
นั่นแหละถึงได้บอกว่า C++ เป็นภาษาที่ประหลาด.. ภาษาก็อัปเกรดเวอร์ชันต่อเนื่อง เพิ่มทั้งโมดูล คอร์รูทีน และสารพัดอย่าง เหมือนพยายามจะทำทุกอย่างเอง
พอมีฟีเจอร์ออกมา คอมไพเลอร์ก็มักจะรองรับกันอีก 4-5 ปีให้หลัง
แต่ละคอมไพเลอร์ก็ทำได้ไม่เหมือนกัน ไวยากรณ์ก็แตกต่างกันนิดหน่อย
พออัปเกรดเวอร์ชัน สิ่งที่เคยใช้ได้ดี ๆ ก็หายไปทีละนิด
stlก็ใหญ่ขึ้น และพออัปเกรดเวอร์ชันแล้ว บนคอมพิวเตอร์รุ่นเก่าก็รันไม่ได้..ถ้าจะใช้ภาษาไหน ผมอยากแนะนำให้ใช้ Go หรือ Python มากกว่านะครับ
รายการที่ความเข้ากันได้ย้อนหลังไม่ถูกรักษาไว้เมื่อมีการอัปเกรดเวอร์ชัน
ส่วนใหญ่เป็นกรณีของการปรับปรุงพฤติกรรมที่ไม่ได้กำหนดไว้หรือฟีเจอร์ที่มีข้อบกพร่อง
ฟีเจอร์อย่างโมดูล คอนเซปต์ และคอรูทีน ก็เป็นส่วนหนึ่งที่ภาษายังคงพัฒนาต่อเนื่องเหมือนกับภาษาอื่น ๆ
โดยเฉพาะในกรณีของโมดูล นี่เป็นความต้องการที่มีมาอย่างต่อเนื่องตั้งแต่ก่อนหน้านี้แล้ว
ผมไม่แน่ใจว่าการเลิกสนับสนุน
std::iteratorจะเข้าข่ายกรณีที่คุณกล่าวว่าเป็นการ "ปรับปรุงฟีเจอร์ที่มีพฤติกรรมไม่กำหนดแน่ชัดหรือมีข้อบกพร่อง" หรือไม่อย่างไรก็ตาม จุดที่ C++ ตามหลังภาษาอื่นอย่างชัดเจนมีหลัก ๆ ดังนี้
ในบรรดาปัญหาเหล่านี้ ผมคิดว่าปัญหาใหญ่คือเพราะชุมชนไม่ค่อยใส่ใจ จึงมีบทความคุณภาพดีอยู่น้อยมาก และด้วยจำนวนผู้ใช้ที่น้อย ทำให้ปัญหาอีกสามข้อที่เหลือไม่ได้รับการแก้ไขด้วย