Programming language is like math. You are given the weird abstract concepts that are hard to understand because you can't see the use for them. Only when you are given a problem where you need them will you understand them.
Until I was playing with code and needed an array. Suddenly the light went on, "that's what they meant".