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 ScholarDigital Library
- Bruce, K. B. Foundations of object-oriented languages: types and semantics. MIT Press, Cambridge, MA, USA, 2002. Google ScholarDigital 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 ScholarDigital Library
- Cardelli, L., and Wegner, P. On understanding types, data abstraction, and polymorphism. ACM Comput. Surv. 17, 4 (Dec. 1985), 471--523. Google ScholarDigital 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 ScholarDigital 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 ScholarCross Ref
- Gamma, E., Helm, R., Johnson, R., and Vlissides, J. Design patterns: elements of reusable object-oriented software. Addison-Wesley Professional, 1995. Google ScholarDigital Library
- Gannon, J. D. An experimental evaluation of data type conventions. Commun. ACM 20, 8 (1977), 584--595. Google ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital Library
- Juristo, N., and Moreno, A. M. Basics of Software Engineering Experimentation. Springer, 2001. Google ScholarDigital 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 ScholarDigital 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 ScholarCross 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 ScholarDigital 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 ScholarDigital Library
- Milner, R. A theory of type polymorphism in programming. Journal of Computer and System Sciences 17 (1978), 348--375.Google ScholarCross Ref
- Naftalin, M., and Wadler, P. Java generics and collections. O'Reilly, 2006. Google ScholarDigital 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 ScholarDigital Library
- Pierce, B. C. Types and programming languages. MIT Press, Cambridge, MA, USA, 2002. Google ScholarDigital Library
- Prechelt, L. An empirical comparison of seven programming languages. IEEE Computer 33 (2000), 23--29. Google ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 ScholarDigital 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 '13Type 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 ...
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 ...
An empirical comparison of static and dynamic type systems on API usage in the presence of an IDE: Java vs. groovy with eclipse
ICPC 2014: Proceedings of the 22nd International Conference on Program ComprehensionSeveral studies have concluded that static type systems offer an advantage over dynamic type systems for programming tasks involving the discovery of a new API. However, these studies did not take into account modern IDE features; the advanced ...
Comments