I love this idea, but I would have to agree with the predominant opinion expressed here: this is too challenging of a problem to be tackled in a reasonable amount of time. I have witnessed some natural language processing research to be used in robotics at CU. The idea of course, is that you shouldn't have to know programming to be able to program a robot.
A particular problem faced is how to parse an ambiguous command: "Put the red block on the blue block on the yellow block." -> 1) the red block is currently on the blue block and needs to go onto the yellow block, 2) the red block needs to go onto the blue block that is already on top of the yellow block. Even though this anecdote isn't exactly your concept, you can appreciate some of the problems people face with natural language processing.
I can only imagine the frustrations of the users of your programming interface while refactoring their code... "OK, now remember that structure 'bar' I told you about with the 3 objects, now forget about that, we need to do something differently... no, no dont delete 'bar', just split the string object out and make it a new parameter...the other two objects can now be processed by 'foo' but only before calling 'rhubarb', and now we can ignore them if 'carrot' is true...". If thats not bad enough, how would you debug such a program?
I do however, have a possible solution to one of your fundamental requirements, "I want that system to perform the above for a Chinese or Russian speaker. They'll have their own dialect in Chinese or Russian - I'm not sure what that is - and a linguistics expert would be needed to design that seriously." If you can implement all of the above for an English speaker, then for a Russian or Chineese user, all you need to do is first translate thier commands into English, then feed the English command into your coding algorithm.
Nick
I'm interested in audio-based computing - wouldn't it be great to be
able to do sophisticated tasks using an audio interface on a
smartphone? Or alternatively, connected to a server at home. I could
get an earpiece/mic and do work while I hike the flatirons!
Personally I'd settle for a vocabulary of key words that would allow me
to accomplish various tasks from an audio 'command line'. This shell
would be optimized for audio processing.
As far as natural language goes, I have my doubts as to the usefulness
of that. With a smaller vocabulary of useful keywords - essentially a
sort of programming language - the task of audio word recognition
becomes easier and more reliable, perhaps even doable on smartphone
hardware. And then you don't have to deal with the well known
difficulties inherent in natural language - ambiguity, context,
synonyms, etc etc.
I haven't seriously investigated all this, but maybe there are some
existing interfaces out there for sight impaired programmers? I've
heard of a few people out there that make their living programming
without the benefit of sight. What tools are they using?
- Ben