4 ms·
Language snobs and 1990s OO snobs really love to hate on tcl - yeah everything is a string or a command, and the OO extensions were kind of kludgy - but there's
by buescher 2y ago
Language snobs and 1990s OO snobs really love to hate on tcl - yeah everything is a string or a command, and the OO extensions were kind of kludgy - but there's a design ethos to the ecosystem that is really special. Ditch tkinter, which is basically writing python to write tcl, and try doing a GUI in straight tcl/tk. Try the sqlite interface. Write a modest C extension or wrap a library. So much of it just works.
- mdaniel 2y ago> yeah everything is a string or a command And you're not kidding about everything being a command - this here is some "what the fuck is wrong with you people": https://wiki.tcl-lang.org/page/comment https://wiki.tcl-lang.org/page/comment Including the truly stunning collection of: - one must terminate the command with ; before one can comment - one cannot have mismatched braces so don't try to comment out bogus code - one cannot have a backslash in a comment but hey it's a feature not a bug because this is how they launch wish: #!/bin/sh # the next line restarts using wish \ exec wish8.0 "$0" "$@" since the backslash is ignored by the shell but parsed by wish
- pjmlp 2y agoIt made our startup possible, and the experience and learnings we got out of it, were in the genesis of OutSystems. One of those learnings, was that I never wanted to again use a dynamic language without any kind of JIT compiler for full blown web servers. The language is great, rewriting Tcl libraries into C on regular basis due to performance issues not so much.
- rahen 2y agoWhat do you use now? Node.js? Groovy?
- pjmlp 2y agoMostly Java, C#, Typescript and C++ when native libraries are called for.
- eadmund 2y ago> I never wanted to again use a dynamic language without any kind of JIT compiler What about a dynamic language with an AOT compiler? E.g. SBCL implements Common Lisp by compiling everything ahead of time.
- pjmlp 2y agoNaturally AOT also counts, you will find plenty of comments from me regarding CPython versus Common Lisp performance. However in regards to dynamic languages, unless they support and make use of type annotations with an optimizer compiler, JIT will always perform better than AOT, due to what is possible to do in those languages. That is why AOT toolchains in Java and .NET world are actually JITs in disguise, because while the languages look static, they inherited much of Smalltalk and Objective-C dynamism that inspired Java semantics, only the syntax was done in a way to be attractive to C++ folks.
- crabmusket 2y agoI found an article by antirez about TCL [1] which had an interesting perspective. IIRC Redis uses TCL for its test scripts. It was linked from the documentation of https://folk.computer https://folk.computer, which uses TCL as its scripting language. And... For that purpose I'm not sure I even hate it. [1] http://antirez.com/articoli/tclmisunderstood.html http://antirez.com/articoli/tclmisunderstood.html
- __s 2y agoI got to work with a lot of tcl while working on TPC benchmarks for Citus https://github.com/TPC-Council/HammerDB/blob/master/src/postgresql/pgolap.tcl https://github.com/TPC-Council/HammerDB/blob/master/src/post... tcl makes as an alright shell script language