C++ is one of the most influential programming languages (perhaps the most) and widely used in the development of systems, embedded software, video games, and applications.
Its history spans decades of evolution and, in many ways, has long been a benchmark and inspiration for all other languages.
Moreover, it is the subject of this course 😉. So, for general knowledge, let’s take a moment to briefly look at some of its history.
1980s: Origins
C++ was created in 1979 by Bjarne Stroustrup at Bell Labs of AT&T, with the purpose of developing a language that combined the low-level features of C with object-oriented programming capabilities.
At that time, the language was named “C with Classes,” and its main goal was to improve the modularity and reusability of code.
In 1983, the language changed its name to C++ (referring to the increment operation in C) and added functionalities such as encapsulation, inheritance, and polymorphism. Essential concepts in object-oriented programming.
The commercial version of the C++ language was released in 1985, marking the beginning of an era in programming (which goes through different stages, including me writing this).
1990s: Standard and Popularization
Throughout the 1980s, C++ gained popularity, largely due to its compatibility with C. This made it easier for C developers to transition, partly because it offered an object-oriented model.
By 1990, C++ had become one of the most important languages in system software and high-performance application development. This growth in the use of C++ propelled the creation of an official standard.
In 1998, the first standardized version of C++ was published, the ISO/IEC 14882:1998 standard (known as C++98), which consolidated the syntax and structure of the language and established the official specifications of the language.
This version also established the standard library (STL), which included data structures like vector
, map
, and generic algorithms that helped developers write code more easily.
STL was created in 1994 by Alexander Stepanov and Meng Lee, and some of its elements were already in use before their official inclusion in the standard.
2000s: Need for Update
In the 2000s, C++ began to face certain challenges. Especially the risk of becoming obsolete with the emergence of new languages like Java and C#.
These languages offered many modern features, such as simple syntax, automatic memory management, portability, libraries, and faster update cycles, etc., etc.
Meanwhile, C++ began to be perceived as a difficult language to learn and use correctly, partly due to the lack of regular updates and the complexity of its memory management.
To maintain competitiveness, the C++ standardization committee began planning a significant update. (It’s coming!)
2011, the Return of the King
In 2011, after more than a decade since the last major update, C++11 was released. This version was a revolution for the language, adding features to try to bring it up to par with “modern” languages (modern in 2011).
C++11 introduced major improvements like lambda functions, automatic type deduction (auto
), smart pointers, concurrent and parallel programming, among others.
But, even more importantly, C++11 marked a turning point because it demonstrated that the language could evolve and adapt to modern needs. Also, that there was intention to do so.
From that moment on, the standardization committee decided to adopt a regular release cycle with new versions approximately every three years, establishing a new era of constant evolution for C++.
C++14, C++17, and C++20
Following the success of C++11, the next versions, C++14 and C++17 solidified the focus on frequent updates.
C++14, released in 2014, focused on minor improvements and fixes to C++11, such as enhancing type deduction and adding the std::make_unique
functionality.
But C++17, released in 2017, added more advanced features, such as std::optional
, std::variant
, parallelism in the STL, and additional data structures like std::any
.
Subsequently, C++20, released in (guess!) 2020, was another major update. It included innovations like concepts, modules, coroutines, ranges, and regular expressions in the standard library.
These features brought C++ closer to other modern languages without sacrificing its performance and low-level control.
C++ Today
Following the regular release cycle, C++23 brings a series of practical improvements. It is not as disruptive an update as C++20; this version focuses on optimizing usability and consistency of the language.
Among the new features, C++23 expands algorithm support in ranges, provides enhancements to the standard library to make it more intuitive and flexible, and includes additional tools for debugging and more convenient syntax for type deduction in templates.
Currently, C++ remains one of the most relevant and widely used programming languages in software development.
Although, the truth is that it has changed a lot since 1998. (In fact, it has become quite complex). If you learned C++98, it’s time to update yourself.
So if you have endured all this information, and want to learn to program in modern C++, continue with the rest of the course 💛.