Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

>most people haven't even heard of "program synthesis"

Since my first programming job, I've generated code in whatever language I'm using with that language. SQL from SQL, Perl from Perl, etc. And/or regular expressions.

This page:

https://en.wikipedia.org/wiki/Metaprogramming

leaves the impression that using programs to make programs requires a special language or special features, and it was rather a dead end in AI.



Metaporgramming is a technique that can be used for program synthesis, but it is not the same as program synthesis. In program synthesis you generate a program from a specification that can be more or less complete, for instance it can be an entire program written in some formal language, or it can be a set of input-output examples of the target program etc. Synthesisers typically search a space of programs (a set of strings in the target language) for a program that satisfies the specification.

I think what you describe is the task of putting together parts of a program according to a configuration. That's a related task and you could certainly see it as a kind of program synthesis, but because it's a common task that we know how to do well, it's not really what program synthesis research is focused on.

Some programming languages are definitely better suited to program synthesis than others. That's particularly the case with languages that have little of what I'd call "ceremony", syntax that's not really necessary to express the behaviour of a program, but are there to help the programmer organise the code, such as classes, maybe, or interfaces, say.

I don't know that metaprogramming was a dead end in AI. I hear that a lot for many subjects of AI research that are still active. I mean, if you asked machine learning researchers ten years ago about neural networks they'd tell you "it's a dead end", or "we tried that and it didn't work" etc. So, unless you're very knowledgeable about a subject of AI research my suggestion is to be cautious when extracting conclusions from a perfunctory perusal of wikipedia or blog posts etc. That's not where most of the knowledge is stored for such deep subjects as AI research.


>Synthesisers typically search a space of programs (a set of strings in the target language) for a program that satisfies the specification.

This sounds like a description of a parser generator.


I don't remember how parser generators work. They might be an instance of program synthesis. But program synthesis is for arbitrary programs, not just parsers.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: