I like Tcl for its sandboxing capabilities: "Tcl added sandboxed subinterpreters in a bid to become a safe web scripting language. The plan didn't work out but it is a killer feature for untrusted input."
It was a long time ago but TCL was the only time in my career where I had to worry about nonsense like double substitution causing arbitrary code execution or numbers being passed with a 0 prefix being handled as octal. It was a pain in the backside.
Wow, this takes me back. My first job used OpenACS and AOLServer. We ended up converting everything to Ruby on Rails (1.16) because development had slowed so much and it was hard to find new developers, documentation, and other resources.
One thing that annoyed me a bit with Tcl is that tclsh doesn't come with readline support, meaning you can't go back to previous commands using the up arrow. However, you can work around that using rlwrap.
I wish more permissively-licensed projects used libedit instead of requiring their users to use rlwrap. It could be a simple choice for package maintainers at compile-time.
I would also highly recommend Greenspun's Software Engineering for Internet Application ("SEIA") [0] and in particular the metadata section of that book [1] wherein he goes over defining an ontology of a system, implementing a metadata model in SQL and then generating code based on that metadata model.
For anyone not familiar with Philip Greenspun (he of Greenspun's Tenth Law fame) this is a good example of this writing and humor:
> e.g.,
(set! ten-factorial (factorial 10))
(set! checking-account-balance (+ 25 34 86))
(print "If you're so smart, why aren't you rich like Bill Gates?")
will set ten-factorial to the result of evaluating the factorial procedure with an argument of 10, then compute a graduate student's checking account balance, then print out some career advice to a computer science graduate student.
This is pretty old, but still has some useful introductory info. Be aware that the documentation links point to Tcl 8.4 which is now obsolete, the current version is Tcl 8.6.
- https://news.ycombinator.com/item?id=23145448