My seminal experience with programming was in high school, where we were introduced to programming by Mr. Gray in a little metal portable squeezed in between two "real" buildings on the Rincon campus in Tucson. He introduced us to a little language called STOP that was implemented on an IBM 360 the school district had. STOP was basically a trivial assembly language for a mythical machine. It had pushes and pops and various forms of register-indirect addressing instructions available. We programmed it using punch card decks made up on Big Gray Monsters.
The key was that Mr. Gray talked to us about meta-programming: how STOP was implemented on the 360, and how our programs could themselves implement languages as well as programs. To say that he fired my imagination is an understatement. I'm still fired up about the concepts he taught us to think about.
Don Wilde
"There's more than one level to any answer."