The main obstacle for me was understanding variables and "=" operator. It wasn't immediately obvious to me what happens to variables in a "for" loop for example.<p>I knew you can count up thanks to it, but I had no mental model of step-by-step execution and variables changing values, so I couldn't predict how this will behave:<p><pre><code> FOR X = 1 TO 10
Z = Y
Y = X + 1
PRINT Z
NEXT X
</code></pre>
It probably didn't helped that I only knew Polish at that time and BASIC was in English and the manual for my C64 was in German :)<p>So I mostly typed in the programs from that manual to see what happens and played with the numbers there to see what changes. Some programs I never got to work - for example the one with sprites. The whole thing with programming for me was to make my own games so I was pretty devastated by that, and it was before anybody had internet so I was stuck :)<p>Then I got a PC and Turbo Basic (and later Turbo Pascal). And a book about Turbo Pascal in Polish - and then I really understood most of the concepts in programming - user defined functions and procedures, recurrence, dynamic memory, pointers, data structures, etc.<p>After that each next language was just a little different from the previous one so it was pretty easy.