# AXIOM - A computer algebra system

Axiom was used to be called "Scratchpad" and it was developed in IBM between 1965 and 1975.

It is a computer algebra system, for example you can ask it
what's the derivative of an expression by giving it
`D(sin(x) + x^2, x)`

and it answers you `cos(x) + 2*x`

, type
is `Expression(Integer)`

.

The language is statically typed and it resolves types by path search starting from implementations of functions.

The interpreter is allowed to do as many type conversions as it wishes as long as they do not destroy information in the expression.

I am not entirely certain about the details yet, but the way Axiom's interpreter works is quite interesting. It also works surpsisingly well.

The same language used to give commands for Axiom can be used to extend it. By some details that language resembles Python. It's called spad.

Syntax of the .spad language is partially indentation
sensitive. There are things that are oddly represented, for
example the `==`

is used for definitions, but considering
the age of this system it is a surprisingly
clean language.

I am amazed that I haven't heard of this before.

Tim Daly maintaining the Axiom's website is promoting literate programming. He's so good at it and he has so many good points that it is motivating me to literate programming as well. For the same reasons Tim is doing it himself. A lot of software is outliving their creators.

I will be studying Axiom's interpreter until I can implement a working one myself. I think it's one of those rare things that can change how you think about programming.