Programming without math, part 5

One of the important signposts on the road to programming without math was a wonderful project almost forty years ago (!!!) called SHRDLU. It was the 1970 Ph.D. thesis of Terry Winograd, who is now a prof in the Stanford Computer Science department (and a very nice guy). He created computer software to simulate a “blocks world” (a world where everything is simple blocks of different shapes and colors). A person could interact with a simulated robot in this world, typing in dialog to tell the robot to put this block on top of that one, or asking the robot questions such as “what’s the color of the top-most block”. The computer did a very good job of figuring all of these things out. Here is a snippet of dialog from one conversation between a person and SHRDLU:

Person: Pick up a big red block.
Computer: OK.
Person: Grasp the pyramid.
Computer: I don’t understand which pyramid you mean.
Person (changing their mind): Find a block which is taller than the one you are holding and put it into the box.
Computer: By “it”, I assume you mean the block which is taller than the one I am holding.
Computer: OK.
Person: What does the box contain?
Computer: The blue pyramid and the blue block.
Person: What is the pyramid supported by?
Computer: The box.
Person: How many blocks are not in the box?
Computer: Four of them.
Person: Is at least one of them narrower than the one which I told you to pick up?
Computer: Yes, the red cube.

As you can see, the results were pretty darned impressive. What interests me about this conversation is not the fact that the computer is understanding and speaking in English (although that’s very cool) but that the person is able to manually direct the computer – step by step – to do something.

There are, in fact, a number of interesting things to note about the above dialog. For example, it is clear that if you tell SHRDLU to pick up a pyramid, and there happens to be more than one pyramid, SHRDLU gets confused – and tells you so – since it can’t know which pyramid you meant. So you have to be precise when you tell it what to do. But you don’t need any math – just clear instructions.

My current quest for pwm is related to SHRDLU, in the sense that giving someone a cooking recipe is related to manually telling them how to cook step by step. The difference is that if you can manage to give someone a recipe, then you don’t need to be there instructing them at every step. In the case of computers, this means that they can perform tasks for you that involve not just a few blocks, but millions of blocks (or millions of web pages).

Yesterday I described the general idea of programming without math to my mom, and she got the idea instantly. She say “oh I see, you don’t need math, just logic.” My mom got it exactly right (as she generally does). Indeed, what is required for pwm – and you see it in the SHRDLU dialog – is that the person doing the programming understand that they are dealing with a computer – a creature built of logic.

To me, the most interesting thing about the success of SHRDLU is not what the computer is doing, but rather what the person is doing. The person is adapting to the literal ways of the computer – using the powerful human mind to understand what is going on, and adjusting accordingly. People are amazing at adapting to new situations, once we know what to expect from those situations.

And that is one reason I think pwm – if it is done right – has a real chance of being accessible, and useful, to a very large number of people.

3 thoughts on “Programming without math, part 5”

  1. So this would require not only a paradigm shift, but also likely a new definition of ‘programming’; which I’m guessing is why you’re referring to it as ‘pwm’. ‘Programming’ as we know it now would still be necessary – the ‘back-end’ and the ‘user interface’ still needs to be developed – but the vast majority of people would be using ‘pwm’. Maybe the moniker ‘programming’ has to be dropped entirely, so that we can leave our 20th century preconceptions in the past.

    By the way, I hate to throw a damper on things, but ‘pwm’ looks a lot like ‘pwn’ – which could either be completely disastrous, or very helpful in the long run. 🙂

  2. I’m not yet getting how “Is at least one of them narrower than the one which I told you to pick up?” is programming without math, but Scratch is programming with math. But, I will read on…

Leave a Reply

Your email address will not be published. Required fields are marked *