Automatic Programming: Large Language Models and Beyond