Lambda the Ultimate

inactiveTopic The Tcl War
started 9/23/2002; 12:15:10 AM - last post 9/24/2002; 7:10:42 AM
jon fernquest - The Tcl War  blueArrow
9/23/2002; 12:15:10 AM (reads: 2710, responses: 12)
The Tcl War

An archive of interesting points made during the "Tcl War" of 1994 initiated by Richard Stallman's "Why you should not use Tcl" newsgroup posting. Several interesting ideas arise during the debate like that of users "voting with their feet" for languages and the virtues of the Unix string-based textual approach to programming versus the virtues of the more symbolic approach of the Lisp world.


Posted to history by jon fernquest on 9/23/02; 12:36:37 AM

jon fernquest - Re: The Tcl War  blueArrow
9/23/2002; 12:41:28 AM (reads: 1569, responses: 0)
It's interesting to re-read this debate in light of where the two languages that featured prominently in the debate are today.

After it got swallowed up and disgorged by several companies and then finally lost its leader Tcl seems to have lost its momentum.

Although I haven't heard much about Guile recently, it seems to have reached maturity, sporting a full object system GOOPS and most Scheme SRFI functionality including lists, strings, record-types, multiple values, character sets, and time and dates. (SRFI's make extensive use of higher order functions from functional programming like fold and map.)

Is the purity of ideas that seems to be a feature of the Free Software Foundation better for a language's long run development then a language's getting too mixed up in the corporate world? Or perhaps a language needs a period of incubation like C at Bell Labs before it ventures into the turbulent outside world?

P.S. The Tcl community seems to be alive and well based on the activity at the "Tcl'er's Wiki" and the Sourceforge Site

Michael Vanier - Re: The Tcl War  blueArrow
9/23/2002; 2:17:47 AM (reads: 1559, responses: 0)
Personally, I think that Tcl got severely hurt by the fact that it had only two killer features (ease of embedding and the Tk graphics toolkit) which were rapidly added to perl and python, both much more powerful languages. Tcl ended up looking like the "dumb guy" solution for people too lazy to learn python (and few people turned out to be THAT lazy).

I don't think most people give a rat's ass about purity of ideas (except for LtU readers, including me, of course ;-)). But it's just a fact that languages built on good abstractions have fewer limitations, and the abstraction that Tcl was based on ("everything is a string") is just way too limiting for good programming.

Glenn Vanderburg - Re: The Tcl War  blueArrow
9/23/2002; 4:32:10 AM (reads: 1584, responses: 3)
It was funny to log on this morning and see this story on LtU. I guess I have to chime in here, since "The Tcl War" is my site.

When the Tcl war happened, I was a big believer in Tcl. That's no longer true, although I do still see some virtues there, and I do still think RMS' argument against it is absurd (although, to be fair, it turned out later to have been written by Tom Lord rather than RMS).

When I discovered Tcl, I had just emerged from the world of IBM's VM/CMS operating system, where Rexx originated. Rexx was intended to be an application extension language that was easy enough for users (much like AppleScript, I suppose) and it was quite successful in that role. I missed that, and was looking for something similar in the Unix world. Tcl was aimed squarely at the same problem, and I thought it was a pretty good answer. (I like the idea of command-oriented languages with line-oriented syntax for such things.)

Unfortunately, that model of application development remained a fringe idea, and most people used Tcl as an application language rather than a glue language. In that role, I think Tcl is a very questionable choice.

(Oh, and I suppose I should answer the natural question: if I've moved away from Tcl, what have I moved to? My day job is Java, but my favorite language these days is Ruby. I've also -- yes, it's true -- grown increasingly fond of Lisp, and I'm currently reading Paul Graham's On Lisp to increase my understanding of Lisp macros.)

Todd Coram - Re: The Tcl War  blueArrow
9/23/2002; 7:38:43 AM (reads: 1632, responses: 1)
Tcl is alive and well. Its role as a glue language is very strong. It is also an active playground for playing around with other programming paradigms. There are dozens of OO extensions for Tcl (many of them are written in pure Tcl). They include traditional class based, prototype based and various meta-class based implementations. If you want to play around with rolling your own OO language, Tcl is a good choice. There are also functional playgrounds for Tcl: Lambdas, closures, curries, list comprehensions, and other constructs have been implemented in pure Tcl.

The concept "everything is a string" has (since Tcl 8.0) been effectively replaced by "everything can be represented as a string". Internally, Tcl now maintains data types.

At some point, the line blurs between "application" and "glue". Any language with the concept of a "main" body, the job of that body is to glue together functions, procedures and objects to create an "application".

I write applications in Tcl. (I also write them in Python, Lua and sometimes Lisp). It's more a question of taste...

Glenn Vanderburg - Re: The Tcl War  blueArrow
9/23/2002; 9:11:27 AM (reads: 1676, responses: 0)
Hello, Todd. You may not remember me, but we met at the Jini Community meeting in Annapolis.

You're right, of course ... Tcl hasn't gotten worse; in fact, it has improved. And the internal type system you mention actually brings it closer to the Rexx that I used to love. It's more a system of very free, dynamic coercion to and from strings. But Tcl does seem to have lost a lot of the mindshare it once had.

But I always saw Tcl's principal virtues (not its only ones) as being in the "user-level extensibility" space. For most application development, there are just things I like a lot better now.

I had heard of Lua, but I wasn't aware that it was aimed at the extensible application space. I'll learn more.

Ehud Lamm - Re: The Tcl War  blueArrow
9/23/2002; 2:10:23 PM (reads: 1546, responses: 0)
Funny, I just mentioned Rexx on another thread.

There is a large overlap (quite rare on LtU) between two or three concurrent threads.

I never really used Tcl. Rexx I still like, but don't have many opportunities to use.

Cameron Laird - Re: The Tcl War  blueArrow
9/23/2002; 5:03:07 PM (reads: 1401, responses: 0)
Yeow! A lot of those comments sting.

There are plenty of things right about Tcl. It's a lightweight (no crippled, in the manner of Basic, say) language, which is surprisingly effective in industrial practice (see http://www.unixreview.com/documents/s=7458/uni1026831949806/ , for example). It's a good match for many practical problems.

The last few years of Tcl programming have been far more interesting academically than almost all the '90s. Much of that decade was spent in rather grubby pursuit of portability and other commercial necessities. The Tcl community has largely figured out those dimensions, and there's been a florescence of interesting idioms and applications.

I can apply "stagnation" and "excitement" to almost every language. Certainly Erlang, Java, Eiffel, Perl, ... each have their challenges and accomplishments. Reality is flat when lived in generality, without specific detail. Assessing Tcl in broad terms misses much of what's interesting about it.

Cameron Laird - Re: The Tcl War  blueArrow
9/23/2002; 5:03:33 PM (reads: 1390, responses: 0)
Yeow! A lot of those comments sting.

There are plenty of things right about Tcl. It's a lightweight (no crippled, in the manner of Basic, say) language, which is surprisingly effective in industrial practice (see http://www.unixreview.com/documents/s=7458/uni1026831949806/ , for example). It's a good match for many practical problems.

The last few years of Tcl programming have been far more interesting academically than almost all the '90s. Much of that decade was spent in rather grubby pursuit of portability and other commercial necessities. The Tcl community has largely figured out those dimensions, and there's been a florescence of interesting idioms and applications.

I can apply "stagnation" and "excitement" to almost every language. Certainly Erlang, Java, Eiffel, Perl, ... each have their challenges and accomplishments. Reality is flat when lived in generality, without specific detail. Assessing Tcl in broad terms misses much of what's interesting about it.

Todd Coram - Re: The Tcl War  blueArrow
9/23/2002; 7:52:09 PM (reads: 1391, responses: 0)
As an indication of Glenn's above mention of "user-level extensibility" here are just a few links into the wiki that show some Tcler's pre-occupations with language design:

http://mini.net/tcl/967 http://mini.net/tcl/2752 http://mini.net/tcl/3146 http://mini.net/tcl/2794 http://mini.net/tcl/3330 http://mini.net/tcl/755

and of course, in rememberance of Jini (Hey, Glenn!), here is my stab at a piece of it in Tcl: http://mini.net/tcl/3947 ;-)

jon fernquest - Re: The Tcl War  blueArrow
9/24/2002; 2:01:02 AM (reads: 1396, responses: 0)
The question I continually ask myself:

Why hasn't the functionality in Tk's canvas and text widgets been immitated by other GUI systems? (Or has it?)

Tagging passages of text or canvas objects makes it possible to apply formatting to or recognize events from the whole collection....with a concise syntactic specification... not heaps of application specific code.

Todd Coram - Re: The Tcl War  blueArrow
9/24/2002; 7:10:42 AM (reads: 1335, responses: 0)
Qt seems to have its equivalents to Tk's canvas and text widgets (QCanvas and QTextview), but I don't know if it supports anything quite like Tagging. (Although you could use multiple subclassing and rtti to emulate a fairly static form of tagging -- have all of your canvas objects inherit from 'tag' classes as well as canvas item classes).

My answer to "why" functionality like this isn't often emulated can be summed up in one acronym: OO. Tk is object based and thus cannot be extended through subclassing (but through aggregation), while many OO GUI widgets are extended (and specialized) through subclassing.

Interestingly enough, I find the Tk model much more adept at rapid prototyping. And tagging is just one reason why.