MessiandNeymar

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Thursday, September 27, 2012

Learnable Programming

Posted on 1:50 PM by Unknown

The single best computer science essay of the year has just been published, and it is Bret Victor's Learnable Programming: Designing a programming system for understanding programs.

Warning in advance: this is a long and thoughtful essay; you aren't going to get through it in one sitting; you're going to need to read it, and think about it, and return to it later.

But if you have any interest at all in what computer programming is, in why it is so hard to learn, and so hard to teach, and in what we can do to best prepare our entire humanity for a future in which everything is programmable, and everyone is a programmer, you owe it to yourself to think about the things that Bret Victor is thinking about.

Victor's main observation is that too many people get hung up on the mechanics of programming, and don't understand that what they need to be concentrating on are the concepts of programming:

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

Later in the essay, Victor deals with what I consider to be one of the hardest aspects of trying to teach people how to become programmers: learning abstraction:

The description still says "draw a rectangle here, then a triangle there", but the here and there have been abstracted. Different parameters give us different heres and different theres.

How does a programmer learn to write this abstract code? How does she learn to write a single description that is generalized for many cases?

She doesn't. The learner should start by writing concrete code, and then gradually change it to introduce abstraction. And the environment must provide the tools to perform this process, in such a way that the learner can understand the program at each stage.

Another extremely challenging part of teaching programming is to teach the ability to visualize what the computer is doing, and to identify with the actions that the program is instructing the computer to take:

That's Seymour Papert explaining the Logo turtle. The turtle serves a number of brilliant functions, but the most important is that the programmer can identify with it. To figure out how to make the turtle perform an action, the programmer can ask how she would perform that action herself, if she were the turtle.

For example, to figure out how to draw a circle, a learner will walk around in circles for a bit, and quickly derive a "circle procedure" of taking a step forward, turning a bit, taking a step forward, turning a bit. After teaching it to herself, the learner can then teach it to the computer. The turtle is the in-computer embodiment of the programmer herself, a "self", like the player-character in a video game, and thereby allows the learner to transfer her knowledge of her own body into knowledge of programming.

This is a wonderful article. By looking backward, and looking inward, Victor proposes how we can look forward, and how it is now fully within our grasp to build learning tools which can help us (all 7 billion of us, eventually), to achieve that next plateau of learning how to program, and how to program successfully.

Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Posted in | No comments
Newer Post Older Post Home

0 comments:

Post a Comment

Subscribe to: Post Comments (Atom)

Popular Posts

  • Shelter
    I meant to post this as part of my article on Watership Down , but then totally forgot: Shelter In Shelter you experience the wild as a moth...
  • The Legend of 1900: a very short review
    Fifteen years late, we stumbled across The Legend of 1900 . I suspect that 1900 is the sort of movie that many people despise, and a few peo...
  • Rediscovering Watership Down
    As a child, I was a precocious and voracious reader. In my early teens, ravenous and impatient, I raced through Richard Adams's Watershi...
  • Must be a heck of a rainstorm in Donetsk
    During today's Euro 2012 match between Ukraine and France, the game was suspended due to weather conditions, which is a quite rare occur...
  • Beethoven and Jonathan Biss
    I'm really enjoying the latest Coursera class that I'm taking: Exploring Beethoven’s Piano Sonatas . This course takes an inside-out...
  • Starting today, the games count
    In honor of the occasion: The Autumn Wind is a pirate, Blustering in from sea, With a rollocking song, he sweeps along, Swaggering boisterou...
  • Parbuckling
    The enormous project to right and remove the remains of the Costa Concordia is now well underway. There's some nice reporting on the NP...
  • For your weekend reading
    I don't want you to be bored this weekend, so I thought I'd pass along some articles you might find interesting. If not, hopefully y...
  • Are some algorithms simply too hard to implement correctly?
    I recently got around to reading a rather old paper: McKusick and Ganger: Soft Updates: A Technique for Eliminating Most Synchronous Writes ...
  • Don't see me!
    When she was young, and she had done something she was embarrassed by or felt guilty about, my daughter would sometimes hold up her hand to ...

Blog Archive

  • ►  2013 (165)
    • ►  September (14)
    • ►  August (19)
    • ►  July (16)
    • ►  June (17)
    • ►  May (17)
    • ►  April (18)
    • ►  March (24)
    • ►  February (19)
    • ►  January (21)
  • ▼  2012 (335)
    • ►  December (23)
    • ►  November (30)
    • ►  October (33)
    • ▼  September (34)
      • Uncharacteristic performance from Nakamura
      • I can now vote to close...
      • What I'm reading this week...
      • How to pass a football
      • Driver-less cars
      • Ultra-high-speed photography of rock skipping
      • Learnable Programming
      • Online networking class
      • Yosemite Hantavirus investigations continue
      • Data center power efficiency
      • Jim Gray's mantle
      • 2012 IgNobel awards
      • London 2012 tournament underway
      • Special Delivery
      • Another week of Big Data love
      • Click and Drag
      • A crypto grab-bag
      • The unfriendliness of software
      • Today, one for each of my parents...
      • VMWorld 2012 info
      • When Josiah Whitney climbed Mount Shasta
      • Load the trebuchets!
      • Go underground!
      • A cat is not a dog
      • A post full of follow-ups
      • One year ago
      • 2012 Chess Olympiad heading for a thrilling finish!
      • The Pit River
      • Pulphead: a very short review
      • 2nd/1st RNZIR farewell
      • Kramnik-Aronian, Istanbul Olympiad round 6
      • Journey: a very short review
      • It's a long weekend, so ...
      • VF, MS, and ranking
    • ►  August (29)
    • ►  July (39)
    • ►  June (27)
    • ►  May (48)
    • ►  April (32)
    • ►  March (30)
    • ►  February (10)
Powered by Blogger.

About Me

Unknown
View my complete profile