C++ in the wild: Which industries use C++?
29 de abril de 2022
0 minutos de leituraC++ has been used extensively in its 37 year history, and still used today when building cross platform applications, device firmware, and much more. According to the March 2022 TIOBE index, C++ is the fourth most popular programming language based on the number of skilled engineers, courses, and third-party vendors.
In this post, we’ll discuss what C++ is, why it’s so popular, and reference a number of real-world use cases for the language. We’ll also look at some potential security concerns to keep in mind when building C++ applications.
What is C++?
C++ (or C plus plus) is a general purpose programming language used for applications, games, operating systems, embedded systems, and many other types of software. It was developed in the 1980s to extend the C language, primarily by adding object-oriented programming features. As the maturity and capacity of hardware grew, so did the need for an object-oriented approach to application development. C++ made faster application development a reality, and was widely adopted because it combined object-oriented programming with speed and portability.
Why use C++?
Development teams choose C++ for its performance. As a low-level language that’s extensible and lightweight, C++ can run quickly and reliably on a wide range of hardware and devices — making it ideal for applications that are resource-intensive or running on limited hardware.
Top 9 C++ use cases
1. Operating systems
Since C++ is fast and has a collection of system-level functions, it’s ideal for building software that runs close to the hardware. That’s why many operating systems, including large sections of Mac OS X and Windows, are built using C++.
2. Databases
Performance is critical for highly scalable data management software, so C++ is an ideal programming language for databases and is widely used for data processing. Two of the most popular database solutions, Postgres and MySQL, are built using C++.
3. Browsers
Modern web browsers need to display complex and dynamic web pages within milliseconds to offer a positive user experience. This requires a high-performance rendering engine, which is most often written in C++. This is the case for Mozilla Firefox,Google Chrome, and most other modern web browsers.
4. Machine learning tools
Machine learning tools need to process massive amounts of data quickly and efficiently, making a fast programming like C++ essential. For example, the core calculations for TensorFlow, a popular ML framework, are written with C++ code.
5. Fintech and Banking
The most popular banking applications process millions of financial transactions each day, making C++ a good choice for backend banking systems while adhering to regulatory financial industry compliance. The C++ language includes features for multithreading and concurrency, which enable the application to process numerous transactions simultaneously to reduce latency.
6. Game development & AR/VR
Modern game development requires high performance to render complex 3D worlds and handle multiplayer networking. C++ has features for low-level resource manipulation that allows game developers to make the most of the hardware a game is running on.
C++ is also a popular option for building augmented and virtual reality (AR/VR) applications, because massive amounts of sensor data must be processed in real time. In addition, many AR/VR games are built atop the Unreal Engine, which is written in C++.
7. Embedded systems & IoT devices
Embedded systems are devices like smartwatches, medical devices, and other equipment that combines hardware and software into a dedicated solution. Because the software is designed specifically for a particular device, using a lower-level language like C++ allows developers to use low-level function calls and directly manage resource usage to get the best performance out of the hardware.
Similar to embedded systems, the software for internet of things (IoT) devices needs to run close to the hardware. That’s because IoT integrates numerous, internet-connected devices into a centrally controlled system. C++ is ideal for IoT because it requires high-performance embedded systems, fast networking capabilities, and the ability to quickly process large amounts of data. Industrial machine systems, which use embedded systems and IoT, often use C++ for these reasons as well.
8. GUI-based apps
The C++ ecosystem has a variety of frameworks for building applications with graphical user interfaces (GUIs). These frameworks or GUI toolkits are often provided by each operating system, so developers can design applications with native user interfaces. There are also many cross-platform GUI frameworks for building applications with user interfaces across multiple platforms.
9. Cloud and distributed systems
Cloud computing systems are required to run close to the hardware, making C++ an ideal choice for cloud storage and compute solutions. The multithreading support of C++ is great for performance, which is crucial for handling a lot of requests and implementing load balancing. C++ is also a very portable language, so the cloud software can be run on a variety of servers and cloud based infrastructure.
C++ security concerns
As with any programming language, there are things to keep in mind when building applications with C++. For one, the C++ compiler lacks the safety nets most other languages have, so low-level code mistakes involving memory management can more easily reach production and expose the application to attack.
Type safety and validation is another area of concern with C++ applications. Type casting is a C++ feature that allows the developer to convert an expression into another type (integer, boolean, character, etc.). However, this can also result in the retrieval of bad data, and if developers aren’t adequately validating inputs, become exploitable.
The industry’s growing reliance on open source software is another potential risk area because it could introduce security vulnerabilities into C++ applications. Unlike other programming languages, many C++ developers do not use standardized processes for managing open source dependencies. This makes it even more difficult to identify open source packages and detect potential vulnerabilities.
Securing your C++ code with Snyk
As we’ve recently announced, Snyk has added C++ scanning support for open source code and libraries. Snyk Open Source can detect vulnerabilities in open source dependencies, even when development teams are not using a dependency management system.
Primeiros passos com Capture the Flag
Saiba como resolver desafios de Capture the Flag assistindo ao nosso workshop virtual de conceitos básicos sob demanda.
The Snyk Vulnerability Database now includes a wide range of vulnerabilities discovered in unmanaged C++ packages. This is especially critical in the C++ ecosystem, where many developers choose to bundle open source packages with the application code.