Googling or searching for any such term will only give 'brief' explanations. Which I already know. |
In my opinion, it is normal to feel stuck where
a.) "advanced" topics assume too much prior knowledge
b.) "beginner" topics assume too little
Because this is where that the learning-curve starts to flatten. You are
not short on things to learn, nor resources to learn from.
Like you, I am a self-taught programmer. For me, the hardest part of self-teaching is maintaining the physical and mental health required - the
self-discipline - to sit down and actually study from a proper resource. Hand-holding tutorials stop being useful after a while.
If you just want someone to make sense of all the info and help you pick a C++ book, I'll do it. Get this one:
Stroustrup: "Programming: Principles and Practice using C++ (Second Edition)" Addison-Wesley 2014, ISBN 978-0-321-99278-9.
You can maybe take the ISBN number to your public library. If you'd rather buy it, assuming you live in the west, you can get a paper copy for probably USD$30. Stroustrup is the original designer of C++, and his books are well-regarded.
If you don't want to buy a textbook, that's okay: you're on a computer, so practice. After all, the materials are cheap.
If your interests are in compilers, consider writing a compiler. If that seems too difficult, aim for an interpreter instead, selecting a simple source language, like a simple Forth or a Lisp. If that still seems too challenging, an expression calculator with parentheses and stuff is very similar, and can be implemented using Dijkstra's shunting-yard algorithm. (It's not trivial, by any means, but achievable - and in fact this is where I suggest you start.)
If you don't want to write a "real" program by yourself, use someone else's. Go find something you're interested in, head over to GitHub or whatever, find an open ticket on some project and work on that. It is
really that simple, and you don't need to be an expert - most programmers will be excited to see some interest in their work.