How to think like a programmer: What are variables, really?