I'm a complete programming beginner trying to choose between C and C++ for future school and personal projects. The ideas I'm considering include building a small Linux distribution to understand how Linux works, programming robots and drones, creating a physics simulation, and making an indie game inspired by Undertale.
Since some of these projects are low-level and hardware-oriented while others involve higher-level features like game development and simulations, I'm unsure which language would be the better starting point. I'm leaning toward learning C first to understand fundamentals such as memory and pointers, then focusing more seriously on C++ later.
If I start with C, should I study it for several months before moving to C++, or should I begin learning C++ concepts as soon as I need them? I'd also appreciate advice on how beginners generally transition between similar programming languages.
4 Answers
The most important factor is building projects, not choosing the perfect first language. Start with small programs in whichever language keeps you interested, such as command-line tools, a simple simulation, or a small hardware project. After a few months, try the other language directly instead of learning it only indirectly. Concepts like loops, functions, types, memory, and debugging transfer well, while the libraries and style will need to be learned separately.
I’d start with C++ rather than treating C as a required prerequisite. Modern C++ includes the low-level concepts you want to understand, but also gives you safer and more convenient tools for managing larger programs. It is a strong fit for games, simulations, and robotics. You can learn the parts of C that matter later, especially if you work with Linux internals or embedded systems.
C is a reasonable first language if you specifically want to understand the fundamentals and don’t mind managing memory yourself. Just don’t assume you need to master all of C before touching C++. Learn basic programming first—variables, control flow, functions, arrays, structs, pointers, and debugging—then move to C++ when you want classes, standard containers, and larger project structure. The languages overlap, but modern C++ should not be written as if it were simply C with extra features.
For the projects you listed, either language can be useful, but they have different strengths. C is a good way to get comfortable with memory, pointers, data structures, and how programs interact with the system. That can help with Linux and embedded hardware. C++ is generally the more practical choice for larger games, simulations, and many robotics projects because it provides higher-level tools while still allowing low-level control.
That’s what I was thinking too. I’m probably going to spend a short period learning C fundamentals, then put most of my effort into C++ since it fits more of my long-term projects.

That makes sense. I’ll treat C as a foundation rather than waiting until I’ve mastered every part of it, and then transition once I’m comfortable with the basics.