Why C++ in 2017 ?
What are the advantages of making software with C/C++ in 2017 ? The question is simple. But the response is extraordinary powerful. Let me explain...
If you are on the server, you want performance... You don't want to distribute a huge framework and cross too many layers. If you have the socket handler, you make the process and you use the socket back. It's fast, it's powerful. Look at the casablanca library, it is built for that. You have REST support and it's build to be easy to use it. Looking for an existing HTTP server ? Just explore the source code of NGINX. Another ? Look at lighttpd, it's small, it is fast. On the server, you achieve more than any other language and your are close to the CPU, very close if you use optimized code or low level processor extensions API.
On the Linux land, everything (in my opinion 98%) is done using C and C++. You can download the source code of your favorites applications. It's a fabulous way to discover all the magic of theses softwares.
If you are on the mobile, you need to manage the battery, the memory and manage resources in general. Here, the king is C/C++. You allocate the number of bytes you need, you create threads to gain extra power and you are responsible to free resources you use. If you need to process data like image or video or music, the signal stuff must be written in native code and this is the only solution.
Let's talk about databases or database engines files based like MySQL or Codebase, you have a C source code base. You build it on your platform and you can gain access to this marvelous engines. You build upon your operating system, there is nothing closest than that. Next stop is registers and code optimizations. Your compiler can handle it alone, it's just a matter of compiler flags.
On the desktop land, it's simple: can you run your application on Windows XP, Vista, Seven, Windows 8.x and Windows 10 ? Some of yours would say "may be, may be not". In C++, you can. No framework to distribute. Just the vcredist.exe magic stuff. 10 MB.
C++ applications means superiority in CPU usage, memory management and lower battery utilization : it's a fact. It's part of the deal. It runs fast by default.
In the C++ world we don't create a class witch contains 5 methods and 2 fields like in Java or C#. We do more. A lot more. Our class are consequent and take a lot of stuff inside because it is interesting to have a project with 10 files of 100 KB rather than 300 files of 3 KB organized with fuzzy concepts. We do OOP better. It's more compact, it's real, it just works.
In C++, we have the feature of the templates. It's superior to C# generic and it's used differently. The STL is the Standard Template Library, it's made with templates. The std::string is made with it, the vector<T> is made with it, it's magic and efficient. We support multi-inheritance. We don't create interfaces when it's not necessary. C++ coding is the superior form of coding for OOP compared to productive language like Java or C#.