คณะกรรมการมาตรฐาน C ++ ทดสอบแนวคิดการออกแบบอย่างไร


29

คณะกรรมการ C ++ ทดสอบข้อกำหนดการออกแบบใหม่ของพวกเขาด้วยคอมไพเลอร์ต้นแบบบางประเภทก่อนปล่อยมาตรฐานใหม่หรือไม่? หรือพวกเขาปล่อยมาตรฐานซึ่งเป็นผลทางทฤษฎีเท่านั้นจนกว่าคอมไพเลอร์ขนาดใหญ่ใช้มันได้หรือไม่



4
Boost ทำหน้าที่เป็นต้นแบบสำหรับการปรับปรุงห้องสมุดจำนวนมาก เช่น=>boost::shared_ptr std::shared_ptr
MSalters

6
ฉันคาดหวังว่า "พวกเขาไม่ได้" ง่าย ๆ
Sebb

@MSalters: Boost ยังทำหน้าที่เป็นต้นแบบสำหรับการปรับปรุงภาษาหลักจำนวนพอสมควร (เช่นboost.lambda=> การแสดงออกแลมบ์ดา C ++ 11)
Jerry Coffin

คำตอบ:


26

c ++ คณะกรรมการมาตรฐานมีข้อบังคับและกฎระเบียบ แต่ส่วนมากของเหล่านี้จะแน่นิ่งโครงสร้างขององค์กรวิธีการที่จะยื่นข้อเสนอการลงคะแนนเผยแพร่มาตรฐาน ฯลฯ และไม่มากในรายละเอียดทางเทคนิคของมาตรฐานตัวเองหรือว่ามัน อาจมีการทดสอบ

ไม่มีข้อกำหนดอย่างเป็นทางการสำหรับ "การทดสอบ" คุณสมบัติหรือการออกแบบเท่าที่ฉันรู้ C ++ นั้นมีลักษณะเฉพาะที่ไม่มีการอ้างอิงหรือการใช้ "หลัก" (เช่น Microsoft CLR, Oracle JDK, Zend PHP) อย่างไรก็ตามคณะกรรมการประกอบด้วยหลายองค์กรที่มีความรู้อย่างลึกซึ้งเกี่ยวกับการใช้ภาษาและคอมไพเลอร์ ตัวอย่างเช่นหากคุณไปที่ลิงก์ก่อนหน้านี้คุณจะเห็นตัวแทนจาก Microsoft และ Intel ซึ่งทั้งคู่มีคอมไพเลอร์ C ++ ที่ได้รับการยอมรับอย่างดี เรดแฮทและ บริษัท อื่น ๆ อีกสองสามแห่งที่บริจาคให้ GCC ก็มีส่วนเกี่ยวข้องเช่นกัน

เมื่อเสนอคุณสมบัติใหม่สมาชิกคณะกรรมการมีความคิดที่ดีอยู่แล้วว่าเป็นไปได้หรือไม่ถ้ามันขัดแย้งกับคุณสมบัติอื่น ๆ หรือทำให้ไวยากรณ์ไม่ชัดเจนในลักษณะที่ทำให้การแยกวิเคราะห์ซับซ้อนโดยไม่จำเป็น ( นี่เป็นคำถามที่ดีเกี่ยวกับไวยากรณ์ของ C ++ )

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

จากการมีส่วนร่วมของผู้จำหน่ายคอมไพเลอร์ในกระบวนการมันเป็นไปได้ที่หนึ่งหรือมากกว่านั้นอาจเป็นต้นแบบคุณลักษณะใหม่ แต่อีกครั้งไม่มีข้อกำหนดอย่างเป็นทางการสำหรับเรื่องนี้หรือมันเป็นสิ่งที่ฉันได้อ่านในเอกสารที่เปิดเผยต่อสาธารณชนจาก คณะกรรมการ C ++

พวกเขายังมีแนวโน้มที่จะมากอนุรักษ์นิยมเพิ่มขึ้นการเพิ่มคุณสมบัติใหม่ที่มีความต้องการในโลกแห่งความจริงโดยไม่ได้ระบุจำนวนมากของคุณสมบัติใหม่ที่อาจพิสูจน์ได้ว่าเป็นความเสี่ยง ในความเป็นจริงในช่วงไม่กี่ปีที่ผ่านมาพวกเขาได้เพิ่มคุณสมบัติใหม่ที่มีอยู่เป็นส่วนขยายที่เป็นกรรมสิทธิ์หรือไลบรารีโอเพนซอร์สที่ทำงานอยู่ในโลกแห่งความเป็นจริงแล้ว ตัวอย่างเช่น C ++ 11 และ C ++ 14 รวมส่วนของBoostซึ่งได้รับการทดสอบในโลกแห่งความจริงในคอมไพเลอร์และสภาพแวดล้อมการทำงานหลายอย่าง ไม่จำเป็นต้องทดสอบสิ่งที่ผ่านการทดสอบแล้ว


5
ConceptGCCและConceptClangเป็นสองตัวอย่างของคอมไพเลอร์ (หรือแทนที่จะใช้คอมไพเลอร์) ที่สร้างขึ้นอย่างชัดเจนเพื่อต้นแบบและได้รับประสบการณ์จริงด้วยคุณสมบัติภาษาที่ซับซ้อน แนวคิดยังเป็นตัวอย่างของวิธีการออกแบบคุณสมบัติทางภาษาอย่างละเอียดใน C ++: แนวคิดได้รับมาตั้งแต่ปี 1998 เป็นแนวคิดที่ไม่เป็นทางการที่จะพูดคุยเกี่ยวกับเทมเพลต C ++ จากนั้นในปี 2006 เป็นคุณสมบัติทางภาษาที่เสนอโดย Bjarne เอง ตั้งแต่นั้นมา พวกเขาอาจ ...
Jörg W Mittag

3
…จบลงใน C ++ 17 ซึ่งหมายความว่าพวกเขาจะครบกำหนดประมาณ 10 ปีในการดำเนินการและ 20 ปีตามความคิด
Jörg W Mittag

2
ฉันคิดว่านี่เป็นเรื่องจริงเป็นส่วนใหญ่ คุณสมบัติใหม่มักจะต้องมีการใช้งานก่อน ครั้งหนึ่งสิ่งนี้ไม่ได้เกิดขึ้นเราได้ส่งออก
isanae

5
วรรคสุดท้ายคือเรื่องไร้สาระ คณะกรรมการ C นั้นค่อนข้างอนุรักษ์นิยม แต่ C ++ ได้เพิ่มสิ่งใหม่ ๆ ทุกประเภทตลอดเวลาโดยคำนึงถึงสิ่งที่ทำให้ภาษายุ่งเหยิงหรือแก้ปัญหาที่คนต้องการแก้ไข

1
@R .. ฉันไม่เห็นด้วย C ++ 11 เป็นความผิดปกติ แต่ก็มีหลายสิ่งหลายอย่างที่มีอยู่แล้ว (ดูตัวอย่างความคิดเห็น Boost ของฉัน) สำหรับชีวิตของ C ++ ส่วนใหญ่มันมีการพัฒนาช้ามากซึ่งเป็นข้อร้องเรียนสำคัญที่ผู้พัฒนาหลายคนมีเกี่ยวกับภาษา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.