skip to main content
research-article

An empirical investigation of the effects of type systems and code completion on API usability using TypeScript and JavaScript in MS visual studio

Published:21 October 2015Publication History
Skip Abstract Section

Abstract

Recent empirical studies that compared static and dynamic type systems on API usability showed a positive impact of static type systems on developer productivity in most cases. Nevertheless, it is unclear how large this effect is in comparison to other factors. One obvious factor in programming is tooling: It is commonly accepted that modern IDEs have a large positive impact on developers, although it is not clear which parts of modern IDEs are responsible for that. One possible---and for most developers obvious candidate---is code completion. This paper describes a 2x2 randomized trial that compares JavaScript and Microsoft's statically typed alternative TypeScript with and without code completion in MS Visual Studio. While the experiment shows (in correspondence to previous experiments) a large positive effect of the statically typed language TypeScript, the code completion effect is not only marginal, but also just approaching statistical significance. This seems to be an indicator that the effect of static type systems is larger than often assumed, at least in comparison to code completion.

References

  1. Christopher Anderson, Paola Giannini, and Sophia Drossopoulou. Towards type inference for javascript. In ECOOP 2005 - Object-Oriented Programming, 19th European Conference, Glasgow, UK, July 25-29, 2005, Proceedings, pages 428–452, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Mark T. Daly, Vibha Sazawal, and Jeffrey S. Foster. Work in progress: an empirical study of static typing in ruby. Workshop on Evaluation and Usability of Programming Languages and Tools (PLATEAU),Orlando, October 2009, 2009.Google ScholarGoogle Scholar
  3. Susan A. Dart, Robert J. Ellison, Peter H. Feiler, and A. Nico Habermann. Software development environments. Computer, 20(11):18–28, November 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Stefan Endrikat, Stefan Hanenberg, Romain Robbes, and Andreas Stefik. How do API documentation and static typing affect API usability? In 36th International Conference on Software Engineering, ICSE ’14, Hyderabad, India - May 31 - June 07, 2014, pages 632–642, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. J. D. Gannon. An experimental evaluation of data type conventions. Commun. ACM, 20(8):584–595, 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Stefan Hanenberg. An experiment about static and dynamic type systems: Doubts about the positive impact of static type systems on development time. In Proceedings of the ACM international conference on Object oriented programming systems languages and applications, OOPSLA, pages 22–35, New York, NY, USA, 2010. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Stefan Hanenberg. Faith, hope, and love: An essay on software science’s neglect of human factors. In Proceedings of the ACM international conference on Object oriented programming systems languages and applications, OOPSLA ’10, pages 933–946, Reno/Tahoe, Nevada, USA, October 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Stefan Hanenberg, Sebastian Kleinschmager, Romain Robbes, Éric Tanter, and Andreas Stefik. An empirical study on the impact of static typing on software maintainability. Empirical Software Engineering, 19(5):1335–1382, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Daqing Hou and David M. Pletcher. An evaluation of the strategies of sorting, filtering, and grouping api methods for code completion. In Proceedings of ICSM 2011, pages 233– 242, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Sebastian Kleinschmager, Stefan Hanenberg, Romain Robbes, Éric Tanter, and Andreas Stefik. Do static type systems improve the maintainability of software systems? An empirical study. In IEEE 20th International Conference on Program Comprehension, ICPC 2012, Passau, Germany, June 11-13, pages 153–162, 2012.Google ScholarGoogle ScholarCross RefCross Ref
  11. Clemens Mayer, Stefan Hanenberg, Romain Robbes, Éric Tanter, and Andreas Stefik. An empirical study of the influence of static type systems on the usability of undocumented software. In Proceedings of the 27th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2012, part of SPLASH 2012, Tucson, AZ, USA, October 21-25, 2012, pages 683–702. ACM, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Gail C. Murphy, Mik Kersten, and Leah Findlater. How are java software developers using the eclipse IDE? IEEE Software, 23(4):76–83, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Anh Tuan Nguyen, Tung Thanh Nguyen, Hoan Anh Nguyen, Ahmed Tamrawi, Hung Viet Nguyen, Jafar M. Al-Kofahi, and Tien N. Nguyen. Graph-based pattern-oriented, contextsensitive source code completion. In Proceedings of ICSE 2012, pages 69–79, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Sebastian Okon and Stefan Hanenberg. Can we enforce a benefit for dynamically typed languages in comparison to statically typed ones? a controlled experiment. In submitted, 2015.Google ScholarGoogle Scholar
  15. Cyrus Omar, YoungSeok Yoon, Thomas D. LaToza, and Brad A. Myers. Active code completion. In Proceedings of ICSE 2012, pages 859–869, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Jens Palsberg and Michael I. Schwartzbach. Object-oriented type inference. SIGPLAN Not., 26(11):146–161, November 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Pujan Petersen, Stefan Hanenberg, and Romain Robbes. An empirical comparison of static and dynamic type systems on API usage in the presence of an IDE: java vs. groovy with eclipse. In 22nd International Conference on Program Comprehension, ICPC 2014, Hyderabad, India, June 2-3, 2014, pages 212–222, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Benjamin C. Pierce. Types and programming languages. MIT Press, Cambridge, MA, USA, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Lutz Prechelt and Walter F. Tichy. A controlled experiment to assess the benefits of procedure argument type checking. IEEE Trans. Softw. Eng., 24(4):302–312, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Romain Robbes and Michele Lanza. Improving code completion with program history. Autom. Softw. Eng., 17(2):181–212, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. S.S. Senn. Cross-over Trials in Clinical Research. Statistics in Practice. Wiley, 1993.Google ScholarGoogle Scholar
  22. Carlos Souza and Eduardo Figueiredo. How do programmers use optional typing?: An empirical study. In Proceedings of the 13th International Conference on Modularity, MODULARITY ’14, pages 109–120, New York, NY, USA, 2014. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Samuel Spiza and Stefan Hanenberg. Type names without static type checking already improve the usability of apis (as long as the type names are correct): An empirical study. In Proceedings of the 13th International Conference on Modularity, MODULARITY ’14, pages 99–108, New York, NY, USA, 2014. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Andreas Stefik and Stefan Hanenberg. The programming language wars: Questions and responsibilities for the programming language community. In Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software, Onward! 2014, pages 283––299, New York, NY, USA, 2014. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Andreas Stuchlik and Stefan Hanenberg. Static vs. dynamic type systems: An empirical study about the relationship between type casts and development time. In Proceedings of the 7th symposium on Dynamic languages, DLS ’11, pages 97– 106, Portland, Oregon, USA, 2011. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Peter Thiemann. Towards a type system for analyzing javascript programs. In Programming Languages and Systems, 14th European Symposium on Programming,ESOP 2005, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2005, Edinburgh, UK, April 4-8, 2005, Proceedings, pages 408–422, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Walter F. Tichy. Should computer scientists experiment more? IEEE Computer, 31:32–40, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Walter F. Tichy, Paul Lukowicz, Lutz Prechelt, and Ernst A. Heinz. Experimental evaluation in computer science: A quantitative study. Journal of Systems and Software, 28(1):9–18, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Claes Wohlin, Per Runeson, Martin Höst, Magnus C. Ohlsson, Bjöorn Regnell, and Anders Wesslén. Experimentation in software engineering: an introduction. Kluwer Academic Publishers, Norwell, MA, USA, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. An empirical investigation of the effects of type systems and code completion on API usability using TypeScript and JavaScript in MS visual studio

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    • Published in

      cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 51, Issue 2
      DLS '15
      Feburary 2016
      176 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/2936313
      • Editor:
      • Andy Gill
      Issue’s Table of Contents
      • cover image ACM Conferences
        DLS 2015: Proceedings of the 11th Symposium on Dynamic Languages
        October 2015
        176 pages
        ISBN:9781450336901
        DOI:10.1145/2816707

      Copyright © 2015 ACM

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 21 October 2015

      Check for updates

      Qualifiers

      • research-article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!