R

R is a programming language and software environment for statistical computing and graphics. The R language has become a de facto standard among statisticians for the development of statistical software, and is widely used for statistical software development and data analysis.

R is an implementation of the S programming language combined with lexical scoping semantics inspired by Scheme. S was created by John Chambers while at Bell Labs. R was created by Ross Ihaka and Robert Gentleman at the University of Auckland, New Zealand, and is now developed by the R Development Core Team, of which Chambers is a member. R is named partly after the first names of the first two R authors (Robert Gentleman and Ross Ihaka), and partly as a play on the name of S.

R is part of the GNU project. Its source code is freely available under the GNU General Public License, and pre-compiled binary versions are provided for various operating systems. R uses a command line interface, however several graphical user interfaces are available for use with R.

Programming features
As a programming language, R is a command line interpreter similar to BASIC or Python. If one types "2+2" at the command prompt and presses enter, and the computer replies with "4".

> 2+2 [1] 4

The above example is deceptively simple because, like APL, R implements matrices, so R can from the command line add or even invert matrices without explicit loops. R's data structures include scalars, vectors, matrices, data frames (similar to tables in a relational database) and lists. The R object system has been extended by package authors to define objects for regression models, time-series and geo-spatial coordinates.

R supports procedural programming with functions and object-oriented programming with generic functions. A generic function acts differently depending on the type of arguments it is passed. In other words the generic function recognizes the type of object and selects (dispatches) the function (method) specific to that type of object. For example, R has a generic  function that can print almost every type of object in R with a simple "print(objectname)" syntax.

Although R is mostly used by statisticians and other practitioners requiring an environment for statistical computation and software development, it can also be used as a general matrix calculation toolbox with performance benchmarks comparable to GNU Octave or MATLAB.