Natural Language Outlines for Code: Literate Programming in the LLM Era

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Shi, Kensen, Altınbüken, Deniz, Anand, Saswat, Christodorescu, Mihai, Grünwedel, Katja, Koenings, Alexa, Naidu, Sai, Pathak, Anurag, Rasi, Marc, Ribeiro, Fredde, Ruffin, Brandon, Sanyam, Siddhant, Tabachnyk, Maxim, Toth, Sara, Tu, Roy, Welp, Tobias, Yin, Pengcheng, Zaheer, Manzil, Chandra, Satish, Sutton, Charles
Formato: Preprint
Publicado: 2024
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866908325088591872
author Shi, Kensen
Altınbüken, Deniz
Anand, Saswat
Christodorescu, Mihai
Grünwedel, Katja
Koenings, Alexa
Naidu, Sai
Pathak, Anurag
Rasi, Marc
Ribeiro, Fredde
Ruffin, Brandon
Sanyam, Siddhant
Tabachnyk, Maxim
Toth, Sara
Tu, Roy
Welp, Tobias
Yin, Pengcheng
Zaheer, Manzil
Chandra, Satish
Sutton, Charles
author_facet Shi, Kensen
Altınbüken, Deniz
Anand, Saswat
Christodorescu, Mihai
Grünwedel, Katja
Koenings, Alexa
Naidu, Sai
Pathak, Anurag
Rasi, Marc
Ribeiro, Fredde
Ruffin, Brandon
Sanyam, Siddhant
Tabachnyk, Maxim
Toth, Sara
Tu, Roy
Welp, Tobias
Yin, Pengcheng
Zaheer, Manzil
Chandra, Satish
Sutton, Charles
contents We propose using natural language outlines as a novel modality and interaction surface for providing AI assistance to developers throughout the software development process. An NL outline for a code function comprises multiple statements written in concise prose, which partition the code and summarize its main ideas in the style of literate programming. Crucially, we find that modern LLMs can generate accurate and high-quality NL outlines in practice. Moreover, NL outlines enable a bidirectional sync between code and NL, where a developer can change either code or NL and have the LLM automatically update the other. We discuss many use cases for NL outlines: they can accelerate understanding and navigation of code and diffs, simplify code maintenance, augment code search, steer code generation, and more. We then propose and compare multiple LLM prompting techniques for generating outlines and ask professional developers to judge outline quality. Finally, we present two case studies applying NL outlines toward code review and malware detection.
format Preprint
id arxiv_https___arxiv_org_abs_2408_04820
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Natural Language Outlines for Code: Literate Programming in the LLM Era
Shi, Kensen
Altınbüken, Deniz
Anand, Saswat
Christodorescu, Mihai
Grünwedel, Katja
Koenings, Alexa
Naidu, Sai
Pathak, Anurag
Rasi, Marc
Ribeiro, Fredde
Ruffin, Brandon
Sanyam, Siddhant
Tabachnyk, Maxim
Toth, Sara
Tu, Roy
Welp, Tobias
Yin, Pengcheng
Zaheer, Manzil
Chandra, Satish
Sutton, Charles
Software Engineering
Artificial Intelligence
Computation and Language
Human-Computer Interaction
Machine Learning
We propose using natural language outlines as a novel modality and interaction surface for providing AI assistance to developers throughout the software development process. An NL outline for a code function comprises multiple statements written in concise prose, which partition the code and summarize its main ideas in the style of literate programming. Crucially, we find that modern LLMs can generate accurate and high-quality NL outlines in practice. Moreover, NL outlines enable a bidirectional sync between code and NL, where a developer can change either code or NL and have the LLM automatically update the other. We discuss many use cases for NL outlines: they can accelerate understanding and navigation of code and diffs, simplify code maintenance, augment code search, steer code generation, and more. We then propose and compare multiple LLM prompting techniques for generating outlines and ask professional developers to judge outline quality. Finally, we present two case studies applying NL outlines toward code review and malware detection.
title Natural Language Outlines for Code: Literate Programming in the LLM Era
topic Software Engineering
Artificial Intelligence
Computation and Language
Human-Computer Interaction
Machine Learning
url https://arxiv.org/abs/2408.04820