How Does Bug-Handling Effort Differ Among Different Programming Languages?
Handling bugs is an essential part of software development. The impact of programming language on this task has long been a topic of much debate. For example, some people hold the view that bugs in Python are easy to handle because its code is easy to read and understand, while some others believe the absence of static typing in Python will lead to higher bug-handling effort. This paper presents the first large-scale study to investigate whether the ecosystems of different (categories of) programming language would require different bug-handling effort. The focus is on correlation analysis rather than causal analysis. With 600 most popular projects in 10 languages downloaded from GitHub (summing up to 70,816,938 SLOC and 3,096,009 commits), the experimental results indicate various interesting findings. First, different languages require different bug-handling effort. For example, Java and C# tend to require less time but more line/file modification, Python and PHP tend to require less time and less line/file modification, while Ruby and JavaScript tend to require more time as well as more line/file modification. Second, weak/dynamic languages tend to require more time than strong/static languages, while static languages tend to require more absolute line/file modification. A toy predictive model also provides proof that the inclusion of programming languages could improve the effectiveness when predicting the bug-handling effort of a project.
READ FULL TEXT