Câu hỏi này không phải là "Tại sao mọi người vẫn sử dụng các ngôn ngữ lập trình cũ?" Tôi hiểu điều đó khá tốt. Trong thực tế, hai ngôn ngữ lập trình mà tôi biết rõ nhất là C và Scheme, cả hai ngôn ngữ này đều có từ những năm 70.
Gần đây tôi đã đọc về những thay đổi trong C99 và C11 so với C89 (dường như vẫn là phiên bản C được sử dụng nhiều nhất trong thực tế và phiên bản tôi học được từ K & R). Nhìn xung quanh, có vẻ như mọi ngôn ngữ lập trình được sử dụng nhiều đều có một đặc điểm kỹ thuật mới ít nhất một lần mỗi thập kỷ hoặc lâu hơn. Ngay cả Fortran vẫn nhận được các bản sửa đổi mới, mặc dù thực tế là hầu hết mọi người sử dụng nó vẫn đang sử dụng FORTRAN 77.
Tương phản điều này với cách tiếp cận của hệ thống sắp chữ TeX. Năm 1989, với việc phát hành TeX 3.0, Donald Knuth tuyên bố rằng TeX đã hoàn thiện tính năng và các bản phát hành trong tương lai sẽ chỉ chứa các bản sửa lỗi. Thậm chí, ông đã tuyên bố rằng sau khi chết, "tất cả các lỗi còn lại sẽ trở thành tính năng" và hoàn toàn không có bản cập nhật nào nữa sẽ được thực hiện. Những người khác được tự do rẽ nhánh TeX và đã làm như vậy, nhưng các hệ thống kết quả được đổi tên để chỉ ra rằng chúng khác với TeX chính thức. Điều này không phải vì Knuth nghĩ TeX là hoàn hảo, mà bởi vì anh ta hiểu giá trị của một hệ thống ổn định, có thể dự đoán được sẽ làm điều tương tự trong năm mươi năm như hiện tại.
Tại sao hầu hết các nhà thiết kế ngôn ngữ lập trình không theo cùng một nguyên tắc? Tất nhiên, khi một ngôn ngữ còn khá mới, sẽ có ý nghĩa rằng nó sẽ trải qua giai đoạn thay đổi nhanh chóng trước khi lắng xuống. Và không ai có thể thực sự phản đối những thay đổi nhỏ không làm được gì nhiều ngoài việc mã hóa các tiêu chuẩn giả hiện có hoặc sửa các bài đọc ngoài ý muốn. Nhưng khi một ngôn ngữ dường như vẫn cần cải thiện sau mười hoặc hai mươi năm, tại sao không chỉ rẽ nhánh hoặc bắt đầu lại, thay vì cố gắng thay đổi những gì đã được sử dụng? Nếu một số người thực sự muốn lập trình hướng đối tượng trong Fortran, tại sao không tạo ra "Fortive khách quan" cho mục đích đó và để Fortran một mình?
Tôi cho rằng người ta có thể nói rằng, bất kể phiên bản nào trong tương lai, C89 đã là một tiêu chuẩn và không có gì ngăn cản mọi người tiếp tục sử dụng nó. Đây là loại đúng, nhưng ý nghĩa có hậu quả. Trong chế độ pedantic, GCC sẽ cảnh báo về cú pháp bị phản đối hoặc có ý nghĩa khác biệt trong C99, điều đó có nghĩa là các lập trình viên C89 hoàn toàn không thể bỏ qua tiêu chuẩn mới. Vì vậy, phải có một số lợi ích trong C99 đủ để áp đặt chi phí này cho mọi người sử dụng ngôn ngữ.
Đây là một câu hỏi thực sự, không phải là một lời mời để tranh luận. Rõ ràng là tôi có ý kiến về vấn đề này, nhưng hiện tại tôi chỉ đang cố gắng để hiểu tại sao đây không phải là cách mọi thứ đã được thực hiện. Tôi cho rằng câu hỏi là:
Những lợi thế (thực tế hoặc nhận thức) của việc cập nhật một tiêu chuẩn ngôn ngữ, trái ngược với việc tạo ra một ngôn ngữ mới dựa trên ngôn ngữ cũ là gì?
--std=x
công tắc của GCC ), do đó, việc tạo ra các tiêu chuẩn mới hơn sẽ dẫn đến các công cụ làm mất ổn định mã cũ hơn.