Thu 18 May 2023 15:24 - 15:26 at Meeting Room 105 - Posters 2
Developers want to detect bugs as early in the development lifecycle as possible, as the effort and cost to fix them increases with the incremental development of features. Ultimately, bugs that are only found in production can have catastrophic consequences.
Type systems are effective at detecting many classes of bugs during development, often providing immediate feedback both at compile-time and while typing due to editor integration. Unfortunately, more powerful static and dynamic analysis tools do not have the same success due to providing false positives, not being immediate or not being integrated into the language.
Liquid Types extend the language type system with predicates, augmenting the classes of bugs that the compiler or IDE can catch compared to the simpler type systems available in mainstream programming languages. However, while Liquid Types were proposed in 2008 with their integration in ML and subsequently introduced in C (2012), Javascript (2012) and Haskell (2014) through language extensions, they have yet to become widely adopted by mainstream developers. This paper investigates how Liquid Types can be integrated into a mainstream programming language, Java, by proposing a new design that aims to lower the barriers to entry and adapts to problems that Java developers commonly encounter at runtime. Following a participatory design methodology, we conducted a series of developer surveys to design the syntax of LiquidJava, our prototype.
To evaluate if the added effort to write Liquid Types in Java would convince users to adopt them, we conducted a user study with 30 Java developers. The results show that LiquidJava helped users detect and fix more bugs, and that Liquid Types are easy to interpret and learn with few resources. At the end of the study, all users reported interest in adopting LiquidJava for their projects.
Thu 18 MayDisplayed time zone: Hobart change
13:45 - 15:15 | Programming languagesDEMO - Demonstrations / Technical Track / Journal-First Papers / SEET - Software Engineering Education and Training at Meeting Room 103 Chair(s): Jean-Guy Schneider Monash University | ||
13:45 15mTalk | Demystifying Issues, Challenges, and Solutions for Multilingual Software Development Technical Track Haoran Yang Washington State University, Weile Lian Washington State University, Shaowei Wang University of Manitoba, Haipeng Cai Washington State University Pre-print | ||
14:00 15mTalk | Testability Refactoring in Pull Requests: Patterns and Trends Technical Track Pre-print | ||
14:15 15mTalk | Usability-Oriented Design of Liquid Types for Java Technical Track Catarina Gamboa CMU and LASIGE, Paulo Canelas Carnegie Mellon University, Christopher Steven Timperley Carnegie Mellon University, Alcides Fonseca University of Lisbon DOI | ||
14:30 15mTalk | A Theorem Proving Approach to Programming Language Semantics SEET - Software Engineering Education and Training Subhajit Roy IIT Kanpur | ||
14:45 7mTalk | RIdiom: Automatically Refactoring Non-idiomatic Python Code with Pythonic Idioms DEMO - Demonstrations zejun zhang Australian National University, Zhenchang Xing CSIRO’s Data61; Australian National University, Xiwei (Sherry) Xu CSIRO’s Data61, Liming Zhu CSIRO’s Data61 | ||
14:52 7mTalk | An Empirical Study of Data Constraint Implementations in Java Journal-First Papers Juan Manuel Florez CQSE America, Laura Moreno CQSE America, Zenong Zhang The University of Texas at Dallas, Shiyi Wei University of Texas at Dallas, Andrian Marcus University of Texas at Dallas | ||
14:59 7mTalk | Learning To Predict User-Defined Types Journal-First Papers Kevin Jesse University of California at Davis, USA, Prem Devanbu University of California at Davis, Anand Ashok Sawant University of California, Davis |