C++ is a universal programming language, which considerably eases and comforts the work of a professional programmer. Roundly, C++ is an enhancement of C programming language: C++ offers flexible and effective tools of determination of new data types, which help programmer to split up his work into a number of easily controlled parts. Custom data types can be composed into some objects (called classes), specified by the programmer. Such objects are simple and reliable to be used in the situations, when data types are hard to be defined on the stage of compiling.
Programming by using such objects is called Object Oriented Programming, and C++ is one of the most popular OOP languages. Origin of C++ takes source from programming languages of “C with Classes”, which have been developing during early 80th at the AT&T Bell Labs. “C with Classes” has been used for big projects of modeling and testing of opportunities in programming, which required minimum of process memory and time. But “C with Classes” was not satisfying with its lack of virtual functions and links, and that is why the specialists borrowed some features and tools (like classes) from another programming language, Simula.
The name “C++” has been invented by Rick Mascitti in autumn 1983; it indicates an evolutional transformation from C to C++, because “++” symbolizes the function of increment in C. Since C++ must be classified as an extension of C programming language, it did not receive a name of a higher level group of languages, “D”. Early versions of C++ proved to be efficient for solving of growing complexity of the programming problems. Standard version of C++, released in 1998, includes the Core of the language and Standard Template Library, a modified version of C Library.
C++ presented a lot of new functions and opportunities for a programmer. First of all, those are features of managing with the classes, like constructors, virtual functions, or implementation of encapsulation, abstraction, polymorphism, and inheritance. Besides, C++ offers some improvements in the very programming operations, like using declarations, namespaces, function overloading, default arguments, function-like casts, run-time type identification, inline functions, and many others. Design of C++ is modern and convenient, besides, C++ supports various programming styles (like OOP, data abstraction, etc. ).
The main advantage of C++ is its object orientation. Strategy of OOP helps to develop a great variety of software and to satisfy growing needs of modern programming. Besides, C++ can be characterized with simplicity and fast compiling capabilities; it operates without a sophisticated programming environment. It is very efficient and can be used for a very big range of needs in applications, offering a huge spectrum of opportunities on many different fields, like computing, engineering, business, etc. One more advantage of C++ is its availability: it can be used at supercomputers as well as at personal workstations.
Problems with debugging and memory management are among the most claimed disadvantages of C++. It will take a lot of time to find out an error in a C++ program, because during the process of compilation the errors frequently can be determined only on later stages. In addition, C++ is very good and successful for creating large applications; it is too bulky for being used when writing a small program. Also, despite of C++ being rather simple related to the opportunities it offers, some features, like creating of new data types, or operations of input and output, are very hard to handle for not experienced programmer.
C++ language continues development. There are different groups of specialists, recently working on improving its functional and operational opportunities, in particular, its implementation-specific features and compatibility. A brand-new version of C++ offers a breakthrough in compatibility with other programming languages. It is based on . NET framework that allows transporting of source codes between such programming languages, like C++, C, Java, or Visual Basic.