Tcl/Tk 8.5.0 Released
dkf writes "Tcl/Tk 8.5 has been released for all major platforms after 5 years of development. There are many new goodies in it, including significant speedups through an advanced bytecode engine, stronger localization of applications, integrated arbitrary-precision arithmetic, a whole bunch of brand new skinnable widgets, anti-aliased text support on all platforms, and a new code-module management system to make maintenance of installations a snap. More in-depth information about the features of both this release and Tcl/Tk in general is available at the official Tcl/Tk website. Mark Roseman's blog has a first-look review."
Yeah, but coders who prefer other languages might be tk'ed off.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
From what I've seen, the internals of the Tcl environment (the interpreter, libraries and so on) are pretty solid and nicely done. Unfortunately the Tcl language itself is peculiar, dated and just not very good. I wish the Tcl people would consider a thorough backward-incompatible revamp of the language into something a bit less off-putting.
Tkinter is the de-facto python windowing kit.
I think Gtk is becoming more and more the "de-facto python windowing kit", in particular as Gtk's cross platform support is improving.
I am only interested in one thing:
Will the Tk widgets now integrate with the rest of the desktop, in terms of using the same theme settings that other programs use?
I like how Tk has been used as a GUI toolkit by many programming lanugages, and I think that says something good about its design and implementation, but the ugly, unthemeable, and out-of-place looking widgets have always been a thorn in my eye.
Especially because it _did_ work sort of right on proprietary OSes as far as I know.
Please correct me if I got my facts wrong.
Why Java won that market I can't possibly fathom.
It didn't. Flash did.
Java might have won if the original JDK hadn't been so primitive and difficult to work with. Even long after Swing was released, browsers were still shipping with ancient 1.1 JVMs, and installing newer JVMs wasn't an automatic (or even simple) process for some browsers and platforms.
Still, though, Flash probably would have won out in the end. Swing is designed for desktop applications: standard menubars, dialogs, etc. -- themeable, maybe, but BORING to a web designer's eyes. With Flash, cool weird unique user interfaces are the whole point.
The engineer and UI-standards-advocate in me appreciates Swing. The artist wants to learn Flash.
I'm a bloodsucking fiend! Look at my outfit!
"Really? For what purpose?"
Bragging.
Tcl is too stable for many who think the bleeding edge is cool, and too different for those who think C is the pinnacle of language design - so it's left to a large number of people who just get on with using it because it works. Of course, if you're not interested in cross-platform GUIs, event driven I/O, Internationalization, extensibility, portability, rapid prototyping, easy interfacing to C and other languages and automated test environments then perhaps Tcl isn't for you.
There's some great new stuff for Tcl in this release. Built-in dict type http://wiki.tcl.tk/dict, Functional Application http://wiki.tcl.tk/apply, built-in arbitrary precision integers http://wiki.tcl.tk/10942, at last a sanctioned OO framework http://wiki.tcl.tk/TclOO.
New Tk looks beautiful.
Tcl runs webservers, robotic manufacturing equipment, and even monitors spacecraft. Odds are that you have probably used a Tcl/Tk application and never even knew it. (If you've watched NBC since 1998, you've seen the results of a Tcl application on screen.)
I'm an unabashed Tcl fanboy, and this release is great.
"There are four boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order." Ed Howdershelt
Here are some detailed, relevant links:
Cross platform: http://wiki.tcl.tk/1110
Events: http://wiki.tcl.tk/3448
Internationalization: http://wiki.tcl.tk/6789
Easy C interface: http://wiki.tcl.tk/2523
Oh, did I mention a thriving wiki? http://wiki.tcl.tk/
"There are four boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order." Ed Howdershelt
The policy is that major version is bumped only when significant backward incompatibility is expected. New features don't do it unless they break old code.
TCL is still used in some surprising places. A good example is networking equipment, such as Cisco devices, F5 load balancers, and so on. Many of these have TCL capabilities for one reason or another. A good example for the Cisco case would be their load balancing devices. You can create custom monitoring scripts in TCL and import them into the device.
My UID is the product of 2 primes.
Apparently Tcl is pronounced 'Tickle'. I learned the hard way after someone had pointed out that I named a file test.tcl.
> at last a sanctioned OO framework http://wiki.tcl.tk/TclOO.
Fantastic indeed, and the syntax looks nice. But you still have to manually destroy objects. Basically, writing Tcl like any other high level language in existence means having crippling memory leaks. So you learn to avoid objects like the bolted-on kludge that they still are. Even perl at least got the memory management part right.
Python tkinter ought to look nice, but Tcl continues to be a non-starter.
Done with slashdot, done with nerds, getting a life.
Not so.
Tcl's strongest redeeming features are its consistency and its sensibility. Tcl very strongly has a principle of least surprise, thanks to these. That alone makes programming in Tcl a joy compared with many, many other things. You'll spend a lot less time wondering how your code will work on a foreign platform, which flags a given widget expects, and so on.
Tcl of 2007 is also not Ousterhout's Tcl of 1987. A lot has happened in the last 20 years, including totally pervasive unicode support (the [msgcat] library makes internationalization such a breeze, there's absolutely no reason not to make all your programs localizable from the start), some very healthy namespace functionality, an excellent networking library, and of course the relatively recent Tile toolkit.
There are also new projects being developed with Tcl all the time.
Far from being an outdated or dying language, Tcl today is just a well-kept secret, sitting out in plain sight.
I think there may be one other speech analysis package that did spectrograms and used TCL/TK at one point, but I don't think it has an active distribution the way WaveSurfer does.
What the WaveSurfer people did is that about half their code base is C-language for implementing speech-specific TK widgets, such as a spectrogram Canvas elaboration of the TK Canvas widget. Their C-language routines call down to low-level X to draw things, and if you build on Windows you need some implementation of X. The WaveSurfer Windows distribution, however, is a single .exe file that has WaveSurfer and whatever support libraries all rolled in, so there is a very simply install.
Their TCL part, however, is a big ball of goo, or at least to someone who doesn't know TCL. Instead of pushing a lot of the functionality into the speech toolkit widgits, they implement a lot of stuff in the TCL layer -- it is not simply a thin scripting layer over a largely C code base. You find that out when you try to customize your own speech app using their speech widgets -- there is tons of functionality that you need to reproduce in your own app as the widgets are pretty bare bones. Not that there is anything wrong with it, but using the WaveSurfer app and hearing about rolling-your-own speech app with their toolkit, you kind of get the wrong impression about how much is in the widgets. I found this out when playing with Python scripting to display their widgets.
The one thing that appeals to me about TK is the Canvas widget, which was apparently inspired by someone's Scheme graphics or some such thing. No worrying about paint messages and invalid regions -- you just give the Canvas a scene graph of line, text, even 3-color bitmap or even overlaying buttons, and the Canvas takes care of all of that. I would like to see such a high-function widget in other environements.
I was never bothered by the non-Windows look to WaveSurfer (OK, the lame Files Open dialog of GTK under Windows bothers me, but not most stuff as Windows is not that uniform a GUI experience to begin with).
Whenever you have one of these overlapping-window GUI front-ends to an OS, developing apps for it is a hard slog, whether it is Windows, GTK, Motif, raw X, whatever. Just like MS came out with their application programmer-friendly Visual Basic as the go-to way of slapping a GUI together, Sun was at one time promoting TCL/TK as the way of slapping a GUI front end on your C program.
In commercial apps, your users worry if your widgets are pretty and Mac people are in a huff about ported software or Java not conforming to UI standard, but for internal apps that just have to get a job done, you often don't care. The projected associated with a high-voltage custom x-ray machine had been a Sun shop since the days Sun 2's came out, and the current app running the x-ray machine is TCL/TK running on a SPARC.
That app makes good use of the Canvas widget to display gray-scale x-ray images and allow you to drag cursors and place measurement markers over those images; apart from that the app is a bunch of buttons to start and stop image collection and motion tracking modes of the x-ray system. I wouldn't have taken note that it was TCL/TK it it were not pointed out, but now that I know, I can see the characteristic widget styles and layouts along with the Canvas that does the x-ray images.
Given that this was all implemented prior to the release of Java, TCL/TK is what you had, and TCL/TK is what you did unless you wanted to take much more time doing the GUI, and our app has aged well (although try hiring someone to change the TCL code), so yes, it is a good question why Sun in effect abandoned that and jumped on the Java bandwagon of their making.
Just some side information. I read Coccinella will already switch to Tcl/Tk 8.5 in a few months (12 March). See comment at the end of the announcement of the latest release: http://coccinella.im/coccinella-0.96.4 Oh yes, and Coccinella is already using an older version of Tile for Tcl/Tk 8.4. This is some sexy theme proof that Tcl/Tk shouldn't be ugly: http://coccinella.im/stuff/sexy.png