A comment adding to Dijkstra on natural language programming

NOTE HXA7241 2010-12-18T21:58Z

To add to Dijkstra's note ‘On the foolishness of “natural language programming”’: language and program are not even properly comparable

What makes ‘natural language’ ‘natural’ is not the appearance, it is what it is used for. A natural language is one used for communicating between humans. It only works the way it does because of what is on the other end of it – another person.

And that is why software must be different. Software must always be an ‘un-natural language’ because its (ultimate, essential) purpose is different (and particular): it is not communication, it is design. It works the way it does because it is for constructing an artifact.

When you look at software, what you see is not a language, it is a machine.

To represent a machine requires a particular kind of structure. A machine has a particular form, and a description or notation that captures it must reflect that form. That form seems to be a recursive, hierarchical regularity – a nestable scaffolding.

Natural language lacks this hierarchical logical structure. It communicates illogically, by allusion, impression, etc. Its use meant it never evolved any other way.

Instead, software must have this logical structure. The term ‘programming language’ is a source of the confusion, now unfortunately established. Software does not communicate to a machine, it embodies the machine.