Want to learn a lower-level language. Should I start with C or C++?

TL;DR C++ but focus primarily on the C parts, use mingw64 that has support for C++17, and steer clear of external libraries until you actually need them for something, because raw C++ and the standard library contains the vast majority of things you'll need starting out, especially for low level.

long version: I'd recommend working in C++ but focus on the C aspects of it. Basically, pretend you're using C but feel free to use and learn useful C++ concepts as you come across them (nullptr, exceptions, specific type casting, constexpr, classes, etc). The only reason C++ is acceptable for low level applications instead of C is thanks to zero-cost abstractions. It's a lot more about language manipulations (a good example being template meta-programming) where as C is mostly all about data manipulation.

When you feel comfortable with the semantics and behavior of the language itself, learn about data oriented design, and try to avoid most OOP "design patterns". You may find some that are useful, but there's a lot of nonsense and code-religion you'll need to dig through.

/r/learnprogramming Thread