Monday, October 1, 2012

Learning programming

Great article on learning programming. Has implications for any kind of UI design, since any kind of GUI interaction is really just another way of "programming" your computer. In particular, has implications for my plans to incorporate programmable AIs into my Android games.

A programming system has two parts. The programming "environment" is the part that's installed on the computer. The programming "language" is the part that's installed in the programmer's head.

This essay presents a set of design principles for an environment and language suitable for learning.

The environment should allow the learner to:

  • read the vocabulary -- what do these words mean?
  • follow the flow -- what happens when?
  • see the state -- what is the computer thinking?
  • create by reacting -- start somewhere, then sculpt
  • create by abstracting -- start concrete, then generalize

The language should provide:

  • identity and metaphor -- how can I relate the computer's world to my own?
  • decomposition -- how do I break down my thoughts into mind-sized pieces?
  • recomposition -- how do I glue pieces together?
  • readability -- what do these words mean?


Khan Academy's tutorials encourage the learner to address these questions by randomly adjusting numbers and trying to figure out what they do.

Thought experiment. Imagine if you bought a new microwave, took it out of the box, and found a panel of unlabeled buttons.

Imagine if the microwave encouraged you to randomly hit buttons until you figured out what they did.

Now, imagine if your cookbook advised you that randomly hitting unlabeled buttons was how you learn cooking.


Hahahahaaaa!!! That is ME laughing at YOU, cruel world.
    -Jordan Rixon

I could not love thee, dear, so much,
Loved I not Honour more.

No comments: