Comment by vivzkestrel

4 days ago

- stupid question, since we are on the topic of c++, i finished reading through learncpp.com

- how do I take this from 0 to the guy that builds a play station 3 emulator?

- like seriously what kind of step by step projects or learning experiences in increasing order of difficulty do you recommend to get really really good at c++

The fun thing about C++ is that it’s really hard. The even more fun thing is that the domain knowledge behind is even harder - game engines, high performance clusters, emulators, real time simulations, rendering engines, high frequency trading - so more often than not most C++ devs commit to learning a language subset and then focus their energy on the task at hand. A PS3 emulator might be a switch statement (not really, but you get the point)

  • > The fun thing about C++ is that it’s really hard.

    C++ definitely has a higher cognitive load than your average interpreted language. However, a big part of that cognitive load is due to support for highly optimized scenarios such as return value optimization. Most people write code that doesn't require it at all, and that's perfectly fine. The same goes for move semantics. You can spend a whole career writing code where all your classes do deep copies when passing objects by value. The compiler even graciously helps you not have to write all constructors and assignment operators to have your POCO class work out of the box. But once you feel the need to avoid those copies then you need to know what to do to nudge the compiler do that for you. That is a while subtle dance. That's when the cognitive load starts growing.

I would recommend reconsidering the "PS3" part. I had to revisit a codebase that supported the beast more than a decade ago recently, and I was in shock at how weird the PS3 bits were. As for "really good", I would dodge that since I have only been using C++ for like 25 years =)

> like seriously what kind of step by step projects or learning experiences in increasing order of difficulty do you recommend to get really really good at c++

I'm not sure if you're personally interested in this, but the main way I learned is by writing my own game engine (Casey Muratori's Handmade Hero-style) and writing mods for games (even by reverse engineering). It actually teaches you almost everything you need to know both from a language perspective AND it forces you to understand each individual step of how a program works (input/audio/networking/graphics/logic). You can go step-by-step mastering each thing as you go.

Getting very good at C++ takes more than a decade. There are no shortcuts. You will have to start by getting in the trenches and write some code.

  • > ... and write some code.

    This but replace some with more. Write more code! Programming is like any other discipline which requires constant training and exercise. Doesn't matter if its Jujutsu or C++, you must train and become well versed in all the aspects of the craft.

There's no simple universal roadmap for becoming competent. You just need to grind out whatever skill you're trying to master as much as possible. 10000 hours is the common number thrown around, but plenty of programmers have been doing it for more than that and can't even tell you how an emulator is supposed to work.

So to answer your question: work longer and harder than the people who don't know how to write a PS3 emulator (especially those who think they can take a shortcut with AI)

You don’t need to be really good at cpp to write a crappy emulator. All the “really good” stuff is about eeking out performance. If you want to build an emulator start with a qt gui and go from there. By the time you’re done you’ll be good enough