คำถามนี้ไม่ใช่ "ทำไมผู้คนยังใช้ภาษาโปรแกรมเก่าอยู่" ฉันเข้าใจว่าค่อนข้างดี อันที่จริงแล้วภาษาการเขียนโปรแกรมสองภาษาที่ฉันรู้จักดีที่สุดคือ C และ Scheme ซึ่งทั้งสองอย่างนี้ย้อนกลับไปในยุค 70
เมื่อเร็ว ๆ นี้ฉันได้อ่านเกี่ยวกับการเปลี่ยนแปลงใน C99 และ C11 เทียบกับ C89 (ซึ่งดูเหมือนว่าจะยังคงเป็นเวอร์ชัน C ที่ใช้มากที่สุดในทางปฏิบัติและรุ่นที่ฉันเรียนรู้จาก K&R) เมื่อมองไปรอบ ๆ ดูเหมือนว่าภาษาการเขียนโปรแกรมทุกภาษาที่ใช้งานหนักจะได้รับคุณสมบัติใหม่อย่างน้อยหนึ่งครั้งต่อทศวรรษหรือมากกว่านั้น แม้ฟอร์แทรนยังคงได้รับการแก้ไขใหม่แม้ว่าผู้ใช้ส่วนใหญ่จะใช้ฟอร์แทรน 77 ก็ตาม
เปรียบเทียบสิ่งนี้กับแนวทางการพูดระบบเรียงพิมพ์ TeX ในปี 1989 ด้วยการเปิดตัว TeX 3.0, Donald Knuth ประกาศว่า TeX เป็นคุณสมบัติที่สมบูรณ์และการเปิดตัวในอนาคตจะมีเพียงการแก้ไขข้อบกพร่อง ถึงแม้จะเกินกว่านี้เขาก็แจ้งว่าเมื่อเขาตาย "บั๊กที่เหลือทั้งหมดจะกลายเป็นคุณสมบัติ" และจะไม่มีการอัพเดทใด ๆ เพิ่มเติม คนอื่น ๆ มีอิสระในการแยก TeX และทำเช่นนั้น แต่ระบบที่ได้จะถูกเปลี่ยนชื่อเพื่อระบุว่าแตกต่างจาก TeX ที่เป็นทางการ นี่ไม่ใช่เพราะ Knuth คิดว่า TeX นั้นสมบูรณ์แบบ แต่เนื่องจากเขาเข้าใจถึงคุณค่าของระบบที่มั่นคงและสามารถคาดการณ์ได้ซึ่งจะทำสิ่งเดียวกันในห้าสิบปีที่ผ่านมา
ทำไมนักออกแบบภาษาโปรแกรมส่วนใหญ่จึงไม่ปฏิบัติตามหลักการเดียวกัน แน่นอนเมื่อภาษาค่อนข้างใหม่มันทำให้รู้สึกว่ามันจะผ่านช่วงเวลาของการเปลี่ยนแปลงอย่างรวดเร็วก่อนที่จะปักหลัก และไม่มีใครสามารถคัดค้านการเปลี่ยนแปลงเล็กน้อยที่ไม่ได้ทำอะไรมากไปกว่าประมวลมาตรฐานหลอกที่มีอยู่หรือแก้ไขการอ่านที่ไม่ได้ตั้งใจ แต่เมื่อภาษายังคงต้องการการปรับปรุงหลังจากสิบหรือยี่สิบปีทำไมไม่เพียง แต่แยกหรือเริ่มต้นใหม่แทนที่จะลองเปลี่ยนสิ่งที่มีการใช้งานอยู่แล้ว? หากบางคนต้องการทำโปรแกรมเชิงวัตถุใน Fortran ทำไมไม่สร้าง "Objective Fortran" เพื่อจุดประสงค์นั้นและปล่อยให้ Fortran อยู่คนเดียว?
ฉันคิดว่าอาจกล่าวได้ว่าไม่ว่าจะมีการแก้ไขในอนาคต C89 เป็นมาตรฐานอยู่แล้วและไม่มีอะไรหยุดผู้คนจากการใช้งานต่อไป นี่เป็นเรื่องจริง แต่ความหมายแฝงนั้นมีผลตามมา GCC ในโหมด pedantic จะเตือนเกี่ยวกับไวยากรณ์ที่เลิกใช้แล้วหรือมีความหมายที่แตกต่างกันเล็กน้อยใน C99 ซึ่งหมายความว่าโปรแกรมเมอร์ C89 ไม่สามารถเพิกเฉยต่อมาตรฐานใหม่ทั้งหมดได้ ดังนั้นจะต้องมีประโยชน์ใน C99 ที่เพียงพอที่จะกำหนดค่าใช้จ่ายนี้ให้กับทุกคนที่ใช้ภาษา
นี่เป็นคำถามจริงไม่ใช่คำเชิญให้โต้แย้ง เห็นได้ชัดว่าฉันมีความเห็นเกี่ยวกับเรื่องนี้ แต่ในขณะนี้ฉันแค่พยายามที่จะเข้าใจว่าทำไมมันไม่ได้เป็นเพียงแค่สิ่งที่ทำไปแล้ว ฉันคิดว่าคำถามคือ:
อะไรคือข้อดี (จริงหรือที่รับรู้) ของการอัปเดตมาตรฐานภาษาซึ่งต่างจากการสร้างภาษาใหม่โดยใช้ภาษาเก่า
--std=x
สวิตช์ของ GCC ) ดังนั้นจึงไม่เหมือนกับการสร้างมาตรฐานที่ใหม่กว่าส่งผลให้เครื่องมือที่ทำให้รหัสเก่าเสถียร