I wrote the paper. I instigated the use of Tcl on the Mars Pathfinder project. Do a Google search on:
Smyth Tcl Mars
to find several URLs for text and postscript representations of the paper.
Initially, Tcl was very useful. We eventually migrated everything to object-oriented C code, so Tcl did not make it to Mars. However, it did (and does) remain a key language for tools used to auto-generate the code we flew on Mars Pathfinder, on Deep Space One and others, and now on the Mars Exploration Rovers project.
The biggest reason we did not fly Tcl to Mars was that Tcl is simply too hard to validate to the level of completeness required for interplanetary flight software (even one bug has killed several spacecraft). The bug that scared me was where some message (sent from one thread to another) had a comma or paren or curly brace or something that caused the parsing of the argument to be totally different from what was expected. The need to validate all interfaces to not just values (of course) but also syntax simply seemed intractable. This is true for every useful scripting language I can think of.
Tcl enabled an enormous breakthrough in how we handled telemetry (data communicated from the spacecraft to Earth). This breakthrough software from Mars Pathfinder has been used on every interplanetary spacecraft since.
The architecture we evolved using Tcl, and migrated to object-oriented C, resulted in zero bugs in the code that used it (most of the 'Sagan Station' code, none of the 'Sojourner' rover code). We used many "responsible objects" running in separate threads, passing messages. Originally, the messages were all Tcl scripts, and each responsible object ran a Tcl interpreter (multi-threaded, with incrTcl and other extensions). The architecture was based on the Actor concept of Gul Agha and others, and the original (but not later) concept of the Law of Demeter, and is described in simple email conversations you can read starting here:
Smyth Tcl Mars
to find several URLs for text and postscript representations of the paper.
Initially, Tcl was very useful. We eventually migrated everything to object-oriented C code, so Tcl did not make it to Mars. However, it did (and does) remain a key language for tools used to auto-generate the code we flew on Mars Pathfinder, on Deep Space One and others, and now on the Mars Exploration Rovers project.
The biggest reason we did not fly Tcl to Mars was that Tcl is simply too hard to validate to the level of completeness required for interplanetary flight software (even one bug has killed several spacecraft). The bug that scared me was where some message (sent from one thread to another) had a comma or paren or curly brace or something that caused the parsing of the argument to be totally different from what was expected. The need to validate all interfaces to not just values (of course) but also syntax simply seemed intractable. This is true for every useful scripting language I can think of.
Tcl enabled an enormous breakthrough in how we handled telemetry (data communicated from the spacecraft to Earth). This breakthrough software from Mars Pathfinder has been used on every interplanetary spacecraft since.
The architecture we evolved using Tcl, and migrated to object-oriented C, resulted in zero bugs in the code that used it (most of the 'Sagan Station' code, none of the 'Sojourner' rover code). We used many "responsible objects" running in separate threads, passing messages. Originally, the messages were all Tcl scripts, and each responsible object ran a Tcl interpreter (multi-threaded, with incrTcl and other extensions). The architecture was based on the Actor concept of Gul Agha and others, and the original (but not later) concept of the Law of Demeter, and is described in simple email conversations you can read starting here:
http://www.ccs.neu.edu/home/lieber/LoD.html