I would think we could do much of this already if we tried, but there are a lot of things on my list to do until I get to that.
When there are no domain restrictions, computers have not proven very capable of comprehension. Look even at the comparatively simple domain of handwriting recognition.
More importantly, you entirely miss the problem that many times the human doesn't know exactly what he wants until he sees it.
As a software engineer, I have no fear my job will be replaced by computers talking to product managers.
Daily or weekly, feedback nice and quick
In a lecture about this topic (how to create specifications that can be turned into formal correct code) we were given the following simple example of an incorrect specification:
"Everybody loves my baby. But baby loves nobody, but me."
If you formalize this, you can simply conclude that the person that says that is equal to the baby - which clearly is not, what you intended.
And this is a very, very simple specification. Specifications of real software are magnitudes more complicated.
It's partly a matter of giving the objectives to the computer at progressively higher levels, and partly a matter of improving user interfaces so that you can tell what the thing is doing and what it's going to do.
That is, having computers write code depends on the code being in a form about which computers can formally reason. If you can't prove anything about your code because the language is that bad, good luck getting a computer to write code.
/explain_the_joke.jpg
EDIT should have RTFA before commenting, gaze tracking stuff is very cool