Can we enforce a benefit for dynamically typed languages in comparison to statically typed ones? A controlled experiment

There are a number of experiments that show a benefit for statically typed programming languages. However, it is unclear whether these results are mainly driven by the expectations that developers do benefit from static type systems, i.e. whether the results reflect on the experimenters' bias. From that perspective, it seems consequent to design an experiment that tries to reveals the opposite: to enforce a benefit for dynamically typed languages. This paper describes an experiment that tries to enforce such a benefit for dynamically typed languages in an experimental setting. Four (quite artificial) tasks were designed from which the experimenters expected to measure a clear benefit for dynamically typed languages. However, only in two cases such a benefit could be measured. What is even more interesting is that two other tasks (again, explicitly designed to show a benefit for dynamically typed languages) showed the opposite.

[1]  Stefan Hanenberg,et al.  An empirical comparison of static and dynamic type systems on API usage in the presence of an IDE: Java vs. groovy with eclipse , 2014, ICPC 2014.

[2]  Antti-Juhani Kaijanaho,et al.  Evidence-based programming language design : a philosophical and methodological exploration , 2015 .

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

[4]  Stefan Hanenberg,et al.  An empirical investigation of the effects of type systems and code completion on API usability using TypeScript and JavaScript in MS visual studio , 2015, DLS.

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

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

[7]  Pascal Costanza Dynamic vs. Static Typing — A Pattern-Based Analysis , 2004 .

[8]  Stefan Hanenberg,et al.  Type names without static type checking already improve the usability of APIs (as long as the type names are correct): an empirical study , 2014, MODULARITY.

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

[10]  Sebastian Kleinschmager,et al.  An empirical study on the impact of static typing on software maintainability , 2013, Empirical Software Engineering.

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

[12]  Stefan Hanenberg,et al.  Static vs. dynamic type systems: an empirical study about the relationship between type casts and development time , 2011, DLS '11.

[13]  Stefan Hanenberg,et al.  An empirical study of the influence of static type systems on the usability of undocumented software , 2012, OOPSLA '12.

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

[15]  Oscar Nierstrasz,et al.  On the Revival of Dynamic Languages , 2005, SC@ETAPS.

[16]  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.

[17]  Gary James Jason,et al.  The Logic of Scientific Discovery , 1988 .

[18]  Sebastian Kleinschmager,et al.  Do static type systems improve the maintainability of software systems? An empirical study , 2012, 2012 20th IEEE International Conference on Program Comprehension (ICPC).

[19]  Stefan Hanenberg,et al.  How do API documentation and static typing affect API usability? , 2014, ICSE.

[20]  Erik Meijer Dynamic typing when needed: The end of the cold war between programming languages , 2004 .

[21]  Michael Hoppe,et al.  Do developers benefit from generic types?: an empirical comparison of generic and raw types in java , 2013, OOPSLA.

[22]  Leo A. Meyerovich,et al.  Empirical analysis of programming language adoption , 2013, OOPSLA.