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

Project: Research project

Project Details

Description

OVERVIEW Programming language (PL) researchers investigate the theory and practice of PL features, but rarely their pragmatics. In theory mode, PL researchers employ well-established formalisms to study the semantics of PL features. In practice mode, PL researchers use measurement frameworks to quantify the effect of a feature on aspects of performance. In contrast to these two modes, the study of pragmatics asks whether a feature can benefit a developer in the context of a work situation, such as code editing, testing, or debugging. The research area needs intellectual tools to investigate questions of pragmatics. In response, the PI proposes to develop an investigative method for PL pragmatics, dubbed the rational programmer. At the intellectual level, a rational programmer is the embodiment of a hypothesis about the pragmatics of a PL feature, i.e., its significance in the context of a work situation. At the technical level, a rational-programmer investigation is a large-scale simulation of an ideal developer that uses the feature to achieve a goal in a large number of concrete instances of the specific context. This simulation tests a use strategy for a feature on context-specific scenarios with the goal of (in)validating the (often implicit) hypothesis about its pragmatics. Setting up a successful rational-programmer investigation faces two major challenges. First, the researcher has to explicate the hypothesis about a feature use in context. This step requires careful, and often manual, codification of knowledge about the feature and the context. Second, the researcher has to generate a large and diverse set of concrete context scenarios. INTELLECTUAL MERIT The PI's work on the rational programmer has offered evidence of its potential as an investigative method. So far the PI has succeeded in validating one hypothesis (about debugging contract failures) and invalidating a hypothesis implied by theoretical investigation (the benefits of full soundness in gradual typing). The PI is now ready to explore the usefulness of rational-programmer investigations on a wide range of features and use contexts. The proposed research includes investigations concerning a number of language features and language-specific tools in contexts such as performance tweaking, code maintenance, language expressiveness, and more. In each case, the PI expects that the simulation can validate and/or invalidate (parts of) the underlying hypothesis. BROADER IMPACTS When a rational programmer experiment invalidates a hypothesis, it provides feedback to language designers and implementors. When it confirms a hypothesis, it becomes a teaching tool for the effective use of a PL feature in context. The PI expects that his work will help language (tool) designers set up their own rational-programmer investigations. In turn, the outcomes of such investigations will change languages, tools, and documentation concerning their use. In the long run, the work will thus directly benefit working programmers. The PI will also directly exploit the instructive value of the rational programmer in his courses. Specifically, the educational plan of the proposal outlines the design of two courses. In both, the rational programmer turns into a pedagogical instrument; students reflect on the pragmatics of PL features and, thus, learn by experience how to use them in different work situations. The PI intends to use his classroom experiences to lecture on the rational programmer at summer schools in the US and Europe. Finally, th
StatusActive
Effective start/end date6/1/235/31/28

Funding

  • National Science Foundation (CCF-2237984)

Fingerprint

Explore the research topics touched on by this project. These labels are generated based on the underlying awards/grants. Together they form a unique fingerprint.