Defining and Measuring the Productivity of Programming Languages

  • Authors:
  • Ken Kennedy;Charles Koelbel;Robert Schreiber

  • Affiliations:
  • John and Ann Doerr University/ Center for High Performance Software Research (HiPerSoft) at Rice University;computer science department at Rice University;Advanced Computer Systems Laboratory at Hewlett Packard Laboratories

  • Venue:
  • International Journal of High Performance Computing Applications
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

Abstract

The goal of programming support systems is to make it possible for application developers to produce software faster, without any degradation in software quality. However, it is essential that this goal must not be achieved at the cost of performance: programs written in a high-level language and intended to solve large problems on highly parallel machines must not be egregiously less efficient than the same applications written in a lower-level language. Because this has been a traditional stumbling block for high-level languages, metrics for productivity analysis must explore the trade-off between programming effort and performance.To that end, we propose the use of two dimensionless ratios, relative power and relative efficiency, to measure the productivity of programming interfaces. In this paper we define these concepts, describe their application, and explore various ways for measuring them, including both empirical strategies and expert opinion. Rather than combine these metrics into a single number representing a universal productivity, we propose that they be represented graphically in at least two dimensions so that the trade-offs between abstraction and performance are clearly depicted. However, we also introduce a single problem-dependent parameter that allows us to reason about the relative productivity of two languages for a given problem.