Check The Programming Section
A high level programming language C++ was founded in 1979 at Bell Laboratory by a Dutch person and computer scientist Bjarne Stroustrup. Initially it is a modification of the C programming language and introduced as “C with Classes” and the shape of the C++ was determined by the experience gained in between 1979 to 1983. Over the time it was thoroughly developed and modern C++ supports features like object oriented, generic and functional features. C++ also provides facilities to support low level memory manipulation. Initially it was developed with a tendency to program embedded systems and to check the performance and efficiency of large resource-contained based software’s.
The idea to add Simula-like features to C was evolved, while the founder worked for his Doctoral thesis at the Cambridge University Computing Laboratory. During that time in 1979, he was looking for an alternative to discover a system software for distributed machine application. The computational framework of the C++ was borrowed from the capability based Cambridge CAP computer, which was the first experimental computer and the continuous evolving of operating System. During his PhD work, he wrote a simulator on Simula (a simulation based programming language) and ran on the IBM mainframe computer, which is available in Cambridge University computer centre. The purpose of this simulator was to simulate the program running on a distributed network.
While writing the simulator, he was very impressed by the class features available in Simula. The class feature allows him to directly map his application concepts to language constructs, which provides more readability to his code, which is not available in any other language by that time [6]. He adopted the ability to capture Simula type errors when writing and debugging the initial part of "C with Classes." In his article, “The History of C++: 1979-1991” it is mentioned that, the development of C++ is came from the conceptual comparison between Pascal's rigidity and Simula's versatility was key.
To avoid the project termination the simulator was re-written in Basic Combined Programming Language (BCPL). He also shared his nasty coding and debugging capability of BCPL while executing the simulator in Cambridge CAP experimental computer. He founds that BCPL is looks like C (as high level language), which have no run-time checking capability.
It was identified that C++ is more suitable for the projects like designing and developing an operating system, writing of simulator and few programming tasks listed below:
A useful tool will generate programs that run as quickly as BCPL systems, and share the ability of BCPL to quickly merge compilation units into a code separately. A simple synchronization convention is needed if the modules written in languages such as Fortran, Algo168, BCPL, C, etc. are to be combined into one program and therefore not stuck in a single language by inherent limitations.
It is also considered that, a system tool must allow for highly transportable implementations. He also understand that, a "healthy" implementation should not depend on some computer, which someone could not effort. He also states that a tool must have many implementation sources, that no complex runtime support system can exist with a host operating system, should not be very limited.
During the initial development the most of the basic programming syntax was inherited from C programming language. In 1979, C++ was introduced as “C with classes” and following new features were added: classes and derived class, access control (public and private), function arguments type checking, default values for function argument, inline function, constructor, destructor and assignment operator overloading.
The first reference manual for C with classes was published in 1982. In 1985, some new features like new and delete operator, function and operator overloading, virtual function, references, const keyword and scope resolution operator were added. In the same year libraries like complex, string and iostream were added and the first C++ compiler, which is known as Cfront 1.0 (known as The C++ Programming Language, 1st edition) was released.
In 1989, few more features such as multiple base class inheritance, pointer to class members, access specifier as protected, non-instantiable (abstract) classes, static and member function as constant with I/O manipulators were added and another version of C++ compiler as Cfront 2.0 was released. In 1990, a book namely “The Annotated C++ Reference Manual” was released, which describes the language as its designed with some features (those are yet to be implemented). This reference manual served as language standard until the standardisation provided by the ISO.
In 1991, features like namespaces, exception handling, nested classes and templates are added to the Cfront 2.0 compiler and another version of C++ compiler as Cfront 3.0 (known as The C++ Programming Language, 2nd edition) was released.
In 1998, the International Organisation for Standardization (ISO) provides the standardisation of C++98 as ISO/IEC 14882:1998. There after it was revised many times and released as C++03, C++11 and C++14 standards by ISO. In December 2017, ISO provides another standard version as C++17 as ISO/IEC 1882:2017. C++20 is the next expected standard and is consistent with the current trend, a new version will be released in every 3 years.
In 1990, the ANSI C++ Committee was founded and later on ISO C++ Committee was formed in 1991. In 1992, Standard Template Library (STL) was implemented in C++. In 1998, ISO provides the first standardisation to C++ as C++98 (ISO/IEC 14882:1998) was released (also known as The C++ Programming Language, 3rd edition).
In 1999, members of the C++ Committee set up the Boost, which is responsible for the production of new high-quality C++ standards libraries. Since then Boost has also been responsible for offering open, peer-reviewed, accessible C++ source libraries. Since 2011, C++ standard committee has continue to belief on Boost as a valuable source for addition to the standard C++ Library.
In 2003, another standard C++03 (ISO/IEC 14882:2003) was released as minor revision to C++98. In this edition mostly technical corrections are added to C++98 and value initialization as a new feature is added.
In 2006 a technical report (TR) (ISO/IEC TR 18015:2006) related to its performance in various parameter was discussed. In this TR, discussion related to the cost of various C++ abstractions and performance in embedded system was reported. In the same report a <hardware> interface to C’s ISO/IEC TR 18037:2008 <iohw.h> also discussed.
In 2008, a library extension to TR1 (ISO/IEC TR 19768:2007) is reported and following list of features were added to the C++ standard library.
features like member function, reference wrapper, special functions related to mathematical operations, tuple, Array, Hash was included as unordered containers and regular expression taken from Boost.
new C99 mathematical functions, floating-point environment, a new type as long long, blank character class, function families such as snprintf(), vfscanf() and C99 conversion specifiers for printf() and scanf() function families are added.
A large number of changes related to abstraction and standardize existing practices was introduced in C++11. In 2011 TR (ISO/IEC TR 24733:2011), IEEE 754-2008 standard was adopted to implement decimal floating point such as decimal::decimal32, decimal::decimal64 and decimal::decimal128 is added to the standard library.
In 2012, the standard C++ foundation[8] was formed and in 2013 the 4th edition of The C++ Programming Language was released. In 2014, a minor revision to C++ standard was made and released as C++14 standard. In 2015 an experimental extension to the C++ file system library was made, which is based on V3 Boost filesystem. Later on this file system extension was added to C++17 standard.
In 2015 an extension for Parallelism was added to the standard library. In TS (ISO/IEC TS 18822:2015) quite a new algorithms such as reduce, transform_reduce also added. In the same year several new features such as optional, sample, string_view, apply, search, allocator behavior was defined dynamically (polymorphic allocators) and variable templates also added and all these extensions and new features are part of the C++17 standard.
Stroustrup, B. (6 May 2014). "Lecture: The essence of C++. University of Edinburgh". Retrieved 12 June 2015.
"ISO/IEC 14882:2017". International Organization for Standardization.
"C++; Where it's heading".
"Nobody Understands C++: Part 5: Template Code Bloat".
Stroustrup, B., 1996. A history of C++ 1979--1991. In History of programming languages---II (pp. 699-769).
Bjarne Stroustrup: Communication and Control in Distributed Computer Systems. Ph.D. thesis, Cambridge University, 1979.
Andrew Binstock (18 May 2011). "Dr. Dobb's: Interview with Ken Thompson". Retrieved 7 February 2014.
https://en.wikipedia.org/wiki/BCPL
https://en.wikipedia.org/wiki/CAP_computer
https://en.wikipedia.org/wiki/Simula
https://en.wikipedia.org/wiki/Cfront
https://en.wikipedia.org/wiki/C%2B%2B03
https://en.wikipedia.org/wiki/C%2B%2B11
https://en.wikipedia.org/wiki/C%2B%2B14
https://www.iso.org/standard/43351.html
https://www.iso.org/standard/43289.html
https://en.cppreference.com/w/cpp/11
https://www.iso.org/standard/38843.html
https://isocpp.org/
https://en.cppreference.com/w/cpp/14
https://www.iso.org/standard/65241.html