Programming
Languages |

**In General** > s.a. Lambda
Calculus.

* __Procedural languages__:
They contain subroutines, collections of instructions for how to operate
on inert data structures to perform tasks such as sorting,
searching, or displaying; Examples are BASIC, FORTRAN, Matlab, C.

* __Functional languages__: Examples
are List and its derivatives, Prolog, Maple, Mathematica.

* __Object-oriented languages__:
The data themselves become the organizing principle; For example, a class of
objects called 'Customers' might contain
names, addresses, telephone numbers, etc; the subroutines are packaged
with the object, and are called 'member functions' – the Customer
object might
have a number of such functions, such as 'GetLastName' and 'SendBill' –;
In turn, objects can be arranged in related hierarchies – for example, 'Customer'
could be a sub-class of 'Person' and a super-class of 'VIPCustomer'–;
Object-oriented programming has become very popular because it allows programmers
to clearly associate the code with their mental models
of the real world data that it represents; Examples are C++, Java, and Smalltalk.

**Macsyma** (1960s)

* __Idea__:
Big, has many packages, including indicial Cartan.

@ __References__: Heller 91 [for statistics]; Fell 97 [for calculus].

**Maple** (1980s)

* __Idea__:
Small kernel; large library (not very integrated).

@ __In general__: Toussaint cs.SC/01-ln.

@ __Mathematical physics__: Enns & McGuire 00 [non-linear equations,
r PT(98)jul]; Richards 01; Enns 05 [computer algebra].

@ __In physics__: Greene 95 [classical mechanics]; Horbatsch 95 [quantum
mechanics]; Kalashnikov gq/01 [astrophysics,
cosmology]; Lake phy/05 [GRTensorII
package]; Wang 06; Lynch 09 [dynamical systems].

**Mathematica** (1980s) > s.a. partial differential equations.

* __Idea__:
Mathtensor is indicial; Ricci.

* __Results and remarks__:
Compute *R _{ijkl}*, not

@

@

@

>

**Python**

@ __Books__: Langtangen 12 [and scientific computation]; Kinder & Nelson 15 [physical modeling]; Parker 16 [with examples based on games].

@ __Specific applications__: Gourgoulhon et al JPCS(15)-a1412 [differential geometry and tensor calculus extension of Sage]; Bernard linux(15)jul [SymPy, the Python module that allows you to do symbolic mathematics, and GraviPy]; Malthe-Sorenssen 15 [classical mechanics].

> __Online resources__: see Python official home; codecademy site; Wikipedia page; .

**Reduce** (1960s)

* __Idea__: Widely available;
semi-indicial; is now free – without garbage collection.

@ __References__: MacCallum & Wright 91; MacDonald 94 [IIb/III]; Grozin 97; Toussaint cs.SC/01-ln.

**Other Languages**

@ __General references__: Brown 99, 01 [Perl]; Skansholm 04 [Java]; Flanagan 11 [Javascript]; Wolfram 17 [Wolfram language].

@ __C__: Zachary 97 [and Mathematica].

@ __C++__: Cooper et al 94; Yevick 05 [computational physics and object-oriented
programming]; Prata 11; McGrath 11.

@ __Fortran__: Crouch et al pw(07)dec
[FORTRAN at 50]; > see also Wikipedia page.

@ __Matlab__: Kepner & Ahalt ap/02-in
[MatlabMPI]; Tóth CPC(08)-a0709 [QUBIT4MATLAB
v3.0]; Poon & Kim 06 [optics];
Báez-López 09 [and applications]; Bober et al 09 [engineering applications]; Davis 10 [introduction to MATLAB 7.10].

@ __Pascal__: Abas & Mondragon 90.

main page – abbreviations – journals – comments – other
sites – acknowledgements

send feedback and suggestions to bombelli at olemiss.edu – modified
16 may 2017