With these techniques - how complex a program can practically be created in 2018?
A lot of the example programs mentioned feel more like functions (stateless + deterministic mapping of a tuple of inputs to a single output).
In contrast, I think of a 'program' as having a longish lifecycle comprising a stream of inputs and outputs.
Relatedly, I'm not clear how well the approaches detailed here actually would scale with complexity - is this a meaningful building block in building more complex applications? Or is some higher-order framework needed that 'knows' how to apply this in a rich context?
10-50 lines of code. You have to pick the right domain. Sumit is doing a lot of work [1] on integrating these ideas into Microsoft's products, e.g., Excel's flash fill. Ras [2] is synthesizing biology models and architecture design. Sanjit, Armando, Emina, Rishabh, are all doing excellent work getting them to scale.
Most of the recent work in this field seems to be based around the idea of program "sketching", i.e. the programmer sketches a high-level specification, and the algorithms progressively synthesise and evaluate small functions / programs to efficiently implement the sketch.
No doubt machine learning researchers will have something to say about this though...
Comments
With these techniques - how complex a program can practically be created in 2018?
A lot of the example programs mentioned feel more like functions (stateless + deterministic mapping of a tuple of inputs to a single output).
In contrast, I think of a 'program' as having a longish lifecycle comprising a stream of inputs and outputs.
Relatedly, I'm not clear how well the approaches detailed here actually would scale with complexity - is this a meaningful building block in building more complex applications? Or is some higher-order framework needed that 'knows' how to apply this in a rich context?
10-50 lines of code. You have to pick the right domain. Sumit is doing a lot of work [1] on integrating these ideas into Microsoft's products, e.g., Excel's flash fill. Ras [2] is synthesizing biology models and architecture design. Sanjit, Armando, Emina, Rishabh, are all doing excellent work getting them to scale.
[1] https://www.microsoft.com/en-us/research/video/flash-fill-fl...
[2] https://www.frontiersin.org/articles/10.3389/fbioe.2014.0007...
The higher-order framework is you!
Most of the recent work in this field seems to be based around the idea of program "sketching", i.e. the programmer sketches a high-level specification, and the algorithms progressively synthesise and evaluate small functions / programs to efficiently implement the sketch.
No doubt machine learning researchers will have something to say about this though...
Incidentally there is a workshop this Sunday at ICML about program synthesis https://uclmr.github.io/nampi/
Barliman is pretty neat for filling in functions given a few examples:
https://youtube.com/watch?v=5vtC7WEN76w