Programming without math, part 6

As Ashley commented the other day, perhaps we shouldn’t even be using the word “programming” to describe what everyone will be doing once everyone is able to give instructions to computers in a non-trivial way. There is a reasonable argument to be made that the very word “programming” has been compromised beyond hope of redemption. I teach in a computer science department at a major university, and my colleagues and I have certainly come across this problem. In some circles there is a sense that we — to use a cultural analogy — are still teaching latin, in a world in which latin is no longer seen as culturally relevant.

This argument is supported by the fact that an entire computation-centric academic universe has sprung up in recent years outside of computer science departments, a universe that didn’t quite exist not that many years ago. In our own university there are computation-centric departments of music technology, interactive telecommunications and information technology, just to name a few. At NYU these three departments are, respectively, in our School of Education, our School of the Arts, and our Business School. At NYU you can have a rich academic experience revolving around computers without ever going near the computer science department. Similar things are happening at other universities.

Not calling it “programming” could have some distinct intrinsic advantages as well. If I tell a computer that I want my virtual agent Fred to deliver some message to John’s mailbox, in most programming languages I would generally say something like “Fred.deliver(thisMessage, John.mailbox)”. This makes perfect sense to programmers, but looks like gobbledygook to anyone else. If we don’t need to call it programming, or even to be consistent with the existing culture of programing, then we are free to say “Fred, deliver this message to John’s mailbox.” Or at least something more along those lines. The latter statement is just as precise, and just as understandable to a computer, but it is also understandable to the 98% of humans who don’t think of themselves as programmers.

Yet there are dangers here. The great computer pioneer Grace Hopper wanted to see something like this — a programming language that would be understandable to non-programmers, and she set about leading a movement to make that happen. What eventually emerged was COBOL, which (although it is interesting in many ways) clearly falls short of the mark.

But one could argue that the reason for this is that COBOL was developed in that old, pre-real-time-simulation world, in which programming without math would have been useless. Were Grace Hopper to start out to realize her dream today, something very different might emerge.

In my next post on this topic I will focus on the grammatical question — how can we allow people to create precise instructions that are understandable to computers, and yet are also comfortable for people who instruct those computers, without requiring those people to completely revise their way of communicating? In a sense, we’d like to combine what was learned from Terry Winograd’s work on SHRDLU with what Mitch Resnick’s team at MIT later accomplished with the Scratch project, making use of what is now possible through the use of interactive computer animation.

Leave a Reply

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