One of
aspect's favourite things about Tcl, that he cites to anyone who will listen, is that it
Plays Well With Others. This shouldn't be a surprise given
JO's original vision for the system as a "Glue language", but how well Tcl succeeds in this respect is really quite a marvel.
Inventory of IPC methods lists some of the ways.
Unicode support is still impressive. On Windows there are things like
CAWT and
TWAPI.
Expect is the granddaddy of playing well with others, and still incredibly widely used. Accessing native libraries with
critcl or
tcc4tcl is almost too easy.
Because
everything is a string, conversing with another process is trivial: do as much parsing as you need and no more. Contrast the approach in
Lisp or even
Python or
Javascript where external data needs to be brought into the native world-view (
[s-expressions
], or
JSON) to conveniently consume.
For consideration: in how many languages could you consider the below a relatively simple program, requiring only hundreds of lines of code for each feature?
- presents a simple GUI with some desktop interaction
- manages a Serial port
- listens for syslog messages
- manages a couple of external processes
And then what if you needed to add:
- wraps a native library
- provides a simple scripting interface to the user
- builds and runs as a portable app on multiple platforms