Affiliation:
1. University of California at Berkeley, USA
Abstract
How working statically-typed functional programmers write code is largely understudied. And yet, a better understanding of developer practices could pave the way for the design of more useful and usable tooling, more ergonomic languages, and more effective on-ramps into programming communities. The goal of this work is to address this knowledge gap: to better understand the high-level authoring patterns that statically-typed functional programmers employ. We conducted a grounded theory analysis of 30 programming sessions of practicing statically-typed functional programmers, 15 of which also included a semi-structured interview. The theory we developed gives insight into how the specific affordances of statically-typed functional programming affect domain modeling, type construction, focusing techniques, exploratory and reasoning strategies, and expressions of intent. We conducted a set of quantitative lab experiments to validate our findings, including that statically-typed functional programmers often iterate between editing types and expressions, that they often run their compiler on code even when they know it will not successfully compile, and that they make textual program edits that reliably signal future edits that they intend to make. Lastly, we outline the implications of our findings for language and tool design. The success of this approach in revealing program authorship patterns suggests that the same methodology could be used to study other understudied programmer populations.
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Cited by
5 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. A Grounded Conceptual Model for Ownership Types in Rust;Proceedings of the ACM on Programming Languages;2023-10-16
2. How to Evaluate Blame for Gradual Types, Part 2;Proceedings of the ACM on Programming Languages;2023-08-30
3. Usability-Oriented Design of Liquid Types for Java;2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE);2023-05
4. Grounded Copilot: How Programmers Interact with Code-Generating Models;Proceedings of the ACM on Programming Languages;2023-04-06
5. Sympathy for the (Novice) Developer;Proceedings of the 53rd ACM Technical Symposium on Computer Science Education;2022-02-22