Why Tcl sucks as a programming language

Tcl is a dying language. In the free marketplace of ideas, tcl lacks the community of fans as well as corporate support (see the languages invented at Microsoft, or the huge push in JavaScript from Google's optimization of V8 and thus Node.js as well as Go from Google, or all the large web companies who help PHP dominate most of the software running the web, whereas Tcl's was once sponsored by Sun who then spawned Java and then died/got swallowed by Oracle). Also, tcl sucks.

There was a time (in the 90s) that Unix graphical programs were all universally ugly and many used the Tk GUI toolkit and Tcl worked with Tk. But Tcl/Tk is, if not dead, on life support. Tk sucks.

"Expect" is useful tool for scripting Unix command line tools which work via an interactive text interface. But it is less useful when you have to use Tcl, a sucky language. More people should be aware of the alternatives to Expect/Tcl, such as Pexpect, Python Expect, and Empty, a shell command which can also control a program running in a pseudo-tty. There are other Expect replacements for other languages (C#, Java, Perl, Ruby, etc.). It's best to just not make command line Unix/Linux software that requires (as the only way to use it) an interactive terminal.

For embedding into other software in order to script that software, there's Lua. Or any other general purpose language. But games and Renoise and other new projects which want an embedded language will not consider Tcl. Lua, like Tcl, was designed to be an embedded scripting language. Lua is not slow like Tcl and sucks less than Tcl.

TCL is not a real programming language and was not designed to be one. PHP also falls into this category, although it's always had more "real programming language" features than TCL. But due to the huge size of the PHP community, newer versions of the language have overcome many of its earlier shortcomings. TCL does not have a large community of users, which means few people are pushing development forward, there are few resources to get help or learn how to do specific things, few examples on GitHub, and finding other TCL developers is nearly impossible. No business should put Tcl in their software stack if they want to grow.

You cannot simply comment out code in Tcl. Or have code-like comments. Because somewhere in the code will be curly braces and they won't be matched and this will be a syntax error - in your comment.

TCL is slow and not suitable for large projects with large code bases.

Like in Shell script, everything in Tcl is a string (or a series of strings as arguments to a command). There's no numbers. There's no syntax for arrays or dicts or other complex objects. None of the stuff that makes programming easier.

I used Tcl professionally in the past. I've realized how bad a choice it is in the 21st century. It's time to bury Tcl.

Add new comment