An introduction to functional programming
An introduction to functional programming
A Controlled Experiment to Assess the Benefits of Procedure Argument Type Checking
IEEE Transactions on Software Engineering
Experimentation in software engineering: an introduction
Experimentation in software engineering: an introduction
Studying programmer behavior experimentally: the problems of proper methodology
Communications of the ACM
An experimental evaluation of data type conventions
Communications of the ACM
Foundations of object-oriented languages: types and semantics
Foundations of object-oriented languages: types and semantics
Types and programming languages
Types and programming languages
Software Metrics: A Rigorous and Practical Approach
Software Metrics: A Rigorous and Practical Approach
Software psychology: Human factors in computer and information systems (Winthrop computer systems series)
Groovy in Action
ECOOP '07 Proceedings of the 21st European conference on ECOOP 2007: Object-Oriented Programming
What Makes APIs Hard to Learn? Answers from Developers
IEEE Software
Improving API Usage through Automatic Detection of Redundant Code
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Faith, hope, and love: an essay on software science's neglect of human factors
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Basics of Software Engineering Experimentation
Basics of Software Engineering Experimentation
Proceedings of the 7th symposium on Dynamic languages
Wyvern: a simple, typed, and pure object-oriented language
Proceedings of the 5th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance
Do developers benefit from generic types?: an empirical comparison of generic and raw types in java
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Injecting mechanical faults to localize developer faults for evolving software
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
An Empirical Investigation into Programming Language Syntax
ACM Transactions on Computing Education (TOCE)
Hi-index | 0.00 |
Abstract 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 languages such as Java or C++ is that they require developers to annotate their code with type names, which is thus claimed to improve the documentation of software. In contrast, one common argument against static type systems is that they decrease flexibility, which may make them harder to use. While these arguments are found in the literature, rigorous empirical evidence is lacking. We report on a controlled experiment where 27 subjects performed programming tasks on an undocumented API with a static type system (requiring type annotations) as well as a dynamic type system (which does not). Our results show that for some tasks, programmers had faster completion times using a static type system, while for others, the opposite held. We conduct an exploratory study to try and theorize why.