GGrantIndex
← Search

CAREER: The Rational Programmer, An Investigative Method for Programming Language Pragmatics

$534,758FY2023CSENSF

Northwestern University, Evanston IL

Investigators

Abstract

The productivity of developers depends on the quality of the available programming languages: whether they support testing adequately, help with locating and fixing mistakes, or contribute to the maintenance of software, which often survives its creators. If a programming language does not support these routine development tasks, the developer is forced to resort to labor-intensive and ineffective workarounds. The goal of this project is to develop a scientific instrument for examining how well a programming language supports developers in different work contexts. The project's novelty is the instrument itself: a method for constructing automated, large-scale simulations that (in)validate hypotheses about how a developer can benefit from a language to complete a work. The project's results are going to impact: (i) language designers and researchers: the method provides the means for evaluating their products; (ii) instructors: the evaluations yield concrete scenarios and strategies for demonstrating the value of a language feature or tool in action. While simulations have a long history in computer science, the project's method puts them to new use in programming languages. In the project's setting, the heart of each simulation is the rational programmer, an algorithmic abstraction of how a developer reacts to information from language implementations in the context of a work situation. In other words, a rational programmer embodies a strategy that a developer can employ while working in a context towards a goal. When the simulation of a rational programmer on a large number of scenarios fails to reach the developer's goal, it invalidates a hypothesis about the developer strategy. It points designers and researchers to a problematic aspect of the language. When it succeeds, it informs instructors how to teach students the effective use of this part of the language. This project aims to put to test the feasibility of the rational-programmer method by conducting three major investigations in three different contexts: testing, performance profiling, and language expressiveness. This award reflects NSF's statutory mission and has been deemed worthy of support through evaluation using the Foundation's intellectual merit and broader impacts review criteria.

View original record on NSF Award Search →