Two thoughts about learning:
-- Programming is a way of thinking, not a rote skill. Learning about "for" loops is not learning to program, any more than learning about pencils is learning to draw.
-- People understand what they can see. If a programmer cannot see what a program is doing, she can't understand it.
Thus, the goals of a programming system should be:
-- to support and encourage powerful ways of thinking
-- to enable programmers to see and understand the execution of their programs