2 History Versions of C
2 History Versions of C
While Stroustrup was working on his Ph.D thesis in the Computing Laboratory of
Cambridge University, he was impressed by the program organization and concurrency
features of the Simula programming language, which he used to write a simulator. However, he
discovered that the implementation did not scale well, so eventually the simulator was
rewritten in BCPL.
3. C with Classes
For his work at AT&T Bell Labs, Stroustrup decided to enhance the C programming language
with language features like those he found so useful in Simula. He started writing a
preprocessor Cpre that converted C programs with Simula-like classes into regular C code that
could be compiled with existing compilers. The new language was initially simply named, "C
with Classes."
MR. DEVLOVEPER 1
SECTION 1 : INTRODUCTION TO C++ LEARN C++ WITH DCSK!
4. C++ Naming
At this point in C++ history, the language needed a proper name. For some time, it had been
called C84, but that was considered ugly and confusing. Eventually, in 1983, it was computer
scientist Rick Mascitti who suggested the name C++, which can be interpreted as the language
being the successor of C. He renamed “C++” based on Increment operator (++) in C language.
And also added some new features, The new language features included:
• Virtual functions
• Function name and operator overloading
• References
• Const
• User-controlled free-store memory control
• Improved type checking and C++ style comments (which were actually taken from
BCPL).
In 1986 the first revision of the "C++ Programming Language" book was published,
describing the language according to the Cfront 1.0 compiler. [ Compiler translates the
programming code to machine understandable code ]
MR. DEVLOVEPER 2
SECTION 1 : INTRODUCTION TO C++ LEARN C++ WITH DCSK!
7. C++98
This version was released in the year 1998. An important activity was the definition of the
standard library, including the Standard Template Library (STL). Furthermore, it added:
• Real-time type information (RTTI: dynamic_cast, typeid)
• Covariant return types
• Cast operators
• Mutable Bool
• Declarations in conditions
• Member templates
• In-class member initializers
• Separate compilation of templates (export)
• Template partial specialization
• Partial ordering of overload function templates.
The subset removed language features that could hurt performance or were perceived as too
complicated for developers, and thus considered as productivity or correctness hazards.
The banned features were multiple inheritance, templates, exceptions, RTTI, new-style casts
and namespaces. Also, STL and locales were removed from the standard library and an
alternative for iostreams was provided.
Interestingly, EC++ has not been used a lot, and the "Extended EC++" superset that added
templates was more popular.
In response to EC++, the committee released the Performance Technical Report. The
Performance Technical Report provided a model of the time and space overhead implied by the
use of various C++ language and library features. In doing so, it addressed concerns about
performance problems. Furthermore, it presented techniques for efficient implementation.
MR. DEVLOVEPER 3
SECTION 1 : INTRODUCTION TO C++ LEARN C++ WITH DCSK!
9. C++11
In 2011, this version introduced many new major features, so that for many programmers, it felt
like a new language!
C++11 added:
• Memory model
• Concurrency
• Auto and decltype
• Range-for
• Move semantics and rvalue references
• Uniform initialization
• Nullptr
• Constexpr functions
• User-defined literals
• Raw string literals
• Attributes
• Lambdas
• Variadic templates
• Template aliases (using)
• Noexcept
• Override and final
• Static_assert
• Long long
• Default member initializers Initialization in a constructor
• Enum classes.
10. C++14
In 2014, this version introduced to have an alteration of major and minor releases, so that
C++14 was aimed at completing C++11. It added:
• Binary literals (0b)
• Digit separators
• Variable templates
• Function return type deduction
• Generic lambdas
• Local variables in constexpr functions
• Move capture
• Accessing a tuple by type
• User-defined literals in the standard library.
MR. DEVLOVEPER 4
SECTION 1 : INTRODUCTION TO C++ LEARN C++ WITH DCSK!
11. C++17
In 2017, after the minor C++14 release, C++17 (https://www.perforce.com/blog/qac/should-
iadopt-cpp17) should have been a major update. Unfortunately some major expected features,
such as concepts and coroutines, did not make it in this version.
12. C++20
In 2020, the major features that did not make it in C++17 were added in C++20. As a result, this
version is a bigger step forward, comparable with the step from C++03 to C++11, so we can say
that this version is the major upgrade that C++17 was supposed to be.
Other new language features are compile-time computation support, spaceship operator
<=>, concurrency improvements, designated initializers, and class types in non-type
template parameters (also allowing string literals as template parameters). Furthermore,
the new standard library features are ranges, date, span, and format.
13. C++23
This version introduced in Oct 2024, because of due to administrative red tape between final
approval and publication. And it is the current latest version of C++ in 2025.
MR. DEVLOVEPER 5
SECTION 1 : INTRODUCTION TO C++ LEARN C++ WITH DCSK!
C++23 will soon be released with small but significant adjustments, and work has already
begun on C++26.
In Dec 2022, C++ ranked third and in Nov 2024, the language ranks second after Python.
C++ continues to rise in popularity, and its use is expanding — including creating applications
for virtual reality (VR) via the Unreal Engine, and also in cryptocurrency applications.
MR. DEVLOVEPER 6