Who needs C++ and what for?

C++ is like the Lego constructor: you can build your dream castle, or you can scream in pain when stepping on parts that were forgotten on the floor. It is used to write games and train neural networks, it makes Google search and trading robots work.

The first versions of C++ (C-plus-plus, also called “C-pee-pee” and “pluses”) appeared in the early 1980s. Their creator was the Danish programmer from Bell Laboratories, Bjorn Straustrup. He modeled the distribution of calls over PBXs (automatic telephone exchanges).

Straustrup had two types of languages at that time: low-level languages and languages based on Fortran or Algol, which were very slow.

Low-level languages give full control over computer resources: processor, memory, peripherals. But there are few off-the-shelf tools in such languages, which means that any complex concepts and functions will have to be coded by yourself. High-level languages already have all the necessary abstractions.

Straustrup combined the capabilities of object-oriented C and Simula, an Algol-based language. The main innovation brought to C is classes, the basic element in object-oriented programming, containing the data and the code that manages them.

Thus “C with classes” or “new C” was born, which in 1983 got its final name, C++. “++” is an operator that means “add one.” That is, one more was added to the capabilities of the C language.

Do I need C++?
Yes, if you want to develop complex products and services. Experienced C++ programmers are developers of AI, unmanned vehicles, neural networks, banking, search and GIS systems, operating systems, microcontrollers, browsers, servers and video games.

The main areas of use of C++
Game development and game engines (Unreal Engine, Unity);
GPU-computing (cryptocurrency, deep learning);
Development of heavy-duty and high-performance applications.

C++ is a high-performance language, it helps road maps in GPS to keep up with traffic jams and create optimal routes, favorite games – to keep lagging and deliver full quality with maximally turned up graphics settings, banking services – to be available 24/7 and translations – instantly.

Performance is an important characteristic of any computer game. Counter-Strike, StarCraft: Brood War, Diablo I, World of Warcraft – they all appeared a long time ago and were written in C++, as well as the operating systems of Xbox and PlayStation consoles, kernels of popular Unreal Engine or Unity, on the basis of which a huge number of 3D-games, simulators, shooters and strategies are made.

All because C++ can use object-oriented programming, and when needed, refer to the low-level possibilities of the language, allowing the game to be well optimized for specific platforms and very efficiently perform calculations for graphics. For the same reason, C++ is used in graphics editors (Adobe Photoshop).

Parallelization (simultaneous execution of a large number of simple mathematical operations) makes the language suitable for bitcoins and neural networks. The former can be mined in C++, the latter – to train: most deep learning libraries (TensorFlow, Caffe, Shogun, Pytorch C++ API, etc.) use C++ code CUDA and OpenCL.

C++ is indispensable for high-load applications, it’s used to develop search engines, trading robots, database management systems and network traffic routing.

Mozilla Corporation used C++ to develop its open-source Firefox browser; Amadeus, a system for electronic booking of air tickets, hotels, cruise tours, and car rentals (it processes 5,000 transactions a second, over 1 billion transactions daily); and Yandex.Search and the Google search engine are supported by C++.

Not only programmers need C++, but also:

Technical artists: the link between ordinary artists and 3D modelers in a game project and game engine developers (who are very popular with C++) need to understand the language and understand how everything is programmed to solve problems;
Mathematicians: such typical problems of computational mathematics as solving systems of algebraic equations, differentiation and integration of functions, optimization, interpolation, extrapolation and approximation are solved with C++ implementations of numerical methods;
physicists and chemists: environments and physical processes are modeled in C++;
Musicians: yes, even them! This can be research of acoustic effects, attempts to formalize the creative process, or even the creation of music: at “algoreaves” people rock to the tracks generated by algorithms which a DJ-programmer writes on stage – this is the real cyberpunk.