Why you should learn C++ for game development
Tags: cpp, gamedev, beginners, programming
Published: 2021-12-11 00:53:02

The C++ programming language was developed in 1979 and continues to be used for game development to this day. With newer languages like Java being used for game development, beginner developers might wonder if they should learn an older language like C++. Our answer is yes. In fact, we recommend learning C++ even if you aren’t interested in game development. 

C++ is used in numerous AAA video games and gaming engines for good reason. Its low-level programming abilities offer a high degree of flexibility that simply isn't available with higher-level game programming languages such as Python and C#. Because of its flexibility and its similarity to machine code, C++ is excellent for optimizing performance, which is crucial in the context of gameplay.

**We’ll cover**:
* [The C++ programming language](#cpp)
* [C++ in the gaming industry](#cppgames)
* [C++ vs other common game programming languages](#cppvs)
* [Addressing concerns with C++ game development: Safety and coding time](#cppconcerns)
* [Why you should learn C++ for game development](#cppdev)
* [Wrapping up and next steps](#nextsteps)

<br>
<a name="cpp"></a>

## The C++ programming language 
C++ is an intermediate language. Intermediate languages offer **both low-level and high-level language components**. Low-level components allow you to directly access and speak to machine hardware. High-level components offer abstractions that make the code more “human” than writing machine code. An intermediate languages combines the best of both worlds.

While it’s easier to code in strictly high-level programming languages, they also come with guardrails that restrict you from accessing hardware components. Because of this, languages such as C#, Java, and Python can’t offer the same level of control and flexibility as C++. By directly accessing hardware with C++, **you can customize memory management and build performant applications** with efficient code.
<br>
<a name="cppgames"></a>

## C++ in the gaming industry
Game developers have been building games with C++ for decades. C++ allows you to develop games across various platforms, including Windows, Mac, Linux, Android, and iOS. You need a game engine to create games, and C++ is used in numerous 2D game engines and 3D game engines. Godot and Unreal Engine, for instance, use C++ as their scripting language. The Unity game engine is written in C#, but its runtime language is C++. By now, many gaming APIs are written in C++. Its popularity is not the reason it’s great for game development, though.

C++ has stark advantages for game development when it comes to ensuring high performance. **High performance (i.e. minimum latency) is an essential requirement** for game design. During gameplay, several objects need to move in a given second. Even one extra second of lag can break immersion for game players. Because C++ allows you to speak to machine hardware, you can manipulate hardware and control memory management to optimize applications for speed. 
<br>

<a name="cppvs"></a>
## C++ vs other common game programming languages
C++ is a high performer when compared to other languages used for game development. Other popular game programming languages include Python, Java, C, and C#. While C is another low-level language used to program games, the focus of our comparison will be the higher-level languages in the running against C++. These are Python, Java, and C#.

Let’s compare how these languages performed in a generic program: Binary-trees. The binary-trees program allocates, traverses, and deallocates several binary trees, which are tree data structures. C++ outperformed Java, C#, and Python with the fastest runtime of **1,129 milliseconds**. 

![performance benchmarks cpp](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r545mq6ijemne9u1d56r.png)

<center>*These benchmarks were sourced from this paper: https://haslab.github.io/SAFER/scp21.pdf*</center>
<br>

In addition to the flexibility that comes with its low-level components, C++ maintains high performance because it **compiles down to machine code**. Because of this, C++ programs can run at nearly the speed of the machine. On the other hand, higher-level languages require translation into machine code. While it takes a bit longer to write C++ code compared to high-level languages, this is an acceptable tradeoff for performance.
<br>

<a name="cppconcerns"></a>

## Addressing concerns with C++ game development: Safety and coding time
Two common concerns that developers have about learning C++ are: 1.) Manipulating hardware is risky, and 2.) C++ code takes too long to write. Understandably, many people had reservations with C++ because the language saw very few updates between 1998 and 2011. However, C++ has fixed a **three-year release cycle** since 2011. Since then, C++ has been consistently updated with improvements that largely resolve concerns surrounding C++ safety and coding time.

C++ gives you a great amount of power that, when handled incorrectly, can lead to undesired results. 
Historically, C++ programs that incorrectly manipulated hardware have crashed or even led to the dreaded “blue screen of death.” However, **C++ has implemented many safety measures in the last decade** to resolve these concerns. With C++ 11, C++ 14, and C++ 20, large parts of your application can use safer approaches that don’t require manipulating hardware. As always, these safety measures come with some overhead, but C++ is still shining in performance when compared to other languages.

It does take longer to write code in C++ than a high-level language, but C++ has been **modernized to present high-level abstractions**. These high-level abstractions can be used to code very quickly. You can write especially fast with C++ 14, C++ 17, and C++ 20. 
<br>
<a name="cppdev"></a>
## Why you should learn C++ for game development
Anyone who’s serious about working in the game industry should learn C++. C++ code allows you to speak directly to hardware and optimize your applications in ways that aren’t possible when using higher-level languages. This ability to take ownership of hardware components will make you a more nimble and competitive game programmer.

If you’re not interested in game development, you should learn C++ anyway. Whether you’re already a software engineer or new to software development, there’s a lot to gain from learning an intermediate language like C++. You’ll understand far more about how computers operate because of its low-level language components. 

<br>
<a name="nextsteps"></a>
## Wrapping up and next steps 
C++ is an excellent programming language for game development. Its low-level language components give you the freedom to manipulate hardware and ensure a highly responsive gaming experience. While higher-level languages are faster to write in, they don’t give you the flexibility and performance that C++ provides. There are compelling benefits to learning C++ even if you’re not committed to learning game development.  

To help you learn C++, check out Educative's interactive learning path [**C++ for Programmers**](https://www.educative.io/path/cpp-for-programmers). This learning path covers the fundamentals of C++ programming, including data structures, design patterns, and C++ templates. You'll also find C++ tutorials. 

*Happy learning!*
<br>


### Continue learning about C++
* [Why C++ is a good first language to learn](https://www.educative.io/blog/c-is-a-good-first-language-to-learn)
* [The 11 best C++ IDES (and code editors) for 2022](https://www.educative.io/blog/best-cpp-ides-code-editors)
* [Is C++ still a good language to learn for 2022?](https://www.educative.io/blog/learn-cpp-for-2022)