only know small snippets of things
The art of programming is really just breaking down large, daunting, programs into a collection of small snippets.
from Pascal to VB/VBA but only know small snippets
Pascal?!? You may be as old as I am!
The only challenge with C++ is that it’s been around forever and it is a massive “multiparadigm” kitchen sink beast. That, and the same problem any popular language will have; too many libraries to choose from. That said, depending on what you’re doing, it’s probably easier than you think.
JavaScript and Python, the “easy” languages, have a mind numbing number of libraries to choose from. NPM (JS) has over two million packages! While C++ suffers from some this a little, the core is well defined, standardized, and somewhat sane.
I want to learn C++ because Operating Systems
C, not C++, rules the OS roost. In the case of something like Windows, C++ will be a friendly wrapper over the soft C underbelly. C libraries often get C++ as their first abstraction. Other APIs might build over that C++ wrapper.
C is an amazingly simple language, actually. You usually end up building your own toolset to compensate for the simplicity, in addition to the massive library landscape. You might want to try it. People fear C as much as C++, so once you get the hang of it, you’ll have the confidence to do pretty much anything.
Amusingly, Linus Torvalds, creator of Linux and git, once famously said C++ is a horrible language preferring C. Part of his reasoning was that it’s too easy… Don’t take this too seriously, but it does probably express the view of C system programmers.
In your opinion and outside of syntax, what are the most challenging concepts to learn from the novice level?
Programming is hard. The language doesn’t really matter. When you’re first learning to program, you’re learning two very different things: the language itself and how to think like a programmer. Thinking like a programmer, breaking down problems and worrying out what’s needed, is simply not intuitive to most people. That you’re doing this at the same time as learning a language is doubly challenging.
However, if you’ve travelled from small snippets land, you probably have a leg up. Look at any beginner book and you’ll find the same play list: variables, types, strings, if-then,functions, loops, objects. Actually applying concepts is the challenge, really. Using versus learning.
I don’t think I need to worry about memory allocation etc. with C++.
That you even know that this is a thing… Don’t be scared of such things. You actually kind of do need to worry about it in C++, but modern C++ has a lot of tools to automatically take care of it for you (it didn’t always.) Knowing how memory allocation works is the gift, and the curse, of C/C++. A Java/JS/Python/whatever programmer has zero idea how memory allocation works; it doesn’t even come into play. Understanding such mechanics only gives you a deeper understanding.
It honestly sounds like you’re psyching yourself out: just do it!
When learning a new language, I usually write tic-tac-toe. It involves most of the moving parts you need to know in a language and it’s fun. Once it works, then you can start tweaking and learning more. I’ve written hundreds of tic-tac-toe games in every language I’ve ever used, or just played with.
There can be a degree of hubris in newb programmers: “I can write next killer app!” At the same time, struggling toward such lofty goals will always teach you something. Successful programmers have a high tolerance for frustration and a belief they’ll figure it out eventually. Each time you go through the “banging head against wall” phase and come out on the “I finally got it to work” phase, the more confident you’ll become.
Hmm… speaking of that hubris, long ago I started writing a tutorial for would be adventure writers. I’m not sure what state it’s in, but you could take a look at it. It has some C++ code, if nothing else: Colossal Coding Adventure. I should probably revisit that.
TL;DR: Just do it.