On the naturalness of software
By Premkumar T. Devanbu. 2012
1,021 citations recorded by the source corpus.
Subfields: Information Systems, Software, Code Generation & Program Synthesis
How researchers see this paper
The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.
In Information Systems
- Miltiadis Allamanis
- Charles Sutton
- Michael Pradel
- Premkumar T. Devanbu
- Koushik Sen
- Rishabh Singh
- Earl T. Barr
- Eran Yahav
In Software
- Charles Sutton
- Michael Pradel
- Miltiadis Allamanis
- Rishabh Singh
- Premkumar T. Devanbu
- Koushik Sen
- Earl T. Barr
- Vincent J. Hellendoorn
In Code Generation & Program Synthesis
- Charles Sutton
- Miltiadis Allamanis
- Michael Pradel
- Premkumar T. Devanbu
- Rishabh Singh
- Swarat Chaudhuri
- Vincent J. Hellendoorn
- Koushik Sen
Citations in the corpus
- Competition-level code generation with AlphaCode (2022, background): “Hindle et al. (2012) provided empirical evidence that code can be modeled by statistical 𝑛-gram language models, and capitalised on this to develop a simple code completion engine for Java.”
- Program Synthesis with Large Language Models (2021, methodology): “Early work applied statistical n-gram models [Hindle et al., 2012, Allamanis and Sutton, 2013a] and neural networks [Maddison and Tarlow, 2014, Raychev et al., 2014] to code.”
- Evaluating Large Language Models Trained on Code (2021, background): “Hindle et al. (2012) investigated n-gram language models of code, finding code to be more predictable than natural language.”
- A Survey of Machine Learning for Big Code and Naturalness (2017, methodology): “[81] were the first to use a token-level n-gram LM for this purpose, using the previous n − 1 tokens to represent the completion context at each location.”
- StarCoder: may the source be with you! (2023, methodology): “Language Models for Code Language models were initially applied to code by Hindle et al. (2012), but relied on n-gram models trained at comparatively small scale.”
- A systematic evaluation of large language models of code (2022, background): “Recently, LMs have shown impressive performance in modeling also source code, written in programming languages (Hindle et al., 2016; Hellendoorn & Devanbu, 2017; Alon et al., 2020; Karampatsis et al., 2020).”
- CodeXGLUE: A Machine Learning Benchmark Dataset for Code Understanding and Generation (2021, background): “Similarly, developers who are confused about what to write next can use code completion systems [57, 1, 56, 66, 67, 8, 27, 7] to automatically complete the following tokens based on the edits made to the code.”
- code2seq: Generating Sequences from Structured Representations of Code (2018, background): “Several works modeled code as a sequence of tokens (Hindle et al., 2012; Iyer et al., 2016; Allamanis et al., 2016; Loyola et al., 2017), characters (Bielik et al.”
- Structured Generative Models of Natural Source Code (2014, background): “We previously mentioned Hindle et al. (2012) and Allamanis and Sutton (2013), which tackle the same task as us but with simple NLP models.”
- Learning to Represent Programs with Graphs (2017, methodology): “ture open-source software projects (cf. subsection 5.3). 2 RELATED WORK Our work builds upon the recent field of using machine learning for source code artifacts (Allamanis et al., 2017). For example, Hindle et al. (2012); Bhoopchandet al. (2016) model the code as a sequence of tokens, while Maddison”
- Learning to Generate Pseudo-Code from Source Code Using Statistical Machine Translation (T) (2015, neutral): “…this study: MeCab to tokenize Japanese sentences [29], pialign to train word alignments [22], KenLM to train Kneser-Ney smoothed language model [30], Moses to train and generate target sentences using the PBMT model [31], and Travatar to train and generate target sentences using T2SMT models [32].”
- A Convolutional Attention Network for Extreme Summarization of Source Code (2016, methodology): “Rush et al. (2015) use an attention-based encoder to summarize sentences, but do not use convolution for their attention mechanism.”
- IntelliCode compose: code generation using transformer (2020, methodology): “ation to detect programming language. Given N lang one-dimensional monolingual arrays of subtokens, the training dataset for the double-headed GPT-C is extracted according to an algorithm detailed in [7]. As seen, language specific control codes provide necessary supervision to constrain language gen”
- code2vec: learning distributed representations of code (2018, methodology): “…Context-Free Grammars [Allamanis and Sutton 2014; Bielik et al. 2016; Gvero and Kuncak 2015; Maddison and Tarlow 2014], n-grams [Allamanis et al. 2014; Allamanis and Sutton 2013; Hindle et al. 2012; Nguyen et al. 2013; Raychev et al. 2014] have been used for programming languages in the past.”
- DeepBugs: a learning approach to name-based bug detection (2018, background): “All these approaches exploit the availability of a large number of examples to learn from, e.g., in the form of publicly available code repositories, and that source code has regularities even across projects written by different developers [Hindle et al. 2012].”
- Big Code != Big Vocabulary: Open-Vocabulary Models for Source Code (2020, methodology): “A global LM, trained in a cross-project setting, will perform better if it is adapted to a new project [44, 81].”