Synthesizing Programs with Continuous Optimization