I know what you mean, I also "see" code in a similar way as the OP author explains numbers.
It's though mostly "blocks" that interact with other "blocks" and a large application is comprised of probably hundreds of blocks organised in specific shapes with interaction lines between them.
This helps me spot "poor" application design when blocks that should be separate are actually intertwined (tightly-coupled or concerns not separated).
It's sometimes hard to describe these in architecture documents or PR's as it seems not everyone is seeing the program on this level.
If I am bored, or trying to fall asleep, I picture reversing a linked list or a bubble sort.
It's fun, isn't it? One of the saddest things about aging is I never again will be a 17 year old blonde girl who looked like Rapunzel with a decade of programming experience in the mid-00s. The dissonance drove people insane.
I “booksmarted” so many guys in college who didn’t get that in real life you can put points into other stats like chr and it doesn’t take away from your int.
So I totally have to write the code to reason about it. I didn’t knew people could imagine portions of code so it explains some things. I’m not sure it bothers me or even if that’s abnormal because it’s always been like that so I can manage that. But it’s tiring.
But it also forced me to learn to be concise and to express the fullness of my thoughts through langage (or code). Which is really useful in this job.
Also, I have ADHD which I know from my psychiatrist affects short term memory. I wonder if "picturing" things happens in the same brain région than short term memory. It would explain a lot of things. Maybe I’m just some individual with broken RAM and I had to compensate with "overclocking" my CPU of thoughts. </personal-theory>