3 ms·
It's a truly awful language. For some reason it's used by a lot of CAD/EDA tools (hardware development), so if you're working in that ecosystem it's often all
by ghettoimp 9y ago
It's a truly awful language. For some reason it's used by a lot of CAD/EDA tools (hardware development), so if you're working in that ecosystem it's often all you've got.
- slrz 9y agoRight, Tcl is the lingua franca of EDA tooling. People just expect that you can talk to it via Tcl. It's often the only way to automate design flows, so you better get used to it. Tcl is actually pretty decent as a language, very elegant in its utmost simplicity. I don't get the bashing here.
- ghettoimp 9y agoI didn't realize that this would come across as senseless bashing. My main complaints against TCL basically center around the everything-is-a-string mentality and the corresponding lack of type safety anywhere. A more minor objection is that I strongly dislike the syntax for numerous reasons, such as - Comments aren't like any other language and have numerous gotchas, e.g., you can't use mismatched {}s in a comment within a proc, - Whitespace is relevant in surprising ways, such as requiring Egyptian brackets for procs/ifs, and I constantly forget line continuations - Using foo for lvalues but $foo for rvalues, while sensible, is a constant source of typos... but, of course, you do get used to it. Mostly. But the comment thing really irks me. I will certainly agree that you can do worse. TCL is surely a fine alternative to awful shell languages (bash, C shell, etc.) But in the realm of dynamically typed scripting languages, I'd absolutely nominate Python or Ruby as a much more reasonable and sensible for your everyday programmer, and Lisp's S-expressions seem far more elegant if you insist on a unifying principle like everything-is-a-...
- isr 9y ago> It's a truly awful language. If you use it like, say, perl, then yes - some of the code looks horrible. If you take a step back, really try to grok it, and then use it like a lisp (but for strings, rather than linked-lists), then its actually quite elegant (with sometimes messy indentation). If you take another step back, glance sideways, look at every other unix shell, then look again at tcl's "undefined cmd" behaviour, the exec cmd, its inherent lispiness (see above) ... ... then you smack yourself on the head when you realise this is yet another defeat grasped from the jaws of victory. Tcl should have replaced bash et al. Especially so for jimtcl (a lightweight reimplementation of tcl, started by the redis author).