Tcl/TK software

Tcl is an easy to learn and easy to use dynamic programming language. It’s syntax is a mixture of lisp-like functional and procedural constructs. The language is string based, everything in terms of data types appears as a string to the programmer. Internally, the low-level data types are represented as Tcl_Obj* objects, which holds native representations and other things.

Tcl expands to Tool command language, and according to this name, the command is the centric language construct. Every statement is build up of a command and it’s arguments. The first token is always a command, following tokens are arguments to that command. This applies to simple statements like:
set i 0
puts "hello world"

And it applies to more complex commands, like with Tk:
frame .f -relief groove -width 200 -height 200
button .f.b -text "hello" -command {puts hello}

The core of Tcl contains 18 commands, e.g. the control constructs – they are commands as well:
if condition code ?elseif condition code? ?else code?
for init condition statement code
foreach assignstmt list code
...

All commands are evaluated by an Interpreter, which takes the sequence of commands, compiles it into Tcl byte code if necessary. During the lifecycle of an interpreter, the behaviour of commands and variables can be changed and queried dynamically. This makes it a very good platform for introspective, interactive programming – and you really learn to estimate these kind of things if you develop applications. From a functional point of view, Tcl can do everything that other languages can do as well, basically through a lot of available extensions.

In the cycle of my life as software engineer I also got my hands dirty on some spare-time projects that I wrote in Tcl/Tk. Partly I enhanced existing language functionality and partly I wrote complete programs that are available for free. All the projects are hosted on sourceforge now. Currently I look at them very seldom, but if someone else likes to do some work on them, please feel free to send me an Email or check out the sources, etc. Short descriptions of the projects are here on this website:

Itcl and Itk
I added some enhancements to implement cget code for Itcl classes and made Itcl classes threads aware. Nobody seems to be interrested in this although I made patches available on the official Itcl sourceforge site – but it seems that nobody in the Tcl world is really interrested in Itcl anymore anyway. Well, I don’t care. I found and still find Itcl a very mature and useful OO extension for Tcl and would still take care of it if I had time – and still use it for new projects if I had the choice.
Tclkick
This is a fork of the official Tclkit from J.C.W. that is built with threads enabled and contains my enhanced Itcl version. Basically it is needed to run and deploy the Tcl programs I wrote, especially Tloona
Tloona
The need for a really good IDE brought me to the idea to start off Tloona, an integrated development environment for Tcl/Tk and Itcl.
Stocky
An 8 hours development effort to follow an virtual portfolio of stocks, regarding their courses. Really fast shot to have a proof of concept for canvasplot, a project for displaying two dimensional data with Tcl/Tk. More information on Stocky is here.

Leave a Reply