I would like to second Mathew Dillon's experience with my own.
I'm a very practical guy and am willing to use whatever works, especially
when it comes to programming languages. So in order to do a prototype of a
user interface, I went with Tcl/Tk since it's popular, well documented,
fast, portable, etc. It turns out that Tk is everything I wanted, but Tcl
became a problem for two reasons: no support for data structures and no
support for structuring large programs. After a few thousand lines of Tcl
code, I spent most of my time just trying to get my program to hold
together and trying to map and unmap my data structures to strings. In the
end I switched to STk and have not regretted it -- not because I'm a Lisp
bigot (I hate all those parens as much as the next guy), but because it's
the interpreted language with the best access to Tk. Also note that when
trying to re-code my Tcl program in Stk, I found it very difficult to
discern what some of the Tcl code was doing after not looking at it for a
few months (and yes, it was well structured and commented).
Ultimately I think this is what Stallman is getting at. He didn't flame
Tcl as a general tool, but he warned that it isn't a good tool as an
extension language. Most Tcl programmers make up for Tcl's shortcomings
by dropping down into C; this just isn't appropriate with an extension
language. If you look carefully at this article, you'll notice that his
complaints echo mine above:
It lacks arrays; it lacks structures from which you can make linked
lists. It fakes having numbers, which works, but has to be slow.
Tcl is ok for writing small programs, but when you push it beyond
that, it becomes insufficient. [Stallman]
Perhaps his complaints do not represent his actual experience programming
in Tcl (and for that he can be criticized), but Mathew Dillon and my
separate experiences reflect that his comments are not totally out of line.
If other programmers out there have had experience (good or bad) using Tcl
for actual projects, I'd much rather hear about them than hear these random
flames.
Rob DeLine