# AXIOM - A computer algebra system

Axiom was developed in IBM between the years 1983 and 1994. It was originally called "Scratchpad II".

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.

Update (2020-05-06): I had confused the original Scratchpad and Scratchpad II. Scott Morrison, author of Axiom's interpreter, sent me a message and corrected. Scratchpad was developed in IBM between 1965 and 1975, but it was a system that preceded Scratchpad II.