I think alot of people have the paradigm wrong. I think people conceive Natural Language Programming as a simply change in syntax, which in it self would complicate stuff.
But if you take the stance that we as humans are Natural Language Programmers, the concept becomes easier to understand.
You can think of your boss at your software development firm as your programmer. He wants some job done and you program some approximation of what he wants done, then you modify based on his inputs. It is a similar thing with Natural Language Programming, your boss didn't use complex symbols to get what he wants done and didn't have to sit with you all the way through to get something done.
For me, it is not a question of whether this makes programming simply but whether we can build a machine with the same capacity as a human.
The bosses instructions and confused and imprecise. The natural language dance in this scenario involves us repeatedly trying and failing and adding more communication until the various terms being used are precisely defined enough so that the software can be written.
This is what Dijkstra was talking about. That without a formal system we end up wasting a lot of time tightening up what we mean.
It may be an interesting field to see if we can make a computer do this dance but it isn't useful.
The current process is: Bosses tells you the programmer and then you instruct the computer precisely. With natural language programming, the boss just tells the computer. There is no you now.
Why is this faster? Because you used to take 3 months to get the sofware done, our new system can do it in 3 seconds[the times are arbitary, the general assumption is that it's less than a human].
Of course you are going to still have to specify what you want with both NLP and a human. So this time is constant and it is not relevant when comparing the two system.
What I'm saying is that the NLP would be like a human but faster and less error prone.
An interesting point is that programming a human computer is in itself an acquired skill.
A "boss" with years of experience instructing programmers will get better results than an amateur. Experience with the particular programmer also improves results. An important part of this is knowing what to specify and what to leave to the programmer.
Like you started off saying, looking at this as a way of making programming easier for people who can't currently program is probably wrong. It's possibly useful as something to paddle towards, but I suspect it isn't a genuine raison d'etre.
The problem here is that there is 20+ years of acquired "state" that allows this to happen. Also, think of the hiring process, weeding out potential programmers with "bad" "state"; i.e. they are crap programmers.
If you want a machine with the same capacity as a human you had better have something that can learn at the same rate as a human, and then add 20 years of "life experiences" and education. Then.. _maybe_ you might have a good programmer.
Sorry to rain on your parade, but us meat sacks are better at doing that, evolution has stumbled upon some pretty cool hacks that make it cheap enough (think of a 20 year computer maintenance and energy bill!) to have a "sentient" being.
I don't want to get into the how. The how should be a very open question. Like there is a million and one ways to program something, so there are a million and one ways to create AI. Some implementations are more efficient than others.
What you should be asking yourself is how do I make this more efficient than taking 20 years?
Do you have any idea how expensive a child is for that same 20 years? Way more expensive than the computer maintenance and energy bill, my friend (I offer my beleaguered bank account as evidence) - and you can't copy the software after maturation, either.
But if you take the stance that we as humans are Natural Language Programmers, the concept becomes easier to understand.
You can think of your boss at your software development firm as your programmer. He wants some job done and you program some approximation of what he wants done, then you modify based on his inputs. It is a similar thing with Natural Language Programming, your boss didn't use complex symbols to get what he wants done and didn't have to sit with you all the way through to get something done.
For me, it is not a question of whether this makes programming simply but whether we can build a machine with the same capacity as a human.