axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] Re: [sage-devel] Re: Identification with ldap.


From: root
Subject: [Axiom-developer] Re: [sage-devel] Re: Identification with ldap.
Date: Sun, 20 Jul 2008 22:02:03 -0400

> address@hidden writes:
>
> Yes, yes, it is easy to criticize and whats really needed is energy
> and effort... well I hope to try some more... but the structure of the
> files makes it very difficult to follow. When one only has a limited
> amount of time to contribute it is really depressing spending 9/10 ths
> of it just trying to figure out what calls what. Ideally it would be
> nice to make a small patch as you suggest but I don't see how. Every
> tweak I make breaks something else. Perhaps if I knew how it was all
> connected a small patch would be possible. I don't, and trial and
> error is very inefficient.

The Mythical Man-Month (Fred Brooks, a MUST read book) has an interesting
example of a dinosaur stuck in a tarpit. The dinosaur can lift any foot
but cannot escape the tarpit. Really large systems, like Axiom and Sage,
have massive, dinosaur-sized tarpits of code.

Developers of these systems have the belief that it is sufficient to write
code that the machine understands. After all, any part of the system can
be understood by anyone with sufficient effort (see... we can lift any
foot you point at...). And every piece of code is perfectly clear
despite having many levels of inherited behavior and unstated background
mathematical theory.

The problem is that tarpit gets larger and deeper with every passing
day and with every additional piece of code added. As the current
developers move on and new people join, they have no way to understand
the prior work except to try to read each file and "integrate".

The best solution I've found it Knuth's Literate Programming (Axiom
uses noweb). The fundamental idea is to write for people while
writing the code so the machine can follow along. This adds about
two to three times as much work for the original developer but
saves the time for everyone else in the future.

And, yes, I know that nobody has the time. But if you don't take
the time now, the next person can only guess, probaby incorrectly, 
or give up and rewrite it.

Do you want your code to live?

Tim




reply via email to

[Prev in Thread] Current Thread [Next in Thread]