Is Maxima modular?...(and/or How learn source code?...)



> Also remember that you're talking about code that was written
> around the 1970s, when processor speeds were under a MHz,

Yes, the code was mostly developed on the PDP-6 and the KA-10 model of
the PDP-10, which ran at about 0.3-0.5 mips.  Because of both speed and
space restrictions, compiled code (originally, interpreted code, too)
was run without error checking -- so that many basic Lisp operations --
NULL, CAR, CDR, EQ, RPLACA, RPLACD, function call -- took only one
machine instruction.

> RAM came... in 64 Kb chunks

I believe that most of the development work on Macsyma was done after
MIT-AI got its 256 kiloword (about 1 Mb) memory for the PDP-10 (in
1966?) -- a CONS cell took one 36-bit word.  MIT-AI was a time-shared
machine supporting dozens of users, and a single Macsyma process of say
100kW was considered a very heavy burden on other users.  Later, on the
MIT-ML machine, dedicated to running Macsyma, we eventually got 512 kW
physical memory, but addressing still constrained us to 256 kilowords
per process.  In particular, it was not possible to load the entire
Macsyma system into a single process and have enough working space left
to get much useful done.  Still, we could have 3-6 simultaneous active
users of Macsyma.

So, yes, both code and data space were used very parsimoniously.  As you
say, there is a fair amount of cleverness in the code for saving time
and space.  This often comes at a cost in readability and
maintainability.

      -s