Abstract
Static type systems are essential in computer science. However, there is hardly any knowledge about the impact of type systems on the resulting piece of software. While there are authors that state that static types increase the development speed, other authors argue the other way around. A previous experiment suggests that there are multiple factors that play a role for a comparison of statically and dynamically typed language. As a follow-up, this paper presents an empirical study with 21 subjects that compares programming tasks performed in Java and Groovy - programming tasks where the number of expected type casts vary in the statically typed language. The result of the study is, that the dynamically typed group solved the complete programming tasks significantly faster for most tasks - but that for larger tasks with a higher number of type casts no significant difference could be found.
- Jürgen Bortz. Statistik: für Human- und Sozialwissenschaftler. Springer, 6., vollst. überarb. u. aktualisierte aufl. edition, September 2005.Google Scholar
- Ruven E. Brooks. Studying programmer behavior experimentally: the problems of proper methodology. Commun. ACM, 23:207--213, April 1980. Google ScholarDigital Library
- Kim B. Bruce. Foundations of object-oriented languages: types and semantics. MIT Press, Cambridge, MA, USA, 2002. Google ScholarDigital Library
- Luca Cardelli. Type systems. In Allen B. Tucker, editor, The Computer Science and Engineering Handbook, chapter 103, pages 2208--2236. CRC Press, 1997.Google Scholar
- B. Curtis. Five paradigms in the psychology of programming. In M. Helander, editor, Handbook of Human-Computer Interaction, pages 87--106. Elsevier (North-Holland), 1988.Google ScholarCross Ref
- Mark T. Daly, Vibha Sazawal, and Jeffrey S. Foster. Work in progress: an empirical study of static typing in ruby. Workshop on Evaluation and Usability of Programming Languages and Tools (PLATEAU), Orlando, Florida, October 2009, 2009.Google Scholar
- Steve M. Easterbrook, J. Singer, M. Storey, and D. Damian. Selecting empirical methods for software engineering research. In F. Shull, J. Singer, and D. Sjøberg, editors, Guide to Advanced Empirical Software Engineering. Springer, 2007. Google ScholarDigital Library
- J. D. Gannon. An experimental evaluation of data type conventions. Commun. ACM, 20(8):584--595, 1977. Google ScholarDigital Library
- Stefan Hanenberg. 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, LNCS 6183, pages 300--303. Springer, 2010. Google ScholarDigital Library
- Stefan Hanenberg. 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, OOPSLA '10, pages 22--35, New York, NY, USA, 2010. ACM. Google ScholarDigital Library
- Stefan Hanenberg. 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
- Stefan Hanenberg, Sebastian Kleinschmager, and Manuel Josupeit-Walter. Does aspect-oriented programming increase the development speed for crosscutting code? an empirical study. In Proceedings of Empirical Software Engineering and Measurement, pages 156--167, 2009. Google ScholarDigital Library
- Martin Höst, Björn Regnell, and Claes Wohlin. Using students as subjects - a comparative study of students and professionals in lead-time impact assessment. Empirical Softw. Engg., 5(3):201--214, 2000. Google ScholarDigital Library
- Natalie Juristo and Ana M. Moreno. Basics of Software Engineering Experimentation. Springer, 2001. Google ScholarDigital Library
- Barbara Kitchenham, Hiyam Al-Khilidar, Muhammad Ali Babar, Mike Berry, Karl Cox, Jacky Keung, Felicia Kurniawati, Mark Staples, He Zhang, and Liming Zhu. Evaluating guidelines for empirical software engineering studies. In ISESE '06: Proceedings of the 2006 ACM/IEEE international symposium on Empirical software engineering, pages 38--47, New York, NY, USA, 2006. ACM. Google ScholarDigital Library
- Leslie Lamport and Lawrence C. Paulson. Should your specification language be typed. ACM Trans. Program. Lang. Syst., 21(3):502--526, 1999. Google ScholarDigital Library
- Clemens Mayer, Stefan Hanenberg, Romain Robbes, and Eric Tanter. An experiment about the impact of static type systems for the use of undocumented apis - unpublished work in progress. 2011.Google Scholar
- Benjamin C. Pierce. Types and programming languages. MIT Press, Cambridge, MA, USA, 2002. Google ScholarDigital Library
- Lutz Prechelt. Kontrollierte Experimente in der Softwaretechnik. Springer, Berlin, March 2001.Google ScholarCross Ref
- Lutz Prechelt and Walter F. Tichy. A controlled experiment to assess the benefits of procedure argument type checking. IEEE Trans. Softw. Eng., 24(4):302--312, 1998. Google ScholarDigital Library
- Marvin Steinberg and Stefan Hanenberg. What is the impact of static type systems on debugging type errors and semantic errors? an empirical study of differences in debugging time using statically and dynamically typed languages - unpublished work in progress.Google Scholar
- Laurence Tratt and Roel Wuyts. Guest editors' introduction: Dynamically typed languages. IEEE Software, 24(5):28--30, 2007. Google ScholarDigital Library
- Walter Bruce Walsh and Nancy E. Betz. Tests and Assessment. Prentice-Hall, Harlow, England, 2. edition, 1995.Google Scholar
- Claes Wohlin, Per Runeson, Martin Höst, Magnus C. Ohlsson, Bjöorn Regnell, and Anders Wesslán. Experimentation in software engineering: an introduction. Kluwer Academic Publishers, Norwell, MA, USA, 2000. Google ScholarDigital Library
Index Terms
- Static vs. dynamic type systems: an empirical study about the relationship between type casts and development time
Recommendations
An empirical study of the influence of static type systems on the usability of undocumented software
OOPSLA '12Abstract Although the study of static and dynamic type systems plays a major role in research, relatively little is known about the impact of type systems on software development. Perhaps one of the more common arguments for static type systems in ...
Static vs. dynamic type systems: an empirical study about the relationship between type casts and development time
DLS '11: Proceedings of the 7th symposium on Dynamic languagesStatic type systems are essential in computer science. However, there is hardly any knowledge about the impact of type systems on the resulting piece of software. While there are authors that state that static types increase the development speed, other ...
Type inference, principal typings, and let-polymorphism for first-class mixin modules
Proceedings of the tenth ACM SIGPLAN international conference on Functional programmingA mixin module is a programming abstraction that simultaneously generalizes λ-abstractions, records, and mutually recursive definitions. Although various mixin module type systems have been developed, no one has investigated principal typings or ...
Comments