Comparing natural language and software

NOTE HXA7241 2012-01-22T12:07Z

Natural language is very different to software, but what is similar? what makes them seem related? They seem to focus on abstractions of different character.

Natural language is not entirely defined/determined; whereas software is well-defined by its ingredients. You know the meaning of software – what it will do – because you know the elements and you just put them together according to their rules and the whole meaning/action follows.

Software is a machine. But natural language is like a whole piece of the machine is missing. You cannot really, completely, exactly know what any statement means because so much is left to interpretation by the reader/hearer. There are some rules, some well-defined elements, yet there is also so much looseness in them too.


But, looking closer, software and language are related in this way. They can be seen as not different in kind, but at different ends of a spectrum (or places in a continuum). Software has a high degree of ‘certainty’, and language much lower. It is like software is made out of rigid parts: struts, hinges, etc. (software is not soft!). The ‘certainty’ it has is like the properties of a particular kind of material and its assembly. That means you can do particular kinds of things with it. Language, by comparison, is mushy: programming with natural language would be like building with noodles.

And software must be in the same continuum as language. It cannot be entirely rigid, entirely defined. Looseness is flexibility. If there were no looseness at all, there would be no way to have reusable parts. If something were entirely defined, it could only be used for precisely that purpose. Part of what we want from software is reusability, not just certainty.


So a question might be, do we have or can we have software in other more relaxed places in the spectrum? and what usefulness would that have? But normal natural language already contains such sub-languages. Consider a command. It has vagueness, but it has enough definition to work for a particular kind of use.

So what is the problem? Is it only that these semi-formal sub-languages are not clearly labelled?