I was recently invited to present a talk at the AI DevWorld conference in San Jose, California, and it was great to give an overview of the problem and current research in the area of program synthesis to an audience of developers and product managers. True program synthesis will eventually allow humans to construct useful computer programs without conventional programming, rather, through novel user interfaces and natural language, we will be able to express the goal of a program and a software platform will generate the code that will achieve the desired goal.
As a Professor of Computer Science and Chief Scientist at SnapLogic, I enjoy working in both academia and industry (previously I’ve written about bridging the gap between academic and industry perspectives). Speaking at AI DevWorld allowed me to explain the formal problem of program synthesis and some of the research that has been done to solve the problem. I also explained the work we are doing at SnapLogic to make program synthesis practical in our platform. We are combining a visual programming language with machine learning to help automate the construction of data, API, and workflow pipelines.
If you’re unfamiliar with AI DevWorld, the event bills itself as “the world’s largest artificial intelligence developer event.” You can read the abstract of my presentation here: “Toward Practical Program Synthesis for Data, API, and Workflow Automation.” The audience was engaged and I had several people speak with me after my presentation to ask followup questions and further the conversation.
The response was intriguing. One person who followed up with me after my session wasn’t familiar with the research area but gained an appreciation for the complexity of the problem. When we write software, even in high-level language, we are really doing all the heavy lifting to get computers to do what we want them to do. That is, as humans we still need to work at the level of the machine. Programs required an incredible amount of detail. So, it is challenging to go from high-level goals expressed in natural language, which lacks detail, to actual code. For me, the way forward is using as much context as possible to help fill in the details along with a conversational approach to program synthesis in which the program creation process will be a series of refinements to suggested or synthesized code.
All in all, I’m glad I was able to share some insight into both the research and practical approaches to program synthesis. If you want to keep up to date with all the AI and ML innovations we’re doing at SnapLogic, stay tuned to this blog and check out our machine learning showcase!