An experiment about static and dynamic type systems: doubts about the positive impact of static type systems on development time

Although static type systems are an essential part in teach-ing and research in software engineering and computer science, there is hardly any knowledge about what the impact of static type systems on the development time or the resulting quality for a piece of software is. On the one hand there are authors that state that static type systems decrease an application's complexity and hence its development time (which means that the quality must be improved since developers have more time left in their projects). On the other hand there are authors that argue that static type systems increase development time (and hence decrease the code quality) since they restrict developers to express themselves in a desired way. This paper presents an empirical study with 49 subjects that studies the impact of a static type system for the development of a parser over 27 hours working time. In the experiments the existence of the static type system has neither a positive nor a negative impact on an application's development time (under the conditions of the experiment).

[1]  Claes Wohlin,et al.  Using students as subjects - an empirical evaluation , 2008, ESEM '08.

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

[3]  W. J. Conover,et al.  Practical Nonparametric Statistics , 1972 .

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

[5]  Kim B. Bruce,et al.  Guest Editorial: Foundations of Object-Oriented Languages , 2002, Inf. Comput..

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

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

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

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

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

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

[12]  Lutz Prechelt,et al.  Kontrollierte Experimente in der Softwaretechnik - Potenzial und Methodik , 2001 .

[13]  Shari Lawrence Pfleeger,et al.  Preliminary Guidelines for Empirical Research in Software Engineering , 2002, IEEE Trans. Software Eng..

[14]  Stefan Hanenberg,et al.  Faith, hope, and love: an essay on software science's neglect of human factors , 2010, OOPSLA.

[15]  Lutz Prechelt,et al.  An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl for a search/string-processing program , 2000 .

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

[17]  E. Gat,et al.  Lisp as an Alternative to Java , 2000 .

[18]  Ralph E. Johnson,et al.  A type system for Smalltalk , 1989, POPL '90.

[19]  Laurence Tratt,et al.  Dynamically Typed Languages , 2009, Adv. Comput..

[20]  Reidar Conradi,et al.  Empirical Methods and Studies in Software Engineering , 2003, Lecture Notes in Computer Science.

[21]  Luca Cardelli Type systems , 1996, CSUR.

[22]  Shari Lawrence Pfleeger,et al.  Experimental design and analysis in software engineering, part 4: choosing an experimental design , 1995, SOEN.

[23]  Reidar Conradi,et al.  Empirical Methods and Studies in Software Engineering: Experiences from Esernet , 2003 .

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

[25]  Walter F. Tichy,et al.  Should Computer Scientists Experiment More? , 1998, Computer.

[26]  Stefan Hanenberg What is the Impact of Static Type Systems on Programming Time ? Preliminary Empirical Results , 2009 .

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

[28]  Jeffrey C. Carver,et al.  Using Empirical Studies during Software Courses , 2003, ESERNET.

[29]  Erann Gat Point of view: Lisp as an alternative to Java , 2000, INTL.

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