login/register

Snip!t from collection of Alan Dix

see all channels for Alan Dix

Snip
summary

Because my work was cited as an inspiration for the Khan...
Programming is a way of thinking, not a rote skill. ...
People understand what they can see. If a programmer ...
Thus, the goals of a programming system should be:
... turn it into som

Bret Victor, beast of burden
http://worrydream.com/#!/LearnableProgramming

[From frame: http://worrydream.com/LearnableProgramming/]

Categories

/Channels/techie/programming

[ go to category ]

For Snip

loading snip actions ...

For Page

loading url actions ...

Because my work was cited as an inspiration for the Khan system, I felt I should respond with 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

A live-coding Processing environment addresses neither of these goals. JavaScript and Processing are poorly-designed languages that support weak ways of thinking, and ignore decades of learning about learning. And live coding, as a standalone feature, is worthless.

Alan Perlis wrote, "To understand a program, you must become both the machine and the program." This view is a mistake, and it is this widespread and virulent mistake that keeps programming a difficult and obscure art. A person is not a machine, and should not be forced to think like one.

How do we get people to understand programming?

We change programming. We turn it into something that's understandable by people.

HTML

<p>Because my work was <a href="http://ejohn.org/blog/introducing-khan-cs">cited</a> as an inspiration for the Khan system, I felt I should respond with two thoughts about learning:</p> <ul> <li><b>Programming is a way of thinking, not a rote skill.</b> Learning about "for" loops is not learning to program, any more than learning about pencils is learning to draw.</li> <li><b>People understand what they can see.</b> If a programmer cannot see what a program is doing, she can't understand it.</li> </ul> <p>Thus, the goals of a programming system should be:</p> <ul> <li>to support and encourage powerful ways of thinking</li> <li>to enable programmers to see and understand the execution of their programs</li> </ul> <p>A live-coding Processing environment addresses neither of these goals. JavaScript and Processing are poorly-designed languages that support weak ways of thinking, and ignore decades of learning about learning. And live coding, as a standalone feature, is worthless.</p> <p>Alan Perlis wrote, <i>"To understand a program, you must become both the machine and the program."</i> This view is a mistake, and it is this widespread and virulent mistake that keeps programming a difficult and obscure art. A person is not a machine, and should not be forced to think like one.</p> <p><i>How do we get people to understand programming?</i></p> <p>We change programming. We turn it into something that's understandable by people.</p>