Tcl and the Tk Toolkit, 2nd edition
journal.dedasys.com
journal.dedasys.com
I never understood why Tcl wasn't wildly popular. Even now it suffers from a reputation as an "old" language, when its VM is up there with the best of them.
I also think Tk is a major strength, though I always preferred Perl's interface to it.
Despite these strengths, I don't like Tcl as a language. It's not that its syntax isn't without certain charms (brevity being one), but it has a few flaws that I consider fatal:
1. It is far too easy to make the mistake of inlining a list. This can result in arguments being passed in the wrong order, or partial lists being processed when it "seems like" the whole list has been read, etc. This is a very hard problem to debug.
2. The Tcl interpreter does not trace blocks very well. It usually points you to the line of the last curly brace in a half page of nested constructs, which tells you almost nothing about where an error is.
3. While it's very easily bound to C, it has no concept of objects. So Tcl APIs seem to require constant re-querying; for example, rather than "set x [expensive_get_operation a b c]" followed by "[x do_y]" and "[x do_z]", APIs tend to look like "[expensive_y a b c]" and "[expensive_z a b c]". All other advantages to objects are, similarly, lost.
Of course, Tcl has been evolving fairly rapidly lately, and 8.5 addressed a number of serious annoyances. Maybe my perception is out of date; if so, please enlighten me.
http://www.markroseman.com/tcl/guide86.html
And of course, different OO systems have been available for a while.
One of the 'bad marketing' points is that having different, competing, not-installed-by-default OO systems available might be fun for people to play with, but is not fun for end users who just want to pick one and be done with it.
Its not just Marketing, Tcl is just not as exciting as Haskell, Erlang, Ruby or even R!
That sounds exactly like a marketing problem. The other things are actually technical problems that are more or less correct, but that haven't necessarily stopped other languages from doing ok. I mean, look at Erlang, for instance. It does a few things very well, and other things in it are fairly ugly. And yet, warts and all, it's certainly worth studying, and utilizing for certain classes of problem.
Another example: Tcl has more or less got i18n/unicode/utf8 and threads right for years, whereas Ruby has struggled with those same issues. Every language/implementation has strengths and weaknesses, and part of what 'marketing' is, is getting the language into the hands of people who will do well with its strengths, and also gathering data from the 'market' in order to determine what needs improving/fixing.
BTW, the Tcl community is excellent. Very friendly people, very welcoming and approachable.
2 no comment, 3 may be true now but Phillip Greenspun managed to build his business around it, 4, can you provide an example?
5 only in the sense that they don't blog much.
puts " page \\\\\\\\\\[8]"
Sure there were workarounds but it was definitely a gotcha if you knew TCL prior to Vignette and were suddenly faced with Vignette messing with you.