On Tue, 3 Oct 2006, John Steele Scott wrote:
> On Mon, 02 Oct 2006 10:00:48 +0930, Daryl Tester wrote:
>> The second point is why I'm so keen to stick a REPL interpreter
>> into some of the applications I've been working on, and Python's
>> reference counting helps with this. Because functions and classes
>> are first class objects, you can do cunningness like taking a
>> reference to the function/class, load in the new version of module
>> and still be able to access the existing code.
>> Perhaps the most extreme example of the utility of this is Erann Gat's
> story about using the Common Lisp REPL to debug a program on NASA's Deep
> Space 1.
>> <http://www.flownet.com/gat/jpl-lisp.html>
Yes, very cool:
"The Remote Agent software, running on a custom port of
Harlequin Common Lisp, flew aboard Deep Space 1 (DS1), the
first mission of NASA's New Millennium program. Remote Agent
controlled DS1 for two days in May of 1999. During that time we
were able to debug and fix a race condition that had not shown
up during ground testing. (Debugging a program running on a
$100M piece of hardware that is 100 million miles away is an
interesting experience. Having a read-eval-print loop running
on the spacecraft proved invaluable in finding and fixing the
problem. The story of the Remote Agent bug is an interesting
one in and of itself.)"
It's a shame the formal analysis[1] didn't even hint at anything beyond
info that a standard core dump might provide on a static program:
"The Executiveâs low-level commands were used to gather a
maximum of information, and then the experiment was interrupted."
[1] http://ic.arc.nasa.gov/publications/pdf/2000-0176.pdf
--
Chris Foote <chris at inetd.com.au>
Inetd Pty Ltd T/A HostExpress
Web: http://www.hostexpress.com.au
Blog: http://www.hostexpress.com.au/drupal/chris
Phone: (08) 8410 4566