21
Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions Static vs Dynamic Types in Software Development Emma Callery University of Minnesota, Morris UMN Morris Senior Seminar Conference Fall 2014 1 / 21

Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Static vs Dynamic Types in SoftwareDevelopment

Emma Callery

University of Minnesota, Morris

UMN Morris Senior Seminar Conference Fall 2014

1 / 21

Page 2: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Why is this important?

Static Types or Dynamic Types? The BIG debate

2 / 21

Page 3: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Outline

1 BackgroundTypesGroovy Programming Language

2 How Programmers use TypesHow do Programmers Use Optional Types?Analysis and Results

3 Types and Development TimeThe Relationship Between Types and Development TimeResults

4 Influence of Static TypesThe Usability of Undocumented SoftwareResults

5 Conclusions

3 / 21

Page 4: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Types

Static Types

Static types: types known to the compiler at compile-time;Programmers required to include necessary information. Mostcommon languages are Java and C++.An example in Java.

1 public class Language{

2 public String setLanguage(String lang){

3 return "Primary language is: " + lang;

4 }

5 }

4 / 21

Page 5: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Types

Dynamic Types

Dynamic types are checked by the interpreter at run-time.Dynamically typed languages include JavaScript, Ruby, and Groovy.An example in JavaScript.

1 var Language{

2 getLanguage: function(lang){

3 console.log(‘Primary language is: ’ + lang);

4 }

5 };

5 / 21

Page 6: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Groovy Programming Language

Groovy

An example in Java (Static)

1 public class HelloWorld{

2 private String name;

3 public void greet(){

4 return "Hello " + name;;

5 }};

An example in Groovy (Dynamic)

1 class HelloWorld{

2 def name;

3 def greet() { "Hello ${name}" }

4 };

6 / 21

Page 7: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

How do Programmers Use Optional Types?

Study of Programmer Preferences

In 2014, How do Programmers Use Optional Typing? An EmpiricalStudy,

Two Brazilian researchers, Carlos Souza and EduardoFigueiredo’s study.

In which contexts Groovy programmers type or do not typetheir declarations.

6638 Open Source Groovy projects.

Five questions.

7 / 21

Page 8: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

How do Programmers Use Optional Types?

Study Questions

Q 1 Do programmers use types more often in the interface of theirmodules?

Q 2 Do programmers use types more often in test classes andscripts?

Q 3 Does the experience of programmers with other languagesinfluence their choice for typing their code?

Q 4 Does the size, age or level of activity of a project have anyinfluence on the usage of types?

Q 5 In frequently changed code, do programmers prefer staticallytyped over untyped dynamic declarations?

8 / 21

Page 9: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Analysis and Results

Analysis

The researchers gathered different kinds of meta-data, mainly

The kind and number of different type declarations.

The visibility of type declarations.

The frequency and total number of commits to the projects.

The background experience of the programmers.

9 / 21

Page 10: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Analysis and Results

Results

Q 1 Do programmers use types more often in the interface of theirmodules?Yes, interface variables and fields that are public, such asconstructors and method parameters are frequently typed.

Q 2 Do programmers use types more often in test classes andscripts?No, test classes, usually, have one sole purpose. Scripts arefor the most part small, easy to understand, and can not beaccessed by other modules.

10 / 21

Page 11: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Analysis and Results

Results cont.

Q 3 Does the experience of programmers with other languagesinfluence their choice for typing their code?Yes, how programmers uses types is greatly impacted by whatthe programmers are use to. This is believed to be the largestfactor on how programmers use types.

11 / 21

Page 12: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Analysis and Results

Results cont.

Q 4 Does the size, age or level of activity of a project have anyinfluence on the usage of types?No, the usage of types in ’mature’ projects was similar to thatof other, ’non-mature’, projects.

Q 5 In frequently changed code, do programmers prefer typed overuntyped declarations?No, programmers appear to prefer untyped declarations.

12 / 21

Page 13: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

The Relationship Between Types and Development Time

Types and Development Time Study

In 2011, Static vs. Dynamic Type Systems: an Empirical StudyAbout the Relationship between Type Casts and DevelopmentTime

Two researchers, Andreas Stuchlik and Stefan Hanenberg.

The Argument: The existence of type declarations should leadto a reduction in the development time of simpleprogramming tasks.

21 students.

2 sets of 5 tasks; one set in Java the other using a restrictedform of Groovy.

13 / 21

Page 14: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

The Relationship Between Types and Development Time

The Experiment

All participants completed both sets of tasks.Tasks differed in:

number of declarations.

Lines of Code.

14 / 21

Page 15: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Results

Results

Lowest Time Results Sum Task 1 Task 2 Task 3 Task 4 Task 5

Group A __ Groovy __ __ __ __

Group B Groovy Groovy __ Groovy __ __

Dashes: No significant benefit

15 / 21

Page 16: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

The Usability of Undocumented Software

Influence of Static Types Study

In 2012, An Empirical Study of the Influence of Static TypeSystems on the Usability of Undocumented Software

By Clemens Mayer, Stefan Hanenberg, Romain Robbes, EricTanter, and Andreas Stefik.

The Argument:Types act as a form of documentation.

27 students.

2 sets of 5 tasks; one set in Java the other using a restrictedform of Groovy.

16 / 21

Page 17: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

The Usability of Undocumented Software

The Tasks

Task 1: (Easy, 1 class to identify) Return an instance of a Tree class.

Task 2: (Easy, 3 classes) Initialize a Tree object.

Task 3: (Medium, 3 classes) Transform the Tree.

Task 4: (Hard, 3 classes) Add to a node to the Tree.

Task 5: (Easy, 6 classes) Create a ’menu’ for the Tree.

17 / 21

Page 18: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

The Usability of Undocumented Software

The Experiment

The researchers had two null hypotheses:

1 The development time for completing a programming task inan undocumented API is equivalent when using either a statictype system of a dynamic type system.

2 There is no difference in respect to development time betweenstatic and dynamic type systems, despite the number andcomplexity of type declarations in an undocumented API.

18 / 21

Page 19: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Results

Influence Study Results

Aspect Task 1 Task 2 Task 3 Task 4 Task 5

Less Development Time Java Groovy Groovy Java Java

Fewer Builds/Runs Groovy Java Java

Fewer Files Looked At Java Groovy Java Java Java

Fewer File Switches Java Groovy Groovy Java Java

19 / 21

Page 20: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Conclusion

There are too many trade offs in bothsystems for there to be one conclusiveanswer.

Study 1: largest effect comes fromfamiliarity.

Study 2: dynamic is better in somesituations

Study 3: static maybe better forlarger projects.

20 / 21

Page 21: Static vs Dynamic Types in Software Development · Groovy Programming Language 2 How Programmers use Types ... In which contexts Groovy programmers type or do not type their declarations

Background How Programmers use Types Types and Development Time Influence of Static Types Conclusions

Any Questions?

21 / 21