Why is tcl broken?

Paul Duffin pduffin at mailserver.hursley.ibm.com
Fri Jun 11 07:50:46 EDT 1999

Fernando Mato Mira wrote:
> Lars Marius Garshol wrote:
> > * Fernando Mato Mira
> > |
> > | I'm trying to collect a list of all the _current_ issues making tcl
> > | a bad language choice.
> >
> > You can find three interesting articles on this at
> >
> > <URL: http://itrc.uwaterloo.ca/~papresco/tcl/>
> Thanks. But the Sah article is not accessible,
> and his homepage makes no reference to it.
> Regarding the Stallman article, it's a quite vague,
> and it's not sure one can extrapolate from their TECO experience
> to Tcl.
> About the Connoly one, the namespace issue seems to
> be solved by [incr Tcl]. But what about that "interpreted
> multiple times"? Is it just an efficiency issue, or a semantic
> nightmare (maybe both)?
> What about dynamic scoping?

Dynamic scoping I assume describes the mechanism that Tcl uses
to pass references through to procedures, namely that the calling
procedure passes the name of the variable and the called procedure
creates a link from its stack frame back to the calling procedures
stack frame.

If this is the case then it is just not a problem, unless you use
it badly which of course could be said of just about any programming
construct from "goto" to "multiple inheritance".

Obviously some built in support for passing references would be nice
but the BIG advantage that Tcl has over just about every other language
apart from Lisp is its ability to morph itself (which of course can
also be abused) so it is possible to do this in Tcl itself.

> BTW, I just found:
> http://www.vanderburg.org/~glv/Tcl/war/
> http://www.vanderburg.org/~glv/Tcl/war2/

As with most of these articles they are out of date and the authors
tend to have (although not all) an agenda of their own which REQUIRES
that they prove Tcl (or whatever language they are 'analysing') is 

Take for instance the Connolly article.
	"Tcl has one great big huge namespace"
		8.0 introduced support for namespaces

	"Tcl code is interpreted multiple times during the execution of
	 a program. There is no intermediate form as in Python and Perl"
		8.0 introduced a byte compiler

The Stallman article written in 1994 is also way out of date and 
adversely affected by his agenda.

Also considering his complaints about Tcl's syntax I was amazed to find
that he chose Lisp because if you replace the '() with {} and replace 
all other () with newlines you end up with a Tcl program (almost).

Paul Duffin
DT/6000 Development	Email: pduffin at hursley.ibm.com
IBM UK Laboratories Ltd., Hursley Park nr. Winchester
Internal: 7-246880	International: +44 1962-816880

More information about the Python-list mailing list