
Trong quá trình nghiên cứu luận văn Tiến sĩ của mình vào năm 1979, Bjarne Stroustrup đã được tiếp cận với ngôn ngữ Simula – một trong những ngôn ngữ ông đã sử dụng trước đó – được thiết kế chủ yếu để mô phỏng. Simula 67 – phiên bản ông đã nghiên cứu – được coi là ngôn ngữ đầu tiên hỗ trợ các mô hình hướng đối tượng. Stroustrup đã nhận thấy rằng mô hình này rất hữu ích cho việc phát triển phần mềm, tuy nhiên ngôn ngữ Simula có khuyết điểm là quá chậm so với nhu cầu thực tế.
Ngay sau khi bắt đầu làm việc trên ”C với các Class (C with Classes)”, ông đã sử dụng một ngôn ngữ có sự đa dạng từ ngôn ngữ C, như đã ngụ ý trong tên của nó. Mục tiêu của ông là thêm tính hướng đối tượng vào ngôn ngữ C mà không làm mất đi tính di động của nó và các chức năng cấp thấp. Ngôn ngữ mới của ông bao gồm các lớp đối tượng, khả năng kế thừa dễ dàng, sự nội tuyến (inlining), các hàm với đối số mặc định và khả năng kiểm tra kiểu mạnh mẽ (strong type checking) cùng với các tính năng gốc của ngôn ngữ C.
Được thiết kế riêng cho các học viên mới bắt đầu, không có kiến thức về lập trình, TechMaster cung cấp một khóa học C++ cơ bản thông qua các ví dụ.
Ban đầu, Cfront – một trình biên dịch ”C với các Class (C with Classes)” được tạo ra từ trình biên dịch C có tên là ”CPre”. Mục đích của Cfront là chuyển đổi mã nguồn ”C với các Class” thành mã nguồn bằng ngôn ngữ C gốc. Đáng chú ý, Cfront được viết chính bằng ”C với các Class” và trở thành trình biên dịch tự động biên dịch chính nó (self-hosting). Tuy nhiên, Cfront đã ngừng phát triển từ năm 1993 vì khó tích hợp các tính năng mới, đặc biệt là với các ngoại lệ (exception) trong C++. Tuy nhiên, Cfront đã đóng vai trò quan trọng trong việc phát triển các trình biên dịch sau này trên hệ điều hành Unix.
Ngôn ngữ C với các Class đã được đổi tên thành “C++” vào năm 1983. Toán tử ++ trong ngôn ngữ C được sử dụng để tăng giá trị của một biến và đã giúp Stroustrup có cái nhìn sâu sắc hơn về ngôn ngữ này. Trong khoảng thời gian đó, nhiều tính năng mới đã được thêm vào như hàm ảo (virtual), hàm overloading, tham chiếu với ký tự &, từ khóa const, và comment trên một dòng được thêm vào từ ngôn ngữ BCPL sử dụng 2 dấu “//”.
Tài liệu tham khảo The C++ Programming Language của Stroustrup được xuất bản vào năm 1985. Cùng năm đó, phiên bản thương mại của C++ cũng được phát hành. Vào thời điểm đó, ngôn ngữ này chưa được chính thức tiêu chuẩn hóa, vì vậy tài liệu này là nguồn tham khảo chính. C++ đã được cập nhật lại vào năm 1989, bao gồm các thành phần protected và static, cùng với việc kế thừa từ nhiều lớp.
Sách The Annotated C++ Reference Manual được xuất bản vào năm 1990.- Borland phát hành phiên bản thương mại của trình biên dịch Turbo C++ vào năm 1990.- Turbo C++ đã bổ sung thêm nhiều thư viện, góp phần quan trọng cho sự tiến bộ của C++ vào năm 1990.- Dù phiên bản ổn định cuối cùng của Turbo C++ được ra mắt vào năm 2006, nhưng trình biên dịch này vẫn được sử dụng rộng rãi đến ngày nay.
Chuẩn quốc tế đầu tiên cho ngôn ngữ C++ đã được công bố vào năm 1998 bởi hội đồng chuẩn hoá C++. Chuẩn này được gọi là C++98 và đã được đưa vào sử dụng. Annotated C++ Reference Manual đã đóng góp lớn trong quá trình phát triển chuẩn này. Ý tưởng cho Standard Template Library đã được hình thành từ những năm 1979 và đã được giới thiệu trong chuẩn này. Sau đó, vào năm 2003, các vấn đề được báo cáo đã được giải quyết và được xem xét cẩn thận. Ngôn ngữ đã được cập nhật và thay đổi, và được gọi là C++03.
Tài liệu kỹ thuật (còn gọi là TR1) của hội đồng chuẩn hoá C++ đã được công bố vào năm 2005, mô tả rất chi tiết những tính năng mà họ đang lên kế hoạch để bổ sung và cập nhật vào chuẩn C++ mới nhất. Chuẩn mới này được đặt tên không chính thức là C++0x, vì được kỳ vọng sẽ ra mắt trước khi kết thúc thập kỷ đầu tiên. Tuy nhiên, chuẩn mới này đã bị trì hoãn cho đến giữa năm 2011. Lúc đó, một số tài liệu kỹ thuật đã được phát hành và một số trình biên dịch đã bắt đầu hỗ trợ các tính năng mới mang tính thử nghiệm.
Phiên bản C++ mới nhất (được gọi là C++11) đã được hoàn thành vào năm 2011. Thư viện Boost đã đóng vai trò quan trọng trong việc phát triển phiên bản mới này, các module mới có liên quan trực tiếp đến thư viện Boost tương ứng. Một số tính năng mới bao gồm hỗ trợ biểu thức chính quy (chi tiết tại đây), một thư viện ngẫu nhiên hoàn toàn, một thư viện mới về thời gian trong C++, hỗ trợ atomics, một thư viện chuẩn về threading (mà cho đến năm 2011, cả C và C++ đều thiếu), từ khóa auto, các lớp container mới, hỗ trợ tốt hơn cho các union và danh sách khởi tạo mảng cùng với các templates. Cú pháp vòng lặp mới cung cấp chức năng tương tự như các vòng lặp foreach trong một số ngôn ngữ khác.
Phiên bản dịch của Tạ Quang Tuấn, chuyên viên lập trình iOS tại Techmaster.
Nguồn: http://www.Cplusplus.Com/info/history/.