3 ms·
This is about machine learning, only instead of inducing things like neural network weights, it's inducing a logic program. I get the impression most of the wor
by abecedarius 11y ago
This is about machine learning, only instead of inducing things like neural network weights, it's inducing a logic program. I get the impression most of the work in this field gets called 'program synthesis' these days, though I haven't kept up.
- nickpsecurity 11y agoAhh, the parts I read make more sense now that you told me the goal. I did do work in program synthesis, although we called it "automatic programming." Best of it is in ASIC development right now. I'm keeping this just because you said that. Might help someone working in the field who asks what resources I have on that topic.
- vmorgulis 11y agoThere 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.