The TL;DR:
- easy to write interactively because there's no fiddling with the parens, quoting, or commas you find in JS, Ruby, or Python
- uses [ and ] for subexpressions instead of ( and ), which makes typing easier
- "command" oriented, instead of "expression" oriented
- saner than shell while having many of the same advantages
I would like to point out that in several non-US keyboard layouts, [ and ] are harder to type, not easier. For instance, on German keyboards, they are mapped to Right-Alt (AltGr) + 8/9, which is quite annoying to type compared to normal parentheses (which are mapped to Shift+8/9, with Shift being better placed and available on both the left and right side of the keyboard).
AltGr + a -> ä
AltGr + o -> ö
AltGr + u -> ü
I'm Polish and I'm very glad that our most common layout is like that for ąćęłńóśźż (with AltGr + x for ź). Currently I'm in Germany and I wonder if there is similar layout for German umlauts.
I used to get laptops and keyboards with the US layout on them, but stopped since the resale value in Sweden drops sharply because of it. Thankfully, I've touch typed since forever so I rarely look at the keyboard anyway. (Unless, of course, I have to type with the Swedish layout.)
I miss some features of more modern languages though. TclOO (object-oriented extension) is minimally useful but lacks GC, so you have to keep track of all objects to manually destroy them when you are done. I miss easily passing around functions (procs), and saner local namespacing for functions (ie like in python). Exception handling is also a bit of a pain.
A lot of these things are addressed in Jim Tcl, but it hasn't seen much adoption.