Learning-Based Program Synthesis: Towards Synthesizing Complex Programs From Multi-Modal Specifications In The Wild