William Uther: There is a whole field of ‘automatic programming’. The main difficulties in that field were in specifying what you wanted programmed. Once you’d done that the computers were quite effective at making it. (I’m not sure people have tried to make computers design complex algorithms and data structures yet.)
Tools that take “a description of what you want programmed” and turn it into code already exist. They’re called compilers. If you’ve specified what you want in a way that doesn’t leave any ambiguities, you’ve already written your program.
Why is this so heavily upvoted? Does anyone here really think that Uther doesn’t know what a compiler is? The goal here is obviously to have something better than a compiler that does as much of the work for the programmer as possible.
Sorry if I’m coming off as confrontational, but I’m sick of the complete lack of charity towards the people xixidu is interviewing, especially on technical questions where, unless you do research in machine learning, they almost certainly know more than you.
I also suspect that any “automatic programming” tool that ends up being useful will eventually end up being called a compiler anyway, even if it does do something useful that today’s compilers don’t.
There has been a lot of work on inferring programs from ambiguous and incomplete specs. These systems aren’t what we normally mean by compilers, since they typically take inputs that don’t belong to any well-defined programming language.
For example, see “Macho: Programming with Man Pages” by Anthony Cozzie, Murph Finnicum, and Samuel T. King. It appeared at HotOS ’11: http://www.usenix.org/events/hotos11/tech/final_files/Cozzie.pdf The idea is that man pages go in one end of their system and a working program comes out the other.
Another piece of modern work on automatic programming is Programming by Sketching. There was a paper at PLDI ’05 by Solar-Lezama et al : http://cs.berkeley.edu/~bodik/research/pldi05-streambit.pdf (PLDI is the ACM conference on Programming Language Design and Implementation)
Both of those papers are from mainline computer scientists outside the AI community—HotOS is a [well regarded] systems workshop, and PLDI is probably the top venue for programming-language research.
Tools that take “a description of what you want programmed” and turn it into code already exist. They’re called compilers. If you’ve specified what you want in a way that doesn’t leave any ambiguities, you’ve already written your program.
Why is this so heavily upvoted? Does anyone here really think that Uther doesn’t know what a compiler is? The goal here is obviously to have something better than a compiler that does as much of the work for the programmer as possible.
Sorry if I’m coming off as confrontational, but I’m sick of the complete lack of charity towards the people xixidu is interviewing, especially on technical questions where, unless you do research in machine learning, they almost certainly know more than you.
It was supposed to be a joke. :(
I also suspect that any “automatic programming” tool that ends up being useful will eventually end up being called a compiler anyway, even if it does do something useful that today’s compilers don’t.
There has been a lot of work on inferring programs from ambiguous and incomplete specs. These systems aren’t what we normally mean by compilers, since they typically take inputs that don’t belong to any well-defined programming language.
For example, see “Macho: Programming with Man Pages” by Anthony Cozzie, Murph Finnicum, and Samuel T. King. It appeared at HotOS ’11: http://www.usenix.org/events/hotos11/tech/final_files/Cozzie.pdf The idea is that man pages go in one end of their system and a working program comes out the other.
Another piece of modern work on automatic programming is Programming by Sketching. There was a paper at PLDI ’05 by Solar-Lezama et al : http://cs.berkeley.edu/~bodik/research/pldi05-streambit.pdf (PLDI is the ACM conference on Programming Language Design and Implementation)
Both of those papers are from mainline computer scientists outside the AI community—HotOS is a [well regarded] systems workshop, and PLDI is probably the top venue for programming-language research.