Rethinking C++

Rethinking C++
in an Era of Go, Rust, and Zig

I explore the modern C++ landscape and am genuinely surprised. From tooling to data-oriented design, it feels like a different language—one that challenges my assumptions and makes me question the rush toward 'rewritten in Rust.'
Infographic: Rethinking C++ in an Era of Go, Rust, and Zig

I operate in a software engineering cosmos where the talk is primarily about Go, Rust, and Zig. Alongside Go, which has been supporting my daily work for over 10 years now, I have mainly delved into Rust and Zig as well. And I must admit: none of these languages has truly convinced me so far. Back then, it felt to me as if Go had brought something completely new—the language itself with its simplicity and transparency, but also its still-powerful integrated toolchain. And even though Rust and Zig bring some very ingenious aspects, I miss precisely that element of innovation. Working with them mostly feels “different.” But should that alone be reason enough to suddenly abandon what’s tried and true?

My Previous Companions

Go and C have been my main companions so far—with C being more of a sidekick. Both are very simple environments: absolutely direct and without wanting to hide much from me. Truth be told, I never warmed up to C++. My only real point of contact was during my studies in the late 90s. At first, it seemed too cryptic to me, and later, I simply didn’t like OOP anymore. Since Go, at the latest, I haven’t had much to do with classical OOP anyway.

A Shift in Perspective

Rust and Zig are not alternatives to Go, but they certainly present an alternative to C++. And precisely because so many are moving away from C++, that was reason enough for me to engage with “modern C++.” And I was shocked—positively.

A Modern Toolchain

First of all, CLion has been available as a free Community version for a while. This immediately gave me a proper and familiar working environment, which is an important criterion for me. When I then started exploring topics like smart pointers and similar concepts, I was astonished. I had heard that there were developments in this area, but trying it out for yourself is something entirely different. It didn’t take long before I found myself wondering why so many brag about their “rewritten in Rust” instead of perhaps modernizing existing solutions.

A New Paradigm for C++

Similarly, I began to no longer view C++ primarily as an OOP language. In fact, Go, Rust, and Zig all seem very similar in this regard. Through this same lens, I took my first steps with modern C++. And to my surprise, this idea is anything but new in the C++ community. Topics like “Structs and Free Functions” or “Data-oriented Design” aim for very clear and simple solutions—not least for performance and resource efficiency. That’s where concepts like Structure-of-Arrays (SoA) come into play, which feel like Go on steroids.

The Build Experience

During my experiments, I was also amazed by what CMake has become. It felt almost as smooth as working with Go: dependencies are downloaded automatically, and the project builds almost “magically.” This has nothing in common anymore with what I used to understand as C++ development.

Conclusion: Not Just Different, But Evolving

I understand that Rust and Zig indeed have their own brilliant solutions. But it simply feels “just different.” New isn’t always better. Sometimes it might also make sense to improve what already exists. And C++ itself seems to have undergone an enormous transformation and continues to evolve.

For me, this means I am now engaging much more intensively with this exciting environment. And note: I was a staunch C++ opponent for a long time. Which proves how important it is to remain open-minded about topics.

Further Exploration

#rust#software-architecture#performance-optimization
Read more in Languages & Runtimes !