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;
Liengme 19 [primer].

@ __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];
Stewart 17 [scientific Python].

> __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 12 aug 2019