Bjarne Stroustrup designed and implemented C++ at AT&T Bell Laboratories in an attempt to improve C language by giving it an object oriented approach. C++was first made commercially available in 1985 while generic programming constructs were added to the language in around 1987-1989. The formal standardization of C++ started in 1990 under guidance of the American National Standards Institute, ANSI, and later under the International Standards Organization, ISO, leading to an international standard in 1998. Thereafter we are having regular revisions to the language as per decided periodicity. The author designed C++ with the sole aim to deliver the flexibility and efficiency of C for systems programming together with Simula’s facilities for object-oriented programming. C++ is designed to make programming more enjoyable for serious programmers. C++ is designed as a general-purpose programming language that is better than C language, that supports data abstraction, object-oriented programming, generic programming and system programming all in one. C++ was primarily aimed at programmers engaged in demanding real-world projects.
C++’s evolution has been driven by real problems. C++ design is devoid of any sterile quest for perfection. Here, every feature must have a reasonably obvious implementation and there is adequate support for each supported style. The aim of C++ was to improve the quality of programs produced by making better design and programming techniques that are simpler to use and are affordable. C++ was designed with a burning desire for a high degree of C compatibility, uncompromising efficiency, object oriented approach and immediate real-world utility.
C++, since the start, has been source-and-link compatible with C and except for minor details, C++ is a superset of C. This implies that C++ programmers immediately had a complete language and toolset available. However, backwards compatibility with C leaves C++ with some syntactic and semantic quirks. For example, the C declarator syntax is far from elegant and the rules for implicit conversions among built-in types are chaotic. Programmers that migrate from C to C++ do not appreciate the fact that radical improvements in code quality can only be achieved by making radical changes to programming styles.
C++ finds wide applications in many domains such as those given below:
Both System and application Development 🡪C++ has been used in development of almost all the major Operating Systems like Windows, Mac OSX and Linux. Many drivers and middlewares have been written in C++. It has equally contributed at the application side. The core part of many browsers like Mozilla Firefox and Chrome has been written using C++. C++ also has been used in MySQL Database. Latest is C++ is getting used in many machine learning and AI based models (especially for image processing).
Programming Languages Development 🡪C++ has been used as a base in development for many new programming languages such as C#, Java, JavaScript, Perl, UNIX’s C Shell, PHP and Python, Verilog etc.
Scientific and numerical programming 🡪C++ is heavily used in scientific computing because of fast speed and computational efficiencies.
Games Development 🡪C++ being object oriented is extremely fast. This enables programmers to code procedurally for CPU intensive functions of a multi-player gaming engine. C++ also provides greater control over hardware.
Embedded System 🡪C++ is being heavily used in developing Medical and Engineering Applications like software for MRI machines, high-end CAD/CAM systems etc.
C++ is a complete object-oriented programming whose framework rests on all four pillars of OOPS i.e. encapsulation, abstraction, inheritance and polymorphism. Standard C++ language consists of three important parts that are given below:
- The core language 🡪it includes all the building blocks including variables, constants, data types, classes, operators etc.
- The C++ Standard Library 🡪 it includes complete set of methods to work on streams, files, strings, sockets etc.
- The Standard Template Library or STL 🡪 it gives tools set to use advanced data structures such as vectors and templates.