3 ms·
> If nobody understands the software (or the tools the software depends on, including the build chain), then when someone other than the original magician has t
by Twisol 7y ago
> If nobody understands the software (or the tools the software depends on, including the build chain), then when someone other than the original magician has to fix something, you're stuck.
Speaking from experience, this is independent of the language chosen. I've seen several pieces of software over a variety of languages that are a nightmare to maintain.
What really ends up happening is a kind of oral lore. People learn how to use the parts of the software that is known to work, and the business processes ossify around those known behaviors. The current developers and maintainers walk around on eggshells to avoid changing that behavior because of the risk involved in changing those processes. And then nobody remembers why the processes are as convoluted as they are, and it just becomes the way things have always been done. When there's a series of successful missions backing that assertion, it's hard to argue the point.
But because this idea -- that perfectly reasonable yet "not mainstream" languages produce software thats's hard to understand and maintain -- is so pervasive, we get pressure coming back from the other side. Perfectly reasonable choices of language are blocked, and everything starts regressing to the mean. The old adage goes something like, nobody ever got fired for choosing IBM. Well, nobody ever got fired for choosing Java, either. Even Clojure or Scala, which are perfectly productive, excellent languages that also run on the JVM, are a nervous choice.
(Also, Makefiles are absolutely a dark art, and many modern languages have thankfully produced better abstractions for their purposes, but C and C++ are still seen as totally reasonable first choice languages for a program. =/ )
> JPL really doesn't want to be stuck when a probe is approaching a planet and a fix is needed to make the mission work. The article has zero recognition that such issues could even exist.
Spacecraft often receive code updates while they're in cruise to their destination -- it doesn't matter whether it's Lisp or not. See for instance Juno: http://www.deepstuff.org/nasas-juno-spacecraft-mission-overview/ http://www.deepstuff.org/nasas-juno-spacecraft-mission-overv...
>> Spacecraft activities during the Jupiter Approach phase include spacecraft subsystem calibrations and maintenance activities, as well as flight software updates and hardware checks in preparation for Jupiter Orbit Insertion.
- AnimalMuppet 7y agoIf I'm at JPL, doing C++, they probably have several more C++ programmers. I probably work with some of them. If I'm gone, they probably have someone who can take over, people who maybe use the same coding standard I use (they almost certainly have one for C++). But if I'm the first person there using Lisp, there probably isn't a standard (unless I wrote it, and if so, it's a standard nobody else there uses). There may not be anyone else there who knows the language. So while Lisp may be a perfectly reasonable language in terms of functionality, it's not a perfectly reasonable language in terms of the organizational issues. I, the programmer who wants to use Lisp, may not have to think about those issues, but managers do.
- Twisol 7y agoYes, I agree! I merely think you overvalue C++ in this case. There's lots of C/C++ code that most people can't understand either -- and not for lack of knowing the language. Apropos of nothing, I found Peter Naur's "Programming as Theory Building" [1] an enjoyable read on the topic of maintaining software after the original developers depart. [1] http://pages.cs.wisc.edu/~remzi/Naur.pdf http://pages.cs.wisc.edu/~remzi/Naur.pdf
- p_l 7y agoNote that JPL had many people using Lisp - in fact, it was C++ that was relative newcomer.