Paper Summary: On the Naturalness of Software

This is a paper summery I wrote for “On the Naturalness of Software” by A. Hindle et. al

On the Naturalness of Software
  1. Focus / Problem to be solved
    1. Develop tools to support engineers using corpus of source code
  2. Importance
    1. Save programmer’s time and improve correctness of the programs
  3. Method
    1. n-gram models
  4. Context
    1. Code Completion and Suggestions
    2. Summarization and Concern Location (auto generate natural language descriptions)
    3. Software mining
      1. mining API usages
      2. patterns of errors
      3. topic extraction
      4. guiding changes
  5. Results
    1. 33%-67%more correct suggestions
    2. number of keystrokes reduced
  6. Unique contributions
    1. provide support for the hypothesis that PL is simple and repetitive by instantiating a simple, widely-used statistical language model, using modern estimation techniques over large software corpora
    2. demonstrate, using standard cross-entropy and perplexity measures, that the model is indeed capturing the high-level statistical regularity that exists in software at the n-gram level (probabilistic chains of tokens)
    3. We illustrate the use of such a language model by developing a simple code suggestion tool that already substantially improves upon existing suggestion facility in the widely-used Eclipse IDE
    4. lay out our vision for an ambitious research agenda
  7. Possible applications
    1. improved suggestion tools in IDEs
  8. Additional Notes:
    1. Important points
      Central Hypothesis:
      Programing languages, in theory, are complex, flexible and powerful, but the programs that real people actually write a re mostly simple and rather repetitive, and thus they have usefully predictable statistical properties that can be captured in statistical language models and leveraged for software engineering tasks
This entry was posted in Programming Language. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s