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
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
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
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
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
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
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
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
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
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
9/23/2002; 7:52:09 PM (reads: 1391, responses: 0)
|
|
|
jon fernquest - Re: The Tcl War
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
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.
|
|
|
|