Hacker News new | ask | show | jobs
by joe_the_user 4453 days ago
Wow, there are many ways to go with this...

I would claim that natural language is the most usable and the most powerful user interface. We humans have been relating with it for quite a while and there's no sign of a let-up.

And most programming language either contain fragments of natural natural language or can be translated into such fragments. Yet, the author is right, programming languages are "least usable". Indeed, consider SQL was created specifically to be usable like a natural language but it now considered more unusable than even an average programming language. What gives? (I have my suspicions but I wonder what people think).

2 comments

Utterances in any natural language are always ambiguous, often hopelessly so. It works out because the speaker and listener are cooperating towards a shared goal; the removal of this assumption of cooperation is why contracts and legal codes get longer and longer over time as they try to deal with the fact that they can't actually specify anything the way they'd like to.

The computer isn't like another person, and we'd really prefer to have it do what we say rather than guess what we want and act accordingly. Indeed, we are not yet able to have a computer guess what we want to any respectable accuracy.

(Think of it this way. In some languages you can provide compiler hints that say, for example, "this variable will usually be an integer, so please optimize for that". A natural language consists basically 100% of compiler hints and 0% of instructions.)

The computer isn't like another person, and we'd really prefer to have it do what we say rather than guess what we want and act accordingly.

From the point of a view of a programmer, yes.

But isn't this kind of the division point between a "good user interface" and a programming language.

Lots of user level system are intended so the computer guesses what you want and does that.

In all areas where we need to transmit exact information or describe something in great detail - wether it's 'legalese'/contract language, mathematical notation, musical notation, computer code - we've found out that natural language doesn't fit it well, and chosen to use something less natural and more exact.

This is the sign of a flaw - we've stumbled upon the limit in many distinct areas, and ceased to use natural language in them.

If you want an architect to describe the builder how large a construction pit should be - you don't want a long description in natural language, you want a very specific diagram; i.e., natural language is not the most usable thing for this scenario. If you want to 'discuss' your computer which file to open, then clicking in a GUI is much more efficient than having the folder contents read to you and speaking the file name - since such technology exists, but only people with severe vision problems choose to use it. In niches where accuracy is important - say, "chat" between pilots and air traffic controllers - you migrate away from natural language by discouraging most phrases (e.g., words "to" and "for") and trying to replace them with domain-specific codenames and "formulas" for saying phrases with very exact meaning.

Natural language is a useful general-purpose UI; but for any specific niche we can have a better specialized UI than that - wether it's a controlled almost-natural language, a visual UI, or some specific notation like music scores.

I agree with the you on the builder/construction pit and the air control examples. But don't underestimate what natural language can do for humans interfacing with computer systems.

The file system example:

"Computer, show me the document jake sent me the other day."

"Computer, I want to continue writing my thesis."

"Play the cute cat video again!!!"

Of course, it'll need agents with more deeper semantic understanding, advanced AI, NLP, computer vision, etc that is on the market today, but this is not a problem of natural language. See the work wit.ai is doing, we're pretty much there.

As I said, language is effective for general purpose communication, and the cases that'd work well for communicating with humans would also work well for also communicating with sufficiently smart computers.

But that's a different argument - the original discussion was about natural language replacing the current specialized systems (such as programming languages), and my point is that it's no more likely than natural language replacing musical notation or Photoshop interface.

You could have an interface where you say "computer, draw a funny moustache on that cat" in the same way that you can tell that to an artist; but if you want to define exactly what kind of funny moustache you have in mind, then both Photoshop and paper&pencil would be far superior interfaces than natural language.