
Tcl: a brief overview of language design gone wrong - yan
http://www.airs.com/blog/archives/495
======
bch
Where to start...

I guess we can start w/ the age of the last version that was used (clue: had
no namespaces). That places it squarely pre-8.0 (8.05 was released early
1999). Rehashing a twelve year old language? (For reference, Tcl is shipping
8.5.9 now, and Tcl 8.6 is in beta, under active development).

Lots has gone on since, then; Glancing at the article, first thing that jumps
out is complaining about Tk not looking nice. Tk has had "Themed Tk" for some
time now (<http://en.wikipedia.org/wiki/Tcl#Tile.2FTtk>). The difference is
remarkable.

Regarding quoting -- not much more to say than Perl or /bin/sh, for example.

    
    
      {prints $a... literally}
    
      "prints: $a <--- value of 'a'"
    
      "prints: [glob *] <--- the result of the glob cmd (a list of files)"
    

Basically, substitution works for "double quotes", but not for {braces}. (But,
dig into Tcl and there are more creative commands at your disposal, like:

    
    
      [subst -nobackslashes -nocommands {this is content of variable "a": $a}]
    

And this: "...although everything is a string and it should be very easy to
stick things together when that is what you want to do, in any scenario which
is even slightly complex you have to start writing list operations in order to
build your strings". What's wrong with:

    
    
      set a "oh"; set b "hai"; puts "$a $b";# easy-peasy (I'm a comment)
    

"Tk’s layout procedure does a lot for you automatically, which in practice
means that it’s a pain to do anything else."

Tk has 3 layout engines...pick one. If you're having a lot of trouble, you're
doing it wrong.

The beauty of Tcl and Tk (which thankfully still exists today) was largely
glossed-over, which is too bad.

* The Tk system...is a very clever way to easily write a GUI program.

* "Tk is cross-platform." (of course, so is Tcl). Win, Mac, BSD, Linux, Solaris, etc., etc.

* "...the actual Tcl implementation is great." Still true.

* "has a nice event loop" Still does... and threads, and co-routines (8.6), and lambdas, safe interpreters, utf-8 support, tcp sockets, "tdbc" database connectivity (8.6), built-in OO facilities (8.6)...

* "The core library provides system independent facilities which are well designed and well implemented." Still true... a joy to work with.

So there you have it, an ad-hoc response to a review gone wrong.

~~~
tygorius
At the beginning the author says his experience is based in 1997 -- which
triggered a bit of a WTF response from me. If the language hadn't been updated
in that time the "review" might make sense, but as your details point out it's
woefully out of date.

But really, in the realm of scripting languages 14 years is a _huge_ amount of
time. Why would anyone judge Perl, Python, or Lua, say, by the state of those
languages _in 1997_. The mind boggles.

