Sự khác biệt giữa C ++ 0x và C ++ 11 là gì?


82

Tôi thấy cách sử dụng hỗn hợp của hai thuật ngữ này ở đây trên SO.

Wikipedia nói

C ++ 11, trước đây còn được gọi là C ++ 0x ...

nhưng tôi không chắc tại sao.

  • Tại sao lần đầu tiên nó được gọi là C ++ 0x và sau đó là C ++ 11?
  • Ngoài ra, chữ x là viết tắt của gì? Dự đoán của tôi - giống như một biến?

2
Zero phương tiện mà các tác giả của spec là quá lạc quan (không phải là lập trình viên luôn luôn là như vậy?)
Sergey Kalinichenko

2
C ++ 0x là một cái tên rất lạc quan. Gọi nó là DukeNukem, ờ, C ++ 4ever sẽ thực tế hơn.
fredoverflow

6
Tôi không hiểu mối liên hệ giữa con số 0 và sự lạc quan là gì.
René Nyffenegger 22/09/18

5
@ RenéNyffenegger, số 0 đại diện cho sự lạc quan bởi vì mọi người nghĩ rằng tiêu chuẩn sẽ được hoàn thiện vào thập kỷ của những năm 2000 và vì vậy sẽ được gọi là C ++ 08 hoặc C ++ 09. Trong thực tế, nó đã được hoàn thành cho đến năm 2011.
Brennan Vincent

2
Ok, tôi hiểu rồi. Tôi luôn nghĩ rằng nó 0xđược dùng để giới thiệu một chữ thập lục phân.
René Nyffenegger

Câu trả lời:


96

Tiêu chuẩn C ++ và C thường được đặt tên theo năm chúng được xuất bản, điều này giúp dễ nhớ hơn.

Ví dụ, trong C ++, Tiêu chuẩn ban đầu được xuất bản vào năm 1998, vì vậy chúng ta nói về C ++ 98, và khi chúng ta đề cập đến bản sửa lỗi đầu tiên của nó, được xuất bản vào năm 2003, chúng ta nói về C ++ 03.

Người ta đã dự đoán rằng Tiêu chuẩn tiếp theo sẽ được thực hiện vào năm 2008, nhưng vì nó không chắc chắn, nó được đặt tên là C ++ 0x, trong đó tiêu xchuẩn là 8 hoặc 9. Tuy nhiên, trong thực tế, như chúng ta đều biết, kế hoạch đã thay đổi và vì vậy chúng tôi kết thúc với C ++ 11.

Tuy nhiên, đối với phiên bản tiếp theo (C ++ 1x), Bjarne Stroustrup đã tuyên bố ý định của mình sẽ làm điều đó trong 5 năm (khoảng năm 2016). Hiện tại, có những thay đổi được hình dung cho ngôn ngữ cốt lõi (khái niệm, mô-đun và thu thập rác) và trọng tâm dường như tập trung nhiều hơn vào việc mở rộng thư viện (hệ thống tệp chẳng hạn), nhưng vẫn còn sớm nên ai mà biết được!


2
Có một số điều bị đẩy ra khỏi các tiêu chuẩn sau: khái niệm, thu gom rác thải, mô-đun ... (Thu gom rác có lẽ là gần nhất với việc sẵn sàng Và module vẫn cần công việc đáng kể..)
James Kanze

@JamesKanze: Tôi chưa nghe nói về Bộ sưu tập rác và tôi đã quên các mô-đun (cảm ơn). Bản thân các mô-đun thực sự khá dễ dàng (nhiều ngôn ngữ đã có chúng), tôi nhớ Doug Gregor đã nói rằng vấn đề thực sự là thực sự kết nối các mô-đun và hệ thống tiêu đề thực tế thành một tổng thể thống nhất để bạn không cần phải chờ đợi các phụ thuộc của mình di chuyển trước khi bạn làm. Doug đã làm việc chăm chỉ để tích hợp các mô-đun trong Clang, nhưng có vẻ như đã tạo ra một chút để đánh bóng lambdas cho CLang 3.1.
Matthieu M.

14
thông báo từ tương lai, chúng ta có C ++ 14 và C ++ 17
Karolis Ryselis

29

C ++ 0x là tên của tiêu chuẩn trước khi nó được phát hành / hoàn thiện. Sau khi nó được hoàn thiện (vào năm 2011), chúng tôi đã có thể đặt tên cho nó một cách chính xác. Đó là, C ++ 11.


3
Và theo câu đố của Bjarne "x" là hệ thập lục phân ", nó cũng có thể là C ++ 0B. : P
Jon Purdy

@JonPurdy Mục tiêu ban đầu là đưa ra tiêu chuẩn cuối cùng trước năm 2009. Bjarne đã đưa ra nhận xét của mình về việc x là hệ thập lục phân nhưng rõ ràng là chúng tôi sẽ không làm được. (Anh ấy có thể có ý mỉa mai nó. Tôi không biết.)
James Kanze

5
@JamesKanze: Vâng, vâng. Đó là một trò đùa. Các ủy ban tiêu chuẩn phải làm một cái gì đó để làm nhẹ tâm trạng.
Jon Purdy

4

Bởi vì tiêu chuẩn đã được lên kế hoạch để phát hành / phê duyệt trong 200x, nhưng thực tế đã được phê duyệt trong 2011.


4

Khi công việc bắt đầu dựa trên tiêu chuẩn mới, vào năm 1998 hoặc lâu hơn, không ai biết nó sẽ được hoàn thiện vào năm nào - vì vậy chữ "x" tượng trưng cho một năm không xác định, và hy vọng rằng nó sẽ được hoàn thiện trong vòng mười năm hoặc lâu hơn.

Cuối cùng, nó đã được hoàn thiện vào năm 2011, và vì vậy tiêu chuẩn hiện nay được gọi một cách thông tục là C ++ 11 và chính thức là ISO / IEC 14882: 2011.

Bây giờ tiêu chuẩn đó đã chính thức, công việc tiếp tục được tiếp tục; Một lần nữa, không ai biết khi nào điều đó sẽ được thực hiện, nhưng người ta hy vọng rằng sẽ mất chưa đầy một thập kỷ, và vì vậy nó được gọi thông tục là C ++ 1x.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.