[Beowulf] software engineering quality across fields
Lux, Jim (337C)
james.p.lux at jpl.nasa.gov
Fri Nov 9 08:46:51 PST 2012
Earlier I wrote:
Or, this is probably a manifestation of the people who have the domain expertise not coming from a background that is software rich.
If you looked at, say, numerical codes for finite element analysis, the people doing that have been using computers for decades, so there's a goodly number of people who have gone through the learning curve of "roll your own" vs "use the library".. Or, even if they're not actually doing it, they're working with other people who are doing it, so they pick up "good design" by osmosis if nothing else.
The other thing is that a lot of codes (I don't know about the biology space, but certainly in engineering) are rarely from scratch. It starts as someone else's code that you modify, and then someone else modifies, etc. Over time, I think that process also leads to better design: the nasty ones tend to die out, the good ones persist and are reused.
I also occurs to me that there's another factor here.. I learned to code in the late 60s and early 70s, when FORTRAN was king, and IBM's Scientific Subroutine Package (e.g. http://media.ibm1130.org/1130-106-ocr.pdf) was an essential part of doing things (who wants to code up a version for SIN() every time). As I understand it, This was something that IBM basically almost gave away (did it originate within SHARE?). So you were in the habit of using libraries to do things you needed. Likewise, I'll bet a lot of people used the source code published in the IEEE journals for FFTs (I know I sure did.. that early simple non-optimized radix-2 FORTRAN code that's about 20-30 lines long, for one thing). And you may have done this out of sheer laziness by borrowing the deck from a colleague or friend (who wants to punch all those cards). Burroughs had a similar thing for their mainframe machines. And there was tons of stuff available from DECUS. In fact, those documents and code were a fairly decent education in numerical algorithms (and of course, grist for subsequent discussions of poor algorithms.. random number generation is notorious)
In an academic environment in the 70s, there wasn't any particular reason NOT to share your code. If you were working under a government grant or funding, it was basically public domain anyway.
For big FEM codes (NASTRAN for mechanical stuff, NEC for electromagnetics) the source codes were published, with documentation on how they worked, and a lively commentary on the quality of implementation.
So there's an enormous number of fairly well written examples (for the time) out there to look at and use and modify, so the culture evolved that way.
In the biology area though, computers are a latecomer. There's also a recognition that those codes might be "valuable intellectual property" no matter how poorly coded and designed they are. A well-engineered and efficient code would be especially valuable, and provide a competitive advantage. AND, because of the Bayh-Dole act, even government funded development within the academic environment (traditionally open and sharing) can be proprietary.
James Lux, P.E.
Task Manager, FINDER - Finding Individuals for Disaster and Emergency Response
Co-Principal Investigator, SCaN Testbed (née CoNNeCT) Project
Jet Propulsion Laboratory
4800 Oak Grove Drive, MS 161-213
Pasadena CA 91109
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Beowulf