How prevalent is Tcl usage in the real world? You don't hear much about it, are there any new startups adopting it? Or is it only used in legacy projects at large companies?
* Tcl has exceptional testing capabilites -- tcltest drives a lot of the tests for SQLite for example, and is the core of dejagnu, the test harness that drives gcc testing (probably among other things).
* Tcl is at the core of high-end Cisco products... and on and on and on...
I think this[0] really sums up "where is Tcl these days"... it reallyisoutthere, if that makes you feel better about using it. If that doesn't matter -- the sheer joy of a solid, battle-tested, fun-to-use language/framework might be enough to draw you in. Try it. You'll like it.
I know a couple of startuppy companies that are still using it, but it certainly feels like a language in decline. There's a lot that's elegant about it, but the syntax is awkward in practice, and compared to e.g. Python there are fewer libraries available and no really compelling advantage, IMO.
It's a language that deserves better than it got - it should've become the standard for *nix config files (thanks RMS for the mess we have now). It should've been the language Sun pushed to run everywhere (it even supported java-style applets in web pages, without the slow vm startup). It should've filled the Lua niche (to a certain extent it did) as an embeddable scripting language. It should've filled the perl niche - it had good support for invoking external executables in a shell-scripting role, and could even be used as a login shell; it had good regex support, and was a first-class programming language that could be used for web backends. Heck, it even did reactive I/O in the very early days (IIRC there was a fantastic server product that was caught up in the demise of Netscape or AOL or some such) - it should've been Node too. But it always felt a bit unloved at Sun, especially post-Java (and to be fair, who can blame them when Java was that popular?), and it somehow never seemed to reach critical mass.
> IIRC there was a fantastic server product that was caught up in the demise of Netscape or AOL or some such
I believe you're referring to the ArsDigita Community System, which was written in Tcl, and which ran on top of AOLServer, a web server that supported Tcl as a scripting language.
(ArsDigita's rise and fall was a classic dotcom bubble story, complete with Aeron chairs, fancy cars, greedy VCs, founders with big egos, lawsuits, etc.)
Tcl was at the core of StoryServer (aka Vignette, aka OpenText) - a Web Content Management System. Some large enterprises were (maybe still are) running their Web sites on StoryServer 4.2 (Tcl) until a few years ago. It was certainly quite popular in early 2000. Then StoryServer was renamed to Vignette, then they added ASP support, after that JSP, after that outsourced everything and that was the end of it. An elegant, small and fast engine turned into a mountain of jar files and APIs that take 200 man/hours to add 2+2.
Tcl is a beautiful language, very easy to learn and very powerful. I remember reading an article by the creator of Tcl where he was amazed that Tcl is used in very different way from what he envisioned. He meant to have Tcl as a glue, high level logic layer, while low level performance-critial stuff would be done in C. That is why Tcl (1) has great support for C and (2) has ugly way of doing arithmetic (e.g. [expr $x + 1]). Truth is that Tcl was never meant to add numbers. But instead people started writing all kinds of software in it, that went far beyond glue layer.
I use it in little ways, here and there. Its syntax inspires any tool-command syntax I write (see http://yosefk.com/blog/i-cant-believe-im-praising-tcl.html). I have a few Tk scripts around to launch tasks (generate a new data repo, run various forms of regression tests, etc.); nothing beats Tcl+Tk for "build your own tool" GUIs. When experimenting with C code, it's useful to just embed a Tcl interpreter to run bits of it. Sure, I could use Lua, but Tcl's even easier.
None of those are legacy projects, but none of them are the primary focus of my work, either.
It's my first choice if I have to build a standalone app with GUI. With freewrap you can build an executable for Windows and the same source works for Linux.
I certainly don't think it's terribly common anymore, but there's still a bunch of stuff out there that uses it. I've seen it most often as a scripting extension to some larger software package (e.g. visual molecular dynamics: http://www.ks.uiuc.edu/Research/vmd/). OpenACS is also built on tcl/aolserver and was an early framework for building community web sites that's still around and still getting updates: http://openacs.org/ The "expect" program is a handy thing to have in your toolkit as an easy way to automate things and is implemented in tcl.
It's definitely not the 'in' thing these days, but it's a very solid, robust bit of code that still makes for a nice language for creating certain kinds of systems.
ProjectOpen [1] could be an example. But from my experience it is basically a legacy project used in (large) companies, because it filled a gap 15 years ago when web based PM software was still rare.
The funny thing is, that the use of Tcl is explicitly advertised as security through obscurity:
"The combination of AOLserver and the TCL programming language is not commonly found in the Internet, so a potential hacker will need to expend a considerable amount of criminal energy in order to reverse-engineer the application stack." [2].
From what I've heard, most of those tools are not really the best of poster-boys for Tcl in that they're kind of old and crufty and probably not a lot of fun to work with.
Usually, the tools themselves aren't built in TCL (they're usually C/C++), but the interface is in TCL (and some other proprietary languages, depending on which tool you're using)...
And yes, unfortunately the tools end up being old and crufty, and that was my impression of TCL.
I did a bunch of TCL while working at one of the aforementioned companies, and I got to use it enough to see the lisp-y awesome parts (if you squint hard, [ ]s are just oddly shaped parenthesis), and the smalltalk-y stuff, but I still would have preferred using a different scripting language as my interface.
* F5 and A10 front-end traffic management use Tcl at their core -- here's an interesting article from F5 about re-visiting that design decision: https://devcentral.f5.com/articles/irules-concepts-tcl-the-h...
* Tealeaf (http://www-01.ibm.com/software/info/tealeaf/) uses Tcl at the core of its capture appliances.
* Tcl has exceptional testing capabilites -- tcltest drives a lot of the tests for SQLite for example, and is the core of dejagnu, the test harness that drives gcc testing (probably among other things).
* Attempts to replace Tcl at NBC (http://www.researchgate.net/publication/247290458_Prototypin...) have apparently gone on for years -- but nothing has managed to do it.
* Tcl was used in prototyping mars rover work (http://wiki.tcl.tk/13456)
* Tcl is used in chip design (http://wiki.tcl.tk/12897) and other CAD work
* Tcl is at the core of high-end Cisco products... and on and on and on...
I think this[0] really sums up "where is Tcl these days"... it really is out there, if that makes you feel better about using it. If that doesn't matter -- the sheer joy of a solid, battle-tested, fun-to-use language/framework might be enough to draw you in. Try it. You'll like it.
[0] http://www.reddit.com/r/programming/comments/1a1ynm/tcl_the_...