vix.ing · top · new · best · stats · spec

Object-Oriented Programming, Functional Programming and R

2014/05/01 by John M. Chambers · 1 voice
Computer Science · Decision Sciences · Mathematics · #Computational Physics and Python Applications #Data Analysis with R #Functional approach #Functional programming #Inductive programming #Perspective (graphical) #Procedural programming #Programming paradigm #Scientific Computing and Data Management #Simple (philosophy) #Software #cs.PL #cs.SE #stat.CO #stat.ME

paper · pdf · doi:10.1214/13-sts452

published as Statistical Science 2014, Vol. 29, No. 2, 167-180 · Published in at http://dx.doi.org/10.1214/13-STS452 the Statistical Science (http://www.imstat.org/sts/) by the Institute of Mathematical Statistics (http://www.imstat.org)

openalex publication_date 2014/05/01 · arxiv created 2014/09/09 · arxiv published 2014/09/09 · arxiv updated 2014/09/09 · openalex created_date 2016/06/24 · openalex updated_date 2026/08/05

Abstract

This paper reviews some programming techniques in R that have proved useful, particularly for substantial projects. These include several versions of object-oriented programming, used in a large number of R packages. The review tries to clarify the origins and ideas behind the various versions, each of which is valuable in the appropriate context. R has also been strongly influenced by the ideas of functional programming and, in particular, by the desire to combine functional with object oriented programming. To clarify how this particular mix of ideas has turned out in the current R language and supporting software, the paper will first review the basic ideas behind object-oriented and functional programming, and then examine the evolution of R with these ideas providing context. Functional programming supports well-defined, defensible software giving reproducible results. Object-oriented programming is the mechanism par excellence for managing complexity while keeping things simple for the user. The two paradigms have been valuable in supporting major software for fitting models to data and numerous other statistical applications. The paradigms have been adopted, and adapted, distinctively in R. Functional programming motivates much of R but R does not enforce the paradigm. Object-oriented programming from a functional perspective differs from that used in non-functional languages, a distinction that needs to be emphasized to avoid confusion. R initially replicated the S language from Bell Labs, which in turn was strongly influenced by earlier program libraries. At each stage, new ideas have been added, but the previous software continues to show its influence in the design as well. Outlining the evolution will further clarify why we currently have this somewhat unusual combination of ideas.

Citations

Discussions

Related