Static vs. dynamic type systems: an empirical study about the relationship between type casts and development time

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.

[1]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

[2]  Kim B. Bruce Foundations of object-oriented languages - types and semantics , 2002 .

[3]  Steve M. Easterbrook Empirical research methods for software engineering , 2007, ASE '07.

[4]  Benjamin C. Pierce,et al.  Types and programming languages: the next generation , 2003, 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings..

[5]  Leslie Lamport,et al.  Should your specification language be typed , 1999, TOPL.

[6]  Natalia Juristo Juzgado,et al.  Basics of Software Engineering Experimentation , 2010, Springer US.

[7]  Claes Wohlin,et al.  Using Students as Subjects—A Comparative Study of Students and Professionals in Lead-Time Impact Assessment , 2000, Empirical Software Engineering.

[8]  Lutz Prechelt Kontrollierte Experimente in der Softwaretechnik , 2001 .

[9]  Stefan Hanenberg Doubts about the Positive Impact of Static Type Systems on Programming Tasks in Single Developer Projects - An Empirical Study , 2010, ECOOP.

[10]  Daniela E. Damian,et al.  Selecting Empirical Methods for Software Engineering Research , 2008, Guide to Advanced Empirical Software Engineering.

[11]  Liming Zhu,et al.  Evaluating guidelines for empirical software engineering studies , 2006, ISESE '06.

[12]  Laurence Tratt,et al.  Guest Editors' Introduction: Dynamically Typed Languages , 2007, IEEE Software.

[13]  Walter F. Tichy,et al.  A Controlled Experiment to Assess the Benefits of Procedure Argument Type Checking , 1998, IEEE Trans. Software Eng..

[14]  Bill Curtis,et al.  Five Paradigms in the Psychology of Programming , 1988 .

[15]  Vibha Sazawal,et al.  Work In Progress: an Empirical Study of Static Typing in Ruby , 2009 .

[16]  J. Bortz Statistik für Human- und Sozialwissenschaftler , 2010 .

[17]  Stefan Hanenberg A Chronological Experience Report from an Initial Experiment Series on Static Type Systems , 2011 .

[18]  Ruven E. Brooks,et al.  Studying programmer behavior experimentally: the problems of proper methodology , 1980, CACM.

[19]  John D. Gannon An experimental evaluation of data type conventions , 1977, CACM.

[20]  Nancy E. Betz,et al.  Tests and assessment , 1985 .

[21]  Stefan Hanenberg,et al.  An experiment about static and dynamic type systems: doubts about the positive impact of static type systems on development time , 2010, OOPSLA.

[22]  Sebastian Kleinschmager,et al.  Does aspect-oriented programming increase the development speed for crosscutting code? An empirical study , 2009, ESEM 2009.