Exactly, so what we need to do is use a formalized language with strict rules to keep out any ambiguity. And then we fully specify what software we want and... this process is called 'programming'.
But what if the programmer program could identify possible ambiguities and interactively ask you to clarify them? That would obviate the need for a formal language specification.
>Make me a sandwich.
Do you want to (1) be turned into a sandwich or (2) have a sandwich prepared?
Although in principle it should be possible to have a machine that performs each iteration near-instantaneously, rather than wait three hours between each change.
I'm working in this space (check my profile) and I'm betting pretty heavily on the idea that the problem there is not the user's conception of their idea, but the flawed nature of language. If users can interact with their concept as they build it, and shape it like you would a physical product, they can get much closer to the ideal stored in their head than if they have to describe the idea in minute detail using ambiguous concepts.