Organizations that publish computer programming languages, such as Java, often issue updates with new features that promise to make a programmer’s life easier. But it’s hard to tell if anyone actually uses the features, much less whether they actually live up to their billing. Now a team of researchers is trying to shed some light on the process. Singling out the highly-publicized Java generics feature released in 2004, the research team has found that less than half of Java programmers are using the feature – and even fewer are taking full advantage of its capabilities.
The research team, made up of computer scientists from NC State, Georgia Tech and Microsoft Research, pored through approximately 500 million lines of open-source code, written by 532 programmers working on 20 different projects. In a draft paper being presented May 21 at the Working Conference on Mining Software Repositories, the researchers say they found fewer than half of the programmers used the Java generics feature, and that the feature was used on fewer than half of the open-source projects.
Here’s some background, in case you’re not a software whiz. Software languages have specific features, or commands, that are typed in as shorthand for programmers. For example, a feature may allow a programmer to type in a single line of code, instead of five. This saves time, and limits the possibility of the programmer accidentally typing in a bad line of code – reducing how frequently programs crash.
Periodically, the companies that publish these languages will issue updates that include new tools and features. The updates are intended to make the language more user-friendly for programmers – and cost the publishing company a fair amount of money. And it can be time-consuming for the programmers too, since they have to familiarize themselves with the new features. As a result, it’s important for the features to be worthwhile.
But why do some features catch on, and not others? And how can you tell which are which?
That’s what the research team is trying to figure out. They opted to look at Java generics as a case study because: it garnered a lot of attention in the programming community when it came out; and because Java is one of the most widely used programming languages in the world.
In addition to the fact that many (if not most) Java users don’t use the generics feature, the researchers also found that the feature didn’t appear to make the programming process more efficient.
However, at this point, they still don’t know whether the fault for that lies with the product, the programmers, or some combination of the two. In other words, are better tools and training materials needed for the feature? Or is the feature itself flawed?
Ultimately, the researchers hope to answer that question not only for Java generics, but for new language features in general. If they can identify the characteristics that make new features successful, language developers can act accordingly. And hopefully all future language updates will actually be useful.