Welcome to the Dictionary of Programming Languages, a compendium
of computer coding methods assembled to provide information and
aid your appreciation for computer science history.
Browse the dictionary by clicking on a section:
Get a full dump of the dictionary:
List of Names
- Language type:
M - Mathematical or Simulation
Magma is an environment and
high-level language for
number theory, algebra, and
general mathematical programming.
The fundamental features of Magma are
its procedural syntax and statement
structure, coupled with very
sophisticated built-in data types
and operations. In general, Magma
is dynamically typed and performs
automatic conversions rather than enforcing
Some of the
built-in types are: unlimited-precision
integers, rational numbers, real and
complex numbers, sets,
atoms, arrays of various sorts,
groups and fields of various sorts,
and various kinds of functional types.
Newer versions of Magma support closures
Magma has simple I/O facilities
used mainly for reading and writing
mathematical objects to and from files.
There is only one implementation of the
Magma language. It is an interpreter
written in C.
Magma runs on PCs and Unix systems.
Magma was developed at the University
of Sydney, and used to be downloadable
free. Since about 1996, users have had
to pay for subscriptions to Magma.
Documentation is available with the
- See Also:
Magma evolved from an earlier system
called Cayley. Both systems were
intended for use by serious mathematicians
using computers to model and study
mathematical concepts in detail.
It borrows basic ideas from OO programming
languages, particularly abstract types
and type composition. In Magma, the
fundamental classes based on modern
notions of algebra and category theory.
- Sample code:
A Magma program to produce random selections
of strings from a simple grammar, by D. Taylor.
produce := procedure();
seq := ["S"];
rhs := ["(", "S", ")", "S"];
i := 1;
if Random(1, 10) gt 7 then
Insert(~seq, i, i, rhs);
print #seq gt 0 select &*seq else "eps";
i := Position(seq, "S");
until i eq 0;
print "Length:", #seq;
Descriptions in this dictionary are ©1997-99 Neal Ziring. Some
examples copyright of their respective authors. Some
technologies and languages are trademarked. Permission to
copy descriptions is granted as long as authorship credit is preserved.
Comments on this dictionary, corrections and suggestions, are all welcome.
Please use email, the address is firstname.lastname@example.org
[Ziring MicroWeb Home]
Dictionary and script maintained by Neal Ziring, last major modifications 3/18/98. Most recent
additions to dictionary and master list, 1/00.