  In this work we systematically review the recent advancements in software
engineering with language models, covering 70+ models, 40+ evaluation tasks,
180+ datasets, and 900 related works. Unlike previous works, we integrate
software engineering (SE) with natural language processing (NLP) by discussing
the perspectives of both sides: SE applies language models for development
automation, while NLP adopts SE tasks for language model evaluation. We break
down code processing models into general language models represented by the GPT
family and specialized models that are specifically pretrained on code, often
with tailored objectives. We discuss the relations and differences between
these models, and highlight the historical transition of code modeling from
statistical models and RNNs to pretrained Transformers and LLMs, which is
exactly the same course that had been taken by NLP. We also go beyond
programming and review LLMs' application in other software engineering
activities including requirement engineering, testing, deployment, and
operations in an endeavor to provide a global view of NLP in SE, and identify
key challenges and potential future directions in this domain. We keep the
survey open and updated on GitHub at
https://github.com/codefuse-ai/Awesome-Code-LLM.
