Dataset Open Access
Mastrangelo, Luis; Hauswirth, Matthias; Nystrom, Nate
Companion dataset artifact used in the paper "Casting about in the Dark".
The main goal of a static type system is to prevent certain kind of errors from happening at run-time. A type system is formulated as a set of constraints that gives any expression or term in a program a well-defined type. Yet mainstream programming languages are endowed with type systems that provide the means to circumvent their constraints through casting.
We want to understand how and when developers escape the static type system to use dynamic typing. We empirically study how casting is used by developers and devise cast usage patterns, recurrent programming idioms using casts to solve a specific issue. We believe that having usage patterns can help us to better categorize use cases and thus understand how casts are used in practice.
This knowledge can be: (a) a recommendation for current and future language designers to make informed decisions (b) a reference for tool builders, e.g., by providing more precise or new refactoring analyses, (c) a guide for researchers to test new language features, or to carry out controlled programming experiments, and (d) a guide for developers for better practices.