Is Maxima modular?...(and/or How learn source code?...)
Subject: Is Maxima modular?...(and/or How learn source code?...)
From: seberino at spawar
Date: Sat, 29 Mar 2003 15:53:09 -0800
Stavros
Thanks for your reply. If you took initiative to study and
learn the LISP code on your own then you deserve to be a member
of the Maxima dev team.
Can I ask you a question about this???
I have written very complex math code in my career but I have
always shunned modifying or understanding other people's code.
It seems ironic I can absorb very complex scientific/math/software
ideas but can't stand understanding other people's code.
I have always admired people who could understand other people's
code and was hoping you could give me some advice on this.
I'm just amazed you did it and are continuing to.
My tendency would be to start all over and write a beautiful
commented object oriented CA from scratch
but I know probably everyone on this list would say
understanding the Maxima code is easier and more realistic
than that.
Sincerely,
Chris
On Sat, Mar 29, 2003 at 12:47:12AM -0500, Stavros Macrakis wrote:
> > Is the current code at least *MODULAR* with different parts
> *ENCAPSULATED*????
>
> No. There is no discipline defining which functions inside one module
> are visible outside that module. Even when there is a clear main entry
> point, other modules sometimes use an internal entry point for
> efficiency, and sometimes the most common entry point has a name which
> clearly shows it was originally intended as internal (cf. M2). Even
> when modules go to the trouble of specifying their external interface
> clearly (Opers), other modules often use explicitly internal functions.
> And different modules have different conventions....
>
> I don't like the situation, but that's the way it is for now. Little by
> little, we hope to start using the CL module system to clean this up.
>
> Global variables are also problematic. There are two cases here:
> explicitly global "mode" settings which get temporarily bound to one
> value or another, and variables which are used as another way to
> communicate information from one function to another. Both are
> important in Maxima. The first kind is usually slightly documented; the
> second kind is often not documented at all (though they do have to be
> declared).
>
> > How did current developers get a general handle on source code????
>
> A lot of code reading, a little bit of tracing/experimentation, and some
> email queries.
>
> One useful technique is to keep all the source files concatenated
> together for reference and easy searching in Emacs (faster and more
> convenient than tags-search). I also am writing internals documentation
> and adding comments to the source little by little.
>
> I agree that the situation is far from ideal, but that's what we have to
> work with.
>
> -s
>
> _______________________________________________
> Maxima mailing list
> Maxima@www.math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
--
_______________________________________
Dr. Christian Seberino
SPAWAR Systems Center San Diego
Code 2872
49258 Mills Street, Room 158
San Diego, CA 92152-5385
U.S.A.
Phone: (619) 553-9973
Fax: (619) 553-6521
Email: seberino@spawar.navy.mil
_______________________________________