At 10:16 PM 8/30/2005, Frank Brickle wrote:
Jim Lux wrote:
> However, my comment was more addressed to developers of the
> software. Basic documentation will make it a realistic goal to get
> multiple contributions to the free codebase. Otherwise it will remain an
> interesting toy for the technically persistent and skilled software
artists
> with plenty of paid or unpaid time to spend on it.
Well, there is a definite philosophical difference here. I should point
out that, FWIW, my view is based on -- well, I was going to say almost
forty, but, eep, it *is* forty -- years of working with these idiotic
machines, and countless thousands of lines written fast, slow, and
anywhere in between.
Documentation ain't worth the paper it's writ on.
I would say that is is situationally dependent. I'd hate to have to try
and write software (of any kind) without some reference that defines the
language syntax and semantics, at least at the start.
Documentation also becomes more valuable when multiple people are involved,
particularly over large spans of time or space.
<snip>
At the same time, I happen to be a convinced exponent of bottom-up
programming style. What that means is, in short, building up a small
vocabulary of low-level application-specific operations, composing them
then into a larger vocabulary of utterances, and then telling the final
story in the language that's grown up with the application.
Sure.. and one can tell a moving and elegant story with your own private
language, and it may sound just fine.
However, if you want a dozen people to work on that software, and they
aren't all there at the start, the problem is one that the "first step" in
working on the program is that you have to "learn the language",
unfortunately without the help of a dictionary or any other thing.
Immersion may work, but it's painful, and requires a big commitment. It
also only works if there's a body of speech to be immersed in. If all the
speakers have died, and all that remains is their writings, translating
might be a bit tricky. The Rosetta Stone is prized for a good reason.
"Bottom up" is a fine programming style, but it's not a particularly
effective architectural approach for large systems (where large is defined
more in terms of the number of contributors than the number of lines of
code). This is a hard problem, which is why software development
methodologies have evolved a lot from the "modular programming" of my
youth. Creating architectures that can support concurrency is only one
challenge. Another is creating software that can be maintained and
modified into the future, generally by people not the original creator.
To use the construction metaphor: the outside may be stunning and elegant
and one of a kind, but making it took a lot of unexciting hammering
standard sized nails into standard sized pieces of wood. At some point
Frank Gehry has to do drawings, because he can't single handedly build the
building.
James Lux, P.E.
Spacecraft Radio Frequency Subsystems Group
Flight Communications Systems Section
Jet Propulsion Laboratory, Mail Stop 161-213
4800 Oak Grove Drive
Pasadena CA 91109
tel: (818)354-2075
fax: (818)393-6875