Attempt to learn the C programming language, and you will hear the phrase 'everything is just memory' repeated ad nauseum. This may be true, in a sense, but it is not satisfying to the beginner (or to as pedantic a beginner as myself). Morever, it cannot be entirely true, because in that case what distinguishes the components of a program from one another? We can see from reading code there are variables, functions, control flow statements, et cetera. While these will ultimately become '1s and 0s', something must allow for them to be interpreted correctly and in their proper context. Otherwise, it would seem that computers wouldn't work at all!
I therefore must assume that there is some sort of tagging or metadata present with this memory to denote its intended purpose. But how and where is this stored, and how is it structured? In this project, I will attempt to finally ascertain what exactly variables (and other parts of our programs) really are. I desire to bridge the gap between the code in our editors and what the CPU executes. And, hopefully, to dispel my fear of pointers along the way.