4 ms·
There is "sketching". The idea is to write a partial program and use wildcards for the parts you are not sure of. For example, you can replace values on loops b
by vmorgulis 11y ago
There is "sketching". The idea is to write a partial program and use wildcards for the parts you are not sure of. For example, you can replace values on loops by a "%". The tool try to find the best program for a given input.
https://bitbucket.org/gatoatigrado/sketch-frontend/wiki/Tutorial https://bitbucket.org/gatoatigrado/sketch-frontend/wiki/Tuto...
Superoptimisation is also related to program synthesis. It's a fascinating subject.
Peter Norvig did a talk about what we can expect with that.
- nickpsecurity 11y agoThat's awesome stuff! Thanks for the link. I'll have to do some more research on this stuff.
- vmorgulis 11y agoI like that too :-) About superotimisation, the most visible person is John Regehr. He works with LLVM with his students. http://blog.regehr.org/archives/1246 http://blog.regehr.org/archives/1246
- nickpsecurity 11y agoI'll keep an archive of that just in case. The approach described doesn't seem right, though. My old AI work suggested the best approach to this problem may be combination of these: patterns for common design specs and their implementations; constraints and constraint solving techniques for narrowing things down; heuristics for optimizations and unusual implementation situations. You give bare-bones of the design with some declarations about calling-convention, safety, ranges, data structures, and so on. The software fills in the blanks. Easier to describe than to do. Yet, there are already tool-sets that auto-generate a lot of code and you could say functional language compilers do that to a large degree. Could start with them and just add smarts/constraints. I'm sure there's people doing that right now somewhere.