October 3rd, 2024

Why I Like Tcl

The author appreciates Tcl for its elegant syntax, ease of C integration, and event-driven model, but notes its declining popularity, weak type system, and lack of modern libraries.

Read original articleLink Icon
Why I Like Tcl

The article discusses the author's appreciation for the Tcl programming language, highlighting its strengths and weaknesses. Tcl is presented as a powerful yet simple glue language, combining features of shell scripting and functional programming. The author praises Tcl's consistent syntax, ease of integration with C, and robust introspection capabilities. The language's event-driven model and clean I/O implementation are also noted as significant advantages. However, the author acknowledges Tcl's declining popularity, lack of modern libraries, and limitations such as a weak type system and absence of certain programming features like metaprogramming and built-in keyword parameters. Despite these drawbacks, the author believes Tcl remains a practical and enjoyable tool for programmers, especially those who appreciate its design philosophy. The conclusion emphasizes that while Tcl may not be as widely used as other languages, it offers unique benefits that can appeal to specific programming needs.

- Tcl is praised for its elegant syntax and ease of integration with C.

- The language features a robust event-driven model and clean I/O implementation.

- Despite its strengths, Tcl faces declining popularity and lacks modern libraries.

- Limitations include a weak type system and absence of certain programming features.

- The author finds Tcl to be a practical tool for specific programming needs despite its drawbacks.

Link Icon 8 comments
By @samatman - 6 months
I first ran into Tcl on Sparc stations in the mid 90s, and came away with the impression that it was just a bad language. I was implicitly comparing it to Perl, this wasn't a deep dive or anything, just a vague and negative impression which stuck with me.

My interest in the language got a second wind when I read yosefk's blog entry about it https://yosefk.com/blog/i-cant-believe-im-praising-tcl.html

I think there's room for a new language which speaks to Tcl's strength as a command language. This is an under-recognized niche IMHO, mostly covered by shell languages, which have a necessary focus on running other programs. That means they need to communicate with those programs primarily through the command line interface for invoking a program, which is a very thin bottleneck for interactive feedback.

Tcl as a scripting and extension language, which focuses on issuing commands, is to this day basically unique (this theme is extensively elaborated in the linked post, it's a good read). I find myself wondering what another language, freed of the constraint to fit the (from a modern perspective) extremely resource-constrained systems prevalent when Tcl was big, might look like.

If I ever figure that out, I might try and write it.

By @jmclnx - 6 months
I do not know the language, but someday.

I have one application that needs tcl and tk, I use it for my checkbook, it is a nice and simple application that data is saved in text files.

cbb has been around since 1999 and Professor Marco A. P. Cabral fixed many issues a few years ago. I think me and the Professor are the last ones left using cbb.

https://sites.google.com/matematica.ufrj.br/mapcabral/softwa...

It works with version 8.6, had minor issues with 8.5, but prior versions it worked fine. Since I heard 9.0 was released, I hope that odd issue does not come back or other issues do not occur :)

But, one good thing, you can have multiple versions of it on your system. Plus it works great on Linux and the BSDs.

By @BoingBoomTschak - 6 months
The recent Tcl 9.0 release thread had some good discussion going on and my summary post about personal reasons for using it seemed to interest some people, so I fleshed it out a bit more on my website and decided to shamelessly link it on HN.
By @oldlaptop - 6 months
I don't (personally) like to think of the type system as "everything is an auto-mutating and cached tagged union + string" - from the perspective of someone writing in Tcl, everything absolutely is a string. It's cool that the implementation happens to store some strings as integers, or arrays, or hash tables, or whatever else as a performance hack, but unless you're actually working with Tcl_Objs at the C level, you generally don't need to care about that.
By @mdaniel - 6 months
> No LSP/SLIME equivalent, which is as painful as it sounds.

OT1H, this labels itself as Verilog, but OTOH https://github.com/Scaleda/Scaleda/blob/v0.2.2/src/main/scal... (it has a non-standard license, so caveat lawyerator)

I couldn't readily find the Antlr file that it is adapting into IJ's AST in order to know how much it tries to cover

By @fithisux - 6 months
I think people should buy Ashok P. Nadkarni's

"The TCL Programming Language"

and they will understand why Tcl is still relevant.

I hope he releases an update for 9.0.

By @dave333 - 6 months
Changing the background color of the div id=content from chocolate(?) to white makes this 1000% more readable. PS now that I've read it - great summary.