From: Graham C. Hughes
Subject: Re: Ousterhout and Tcl lost the plot with latest paper
Date: 
Message-ID: <87d8s8jqck.fsf@A-abe.resnet.ucsb.edu>
-----BEGIN PGP SIGNED MESSAGE-----

>>>>> "Donald" == Donald Syme <·······@cl.cam.ac.uk> writes:

Donald> Trash.  Show me C++ which is as succinct and I may believe
Donald> you.

How much do you want?  I've found that STL makes my code incredibly
brief, and with the correct toolkit (I like Qt), windowing isn't that
hard, either.  Better, you can subclass existing components so you can
create a new widget, something you can't do in Tcl/Tk without
resorting to C extensions.

This is an aside, however; the real issue is that Tcl/Tk is a
glorified macro processor, full of weird tricks.  Try explaining why
you can't pass an array, or why 'set $$foo bar' doesn't work some
time.  *This* is the reason why Tcl/Tk is ``concise''; everything is a
string.  Where else can we find:

	- lists where accessing anything is an O(n) operation
	- numbers that autoconvert when you don't want them to (on
		east coast area codes, for example)
	- non-extensible mathematical expressions (think expr here)
	- call by name
	- dynamic scoping

and other assorted nastiness.  Even Perl is a breath of fresh air
compared to this.

I have nothing but good things to say about Tk.  Its incarnation in
other languages like Scheme, Python, Perl, and O'Caml are very nice,
and in the correct language (I know Python does this, not sure about
the others) you can even subclass widgets.  Tcl, however, is something
else entirely, and I reject it for anything except trivial programs
out of hand.
- -- 
Graham Hughes    http://A-abe.resnet.ucsb.edu/~graham/     MIME & PGP mail OK.
const int PGP_fingerprint = "E9 B7 5F A0 F8 88 9E 1E  7C 62 D9 88 E1 03 29 5B";
#include <stddisclaim>

-----BEGIN PGP SIGNATURE-----
Version: 2.6.3
Charset: noconv
Comment: Processed by Mailcrypt 3.4, an Emacs/PGP interface

iQCVAwUBM0eU1iqNPSINiVE5AQH7jgQAmWUpvQGnNmGUshzygBnonh+OrK7iO3Uq
+11DSwDQVsg9DsOfB3HNqD1H4qguNPe2DXZBHRS25DiYhBEXLr+1nWMibtyAvgD1
44xA+qPRyzzq2MQ31XCRjKqAMzQC7XCr7LUotRm5f3GbElouweATfRzrUfgZ+a32
px5rYhG001Y=
=J2TS
-----END PGP SIGNATURE-----