One might think so. It's a bit of a mystery, even to me, why I have such a mental block when it comes to abstractions (OOP, references, pointers, classes, "blessings", etc.) and can still handle the rest of it as well as I do. For example, I have little difficulty understanding regex. It's not complexity, per se, that poses a difficulty. It's as though abstraction is some sort of glass barrier for me that I cannot pass. The same mental limitations applied to other sciences as well, such as math. Calculus, trigonometry, etc. were beyond me, but geometry was a pleasure and I didn't even need to do the homework to ace the exams.
Virtually all of the more important modules go deep into abstractions. If, and only if, they give very clear code examples that translate their abstractions to concrete-level programming that I understand, can I use them. For example, I know that
$cgi->param('form_var') is a reference. But I do not need to understand how it works, because all I need is to set it equal (translate it) to a scalar variable that I will actually use in my code--after which I can ignore whatever the "param" function might have been doing.
JavaScript, at least not what I work with, doesn't go into the realm of abstractions. That's why I can work with it. As I said, it's not
complexity that throws me off...it's more like the
mystery of the abstractions. I simply cannot code what I do not understand.
Human languages, even with all of their oddities and exceptions, make a lot more sense to my mind than the more esoteric levels of computer languages--maybe that's why I do better with them.