Abstract
Type systems that permit developers to express themselves more precisely are one of the primary topics in programming language research, as well as in industrial software development. While it seems plausible that an expressive static type system increases developer productivity, there is little empirical evidence for or against this hypothesis. Generic types in Java are an example: as an extension of Java's original type system, some claim that Java 1.5 improves the type system's "expressiveness." Even if this claim is true, there exists little empirical evidence that claimed expressiveness leads to a measurable increase in developer productivity. This paper introduces an experiment where generic types (in comparison to raw types) have been evaluated in three different directions: (1) the documentation impact on undocumented APIs, (2) the time required for fixing type errors, and (3) the extensibility of a generic type hierarchy. The results of the experiment suggest that generic types improve documentation and reduce extensibility -- without revealing a difference in the time required for fixing type errors.
- Arnold, K. Generics considered harmful. blog entry available at http://weblogs.java.net/blog/arnold/archive/ 2005/06/generics\_consid\_1.html, last visit Dec 2012, 2005.Google Scholar
- Bracha, G., Odersky, M., Stoutamire, D., and Wadler, P. Making the future safe for the past: Adding genericity to the java programming language. In Proceedings of the 1998 ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages & Applications (OOPSLA '98), Vancouver, British Columbia, Canada, October 18--22, 1998 (1998), ACM, pp. 183--200. Google Scholar
Digital Library
- Bruce, K. B. Foundations of object-oriented languages: types and semantics. MIT Press, Cambridge, MA, USA, 2002. Google Scholar
Digital Library
- Canning, P., Cook, W., Hill, W., Olthoff, W., and Mitchell, J. C. F-bounded polymorphism for object-oriented programming. In Proceedings of the fourth international conference on Functional programming languages and computer architecture (New York, NY, USA, 1989), FPCA '89, ACM, pp. 273--280. Google Scholar
Digital Library
- Cardelli, L., and Wegner, P. On understanding types, data abstraction, and polymorphism. ACM Comput. Surv. 17, 4 (Dec. 1985), 471--523. Google Scholar
Digital Library
- Daly, M. T., Sazawal, V., and Foster, J. S. Work in progress: an empirical study of static typing in ruby. Workshop on Evaluation and Usability of Programming Languages and Tools (PLATEAU),Orlando, October 2009 (2009).Google Scholar
- Endrikat, S., and Hanenberg, S. Is aspect-oriented programming a rewarding investment into future code changes? A socio-technical study on development and maintenance time. In Proceedings of the 2011 IEEE 19th International Conference on Program Comprehension (Kingston, CA, 2011), ICPC '11, IEEE Computer Society, pp. 51--60. Google Scholar
Digital Library
- Feigenspan, J., K\"astner, C., Liebig, J., Apel, S., and Hanenberg, S. Measuring programming experience. In IEEE 20th International Conference on Program Comprehension, ICPC 2012, Passau, Germany, June 11--13, 2012 (2012), pp. 73--82.Google Scholar
Cross Ref
- Gamma, E., Helm, R., Johnson, R., and Vlissides, J. Design patterns: elements of reusable object-oriented software. Addison-Wesley Professional, 1995. Google Scholar
Digital Library
- Gannon, J. D. An experimental evaluation of data type conventions. Commun. ACM 20, 8 (1977), 584--595. Google Scholar
Digital Library
- Gravetter, F., and Wallnau, L. Statistics for the Behavioral Sciences. Cengage Learning, 2008.Google Scholar
- Hanenberg, S. Doubts about the positive impact of static type systems on programming tasks in single developer projects - an empirical study. In ECOOP 2010 - Object-Oriented Programming, 24th European Conference, Maribor, Slovenia, June 21--25, 2010. Proceedings (2010), LNCS 6183, Springer, pp. 300--303. Google Scholar
Digital Library
- Hanenberg, S. An experiment about static and dynamic type systems: Doubts about the positive impact of static type systems on development time. In Proceedings of the ACM international conference on Object oriented programming systems languages and applications (New York, NY, USA, 2010), OOPSLA, ACM, pp. 22--35. Google Scholar
Digital Library
- Hanenberg, S. A chronological experience report from an initial experiment series on static type systems. In 2nd Workshop on Empirical Evaluation of Software Composition Techniques (ESCOT) (Lancaster, UK, 2011).Google Scholar
- Hanenberg, S., Kleinschmager, S., and Josupeit-Walter, M. Does aspect-oriented programming increase the development speed for crosscutting code? an empirical study. In Proceedings of ESEM (2009), pp. 156--167. Google Scholar
Digital Library
- Höst, M., Regnell, B., and Wohlin, C. Using students as subjects--a comparative study of students and professionals in lead-time impact assessment. Empirical Softw. Engg. 5, 3 (2000), 201--214. Google Scholar
Digital Library
- Igarashi, A., Pierce, B. C., and Wadler, P. Featherwieght java: A minimal core calculus for java and gj. In Proceedings of the 1999 ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages & Applications (OOPSLA '99), Denver, Colorado, USA, November 1--5, 1999 (1999), ACM, pp. 132--146. Google Scholar
Digital Library
- Juristo, N., and Moreno, A. M. Basics of Software Engineering Experimentation. Springer, 2001. Google Scholar
Digital Library
- Kleinschmager, S., and Hanenberg, S. How to rate programming skills in programming experiments? A preliminary, exploratory study based on university marks, pretests, and self-estimation. In Workshop PLATEAU at SPLASH (Portland, USA, October 2011), pp. 15--24. Google Scholar
Digital Library
- Kleinschmager, S., Hanenberg, S., Robbes, R., Tanter, É., and Stefik, A. Do static type systems improve the maintainability of software systems? An empirical study. In IEEE 20th International Conference on Program Comprehension, ICPC 2012, Passau, Germany, June 11--13 (2012), pp. 153--162.Google Scholar
Cross Ref
- Mayer, C., Hanenberg, S., Robbes, R., Tanter, É., and Stefik, A. An empirical study of the influence of static type systems on the usability of undocumented software. In Proceedings of the 27th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2012, part of SPLASH 2012, Tucson, AZ, USA, October 21--25, 2012 (2012), ACM, pp. 683--702. Google Scholar
Digital Library
- Meyerovich, L. A., and Rabkin, A. Empirical analysis of programming language adoption. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages & Applications (OOPSLA '13), Indianapolis, Indiana, USA, October 26--31, 2013 (2013), ACM. Google Scholar
Digital Library
- Milner, R. A theory of type polymorphism in programming. Journal of Computer and System Sciences 17 (1978), 348--375.Google Scholar
Cross Ref
- Naftalin, M., and Wadler, P. Java generics and collections. O'Reilly, 2006. Google Scholar
Digital Library
- Parnin, C., Bird, C., and Murphy-Hill, E. R. Java generics adoption: how new features are introduced, championed, or ignored. In Proceedings of the 8th International Working Conference on Mining Software Repositories, MSR 2011 (Co-located with ICSE), Waikiki, Honolulu, HI, USA, May 21--28, 2011, Proceedings (2011), IEEE, pp. 3--12. Google Scholar
Digital Library
- Pierce, B. C. Types and programming languages. MIT Press, Cambridge, MA, USA, 2002. Google Scholar
Digital Library
- Prechelt, L. An empirical comparison of seven programming languages. IEEE Computer 33 (2000), 23--29. Google Scholar
Digital Library
- Prechelt, L., and Tichy, W. F. A controlled experiment to assess the benefits of procedure argument type checking. IEEE Trans. Softw. Eng. 24, 4 (1998), 302--312. Google Scholar
Digital Library
- Spiza, S., and Hanenberg, S. Type names without static type checking already improve the usability of apis -- as long as the type names are correct: An empirical study -- submitted to gpce 2013.Google Scholar
- Stefik, A., , and Siebert, S. An empirical investigation into programming language syntax. ACM Transactions on Computing Education (2013, In Print).Google Scholar
- Steinberg, M. What is the impact of static type systems on maintenance tasks? An empirical study of differences in debugging time using statically and dynamically typed languages. Master Thesis, Institute for Computer Science and Business Information Systems, University of Duisburg-Essen, http://dawis2.cs.uni-due.de/ests/2011_MA_MarvinSteinberg_SH.pdf, January, 2011.Google Scholar
- Steinberg, M., and Hanenberg, S. What is the impact of static type systems on debugging type errors and semantic errors? - submitted.Google Scholar
- Stuchlik, A., and Hanenberg, S. Static vs. dynamic type systems: An empirical study about the relationship between type casts and development time. In Proceedings of the 7th symposium on Dynamic languages (Portland, Oregon, USA, 2011), DLS '11, ACM, pp. 97--106. Google Scholar
Digital Library
- Wohlin, C., Runeson, P., Höst, M., Ohlsson, M. C., Regnell, B., and Wesslén, A. Experimentation in software engineering: an introduction. Kluwer Academic Publishers, Norwell, MA, USA, 2000. Google Scholar
Digital Library
Index Terms
Do developers benefit from generic types?: an empirical comparison of generic and raw types in java
Recommendations
Do developers benefit from generic types?: an empirical comparison of generic and raw types in java
OOPSLA '13: Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applicationsType systems that permit developers to express themselves more precisely are one of the primary topics in programming language research, as well as in industrial software development. While it seems plausible that an expressive static type system ...
Converting java programs to use generic libraries
OOPSLA '04Java 1.5 will include a type system (called JSR-14) that supports <i>parametric polymorphism</i>, or <i>generic</i> classes. This will bring many benefits to Java programmers, not least because current Java practice makes heavy use of logically-generic ...
Type names without static type checking already improve the usability of APIs (as long as the type names are correct): an empirical study
MODULARITY '14: Proceedings of the 13th international conference on ModularityIn the discussion about the usefulness of static or dynamic type systems there is often the statement that static type systems improve the documentation of software. In the meantime there exists even some empirical evidence for this statement. One of ...







Comments