Tcl is Hard! Now get off my lawn!

What the critics say about this page: "This page manages to be ... fantastic..." -- [L1 ]

Tcl is unpopular - because it's hard.

  • Tcl's hard because the language enforces so few constraints.
  • Tcl's hard because it's so powerful, self modifying code is standard operating procedure.
  • Tcl's hard because if everything is a string that means you have to think about how your data is represented.
  • Tcl doesn't have training wheels such as a rigid type system.
  • Tcl's so hard that people tell you it's simple just to mess with your head.
  • Tcl expects you to throw away all those crutches you picked up with other languages, or make your own new ones, Tcl doesn't care.
  • Tcl doesn't hold your hand when you write large programs, it assumes you know how to structure code and need that hand to type.
  • Tcl doesn't have specialized syntax for looping, procedure definition, transactions, concurrency, or any number of other things you can just extend the language to do.
  • Tcl doesn't have lexical scoping, it doesn't have dynamic scoping, it has whatever scoping you implement.
  • Tcl has threads only for when you're too lazy to look after your own event-driven processing state and don't really care about efficiency.
  • Tcl threads are too hard, because the apartment threading model means you don't have to worry about random changes and crashes, so you get to spend too much time being confused by [expr {$i + 2}]
  • Tcl has a preferred OO system for when you can't be bothered to implement your own.
  • Tcl doesn't need a huge code repository because if you can't write your own libraries faster than you can learn a new API you're not good enough.
  • Tcl syntax is so simple and regular, when you screw up you have to think about it - no compiler is able to tell you where to put your braces.
  • Tcl is not your mother, but it quite likes the look of her in lingerie.
  • Tcl's has a low-level C API which is cunningly designed to disguise its inherent complexities so that you can be fooled into thinking it is easy.
  • Tcl is so hard that FORTRAN programmers can think of it as a lower level language.
  • Coding in Tcl requires equal measures of will and skill

... and mediocre programmers don't like that.

Tcl is not dead because even Bruce Lee and Richard Stallman couldn't kill Tcl. In fact, if they wrote a contract to hire an assassin to kill Tcl, they'd have to write it in Tcl, because no other language has the unicode.

This man programs in Tcl:

http://files.sharenator.com/raptorkaiser_The_8_Manliest_Images_on_the_Internet-s500x432-92847.jpg

"What do you mean you didn't brace your [expr]s?"

This is our lawn. Get off it.

lawn.jpg


Some people (apologists) want to make Tcl accessible to little girls and housewives. I have moved their mewling to a different page, (falsely) entitled Tcl isn't really hard.


jdp - 2010-04-02 00:55:40

Wait, this is a list of reasons why Tcl is awesome! (Mostly)

For me, Tcl's virtue comes from the fact that so few restrictions and crutches are available - I can do whatever I want, and try crazy things, without the language getting in the way. If I want to go write some object-oriented cut-glass neatly-planned-out program, I'll go write it in C# or Python or something like that. If I want to write a program to get a specific job done, now, ASAP, I'll write it in Tcl. Or if I want to try something crazy, I'll try it in Tcl. Tcl is like pencil - it's really easy to just doodle, and go back and fix stuff. Languages like C# or Python are like pen - they look nice, and they hold up better in some cases, but it's harder to go back and make radical changes.

You want a really nasty language? Try Javascript. No typing, no standard interpreter, no inheritance, not enough flexibility to fix things, and self-modifying code is more-or-less out. Tcl has me spoiled rotten.