The Oscars celebrate Best Supporting Actor and Actress each year. But programming languages that play a supporting role generally get less credit in the world of software. Young up-and-coming developers look to master hot new languages for hot new platforms. Media coverage fades. Old languages, however useful, receive less and less attention.
Maybe we should reconsider this. Tcl is a programming language that has been around since the late 1980s. This last fall, we wrote a piece in voxxed.com about the incredible utility of Tcl called “7 Reasons the Future of Tcl is Bright.“
“The simplicity of the Tcl language makes it perfect for Internet of Things (IoT) and electronics design, including Electronic Design Automation (EDA), chip design, and Field-Programmable Gate Array (FPGA) development, and for configuring chips after manufacture. The same features that make Tcl dominant in EDA and FPGA also make it great for DevOps, potentially competing with Bash and Perl as the language of choice for configuration and management of developer operations systems.”
We hoped to point out some of the new areas where Tcl is doing well. We were trying to raise the profile of a very useful language.
Honestly, we weren’t sure if anyone would notice. We would have been happy if 200 people read the article. Amazingly, close to 2000 came. And we were caught completely off guard by the comments section. Tcl users engaged with the article, defending the language with unabashedly positive testimonials. Sure, and a little back and forth pugilism, like any good community.
Incidentally, it appears that Tcl pays really well. According to a recent Dice.com employment survey, open source dominates the highest paying skills. And Tcl’s high on the list. “Among ‘real’ programming languages, Tcl is said to be the top paying skill, coming in at No. 11 ahead of more likely candidates such as R, the new Big Data darling that was even edged out by the ancient Fortran.”
Below, we’ve summarized some of the main comments from our original article. We’ve done very little editing, in order to better convey the original meaning and enthusiasm and detailed responses to criticisms.
I’ve been programming for fifty years (1965-Today) and have used numerous languages (Fortran-66, Dec-10/20 Assembly, Pascal, C, COBOL, Forth, Perl, Python, Vax-Assembly, R, Fortran 90, and last but not least Tcl/Tk). I’m somewhat new to Tcl but have been using it for a couple of years. I rate it as the very finest language of them all! I wish I had it when I started programming. I’m sure of it’s usefulness and it’s ease of development. Thank you to the movers and shakers of Tcl/Tk, You have my greatest respect.
— Dan Burke October 22, 2015
My fav language. Will die for Tcl.
— Durgaram Arunachalam October 26, 2015
I use [Tcl] and have been using for data analysis and graphical presentation for many years now. Even for number crunching at a small scale :). It is one of my favourite programming languages. … [T]he Tcl community is surprisingly friendly and relaxed. They are quite willing to help you, if you show at least the intention to learn.
— Arjen Markus October 27, 2015
The most widely deployed database engine in the world (SQLite – https://www.sqlite.org/) is really a TCL extension that has escaped into the wild. There is no TCL code in SQLite nor do programs that use SQLite require TCL, but TCL is required to build the SQLite amalgamation (sqlite3.c) from canonical sources, and TCL is required for testing of SQLite (https://www.sqlite.org/testing.html). SQLite would not exist except for TCL.
Behind the scenes, TCL (and Tk) is used by the SQLite development team for many other activities. Most of the SQLite code was written using a customized text editor that is a pure Tk script. The SQLite developers keep in touch using Tcl/Tk-based chat software. The version control system used by SQLite (Fossil – https://www.fossil-scm.org/) does not directly link against Tcl, but it uses Tcl as part of its build process and commonly used command-line options (fossil diff –tk) make use of Tcl/Tk in a separate process.
— Richard Hipp October 21, 2015
I have used Tcl on and off since the mid-1990s. I have drifted in and out of using Tcl but in recent years do most of my work in Tcl. There is a simple reason for that. It works! At least for me. Tcl is a distinctly different type of programming language. It is a command language with minimal syntax and is highly dynamic in everything that it does. That Tcl has very minimal syntax means that you need not learn everything about the language before you can begin to solve problems. It is very approachable and simple problems yield simple solutions. That it is very dynamic means that it is capable of being the ultimate glue language between disparate parts that were not necessarily designed to work together. It is, for me, an invaluable tool in my box.
— Andrew Mangogna October 27, 2015
Tcl is the most enjoyable language to me. Thanks to all the developers!
— Ma Kai February 12, 2016
I have worked with C/C++, PHP, VB, Fortran, Pascal, Qt, BASIC, Assembly 808x and 68K languages and X-Windows, VC++/Qt GUI devkits. I came across Tcl/Tk around year 2006-07. I started with version 8.2. Believe me, it has solved almost all of my problems. Ranging from Serial port access to network socket based applications, all works and all works flawlessly. On the GUI front it is extremely simple. Your XWindows code of 1000s of lines shrinks to just few lines. Syntax wise it is simpler than Python.
Wherever one needs testing, repeated testing, tests in different conditions, I feel it has to be Tcl. Its simplicity turns even a non-productive programmer into a delivering engineer. I have not come across any sorts of bugs from version 8.2 onwards. In my client-server application design, server side is entirely Tcl/Tk and works smoothly, without restarting, no memory leakage etc. Extremely simple to learn makes even a new enterant, a useful asset in the project. I have even tried AndroWish (wish on Android). I ported (read: copied ) on Android device and it gets going. Cross platform support on Windows/Linux is smooth. My apps run on both Win/Lin environment without trouble.
There are things like OraTcl package which becomes very handly to interface with the database like Oracle. Packages like tcllib, tdom(for XML), http and tclhttpd are excellent handy tools for server side apps.
If someone is thinking of a continuously running server side apps, gluing Linux commands together, network support, database connectivity, consider development using Tcl/Tk.
— Amit Dave February 17, 2016
Rapid prototyping is an enormously important problem in UI/UX development. Being able to show a user potential UI solutions immediately vastly shortens development time. It’s great that you agree that Tcl/Tk solves that important problem very well!
But it’s important to realize that compared to many other UI solutions in dynamic languages, Tcl/Tk is no slouch. It is easily six times faster than wxPython, for example. That makes it practical on small-footprint systems where the only other option would be a complied language like C++ or C: /blog/2015/10/python-gui-programming-wxpython-vs-tkinter
It’s true that no one will ever accuse Tcl of taking Perl’s “Swiss Army Chainsaw” approach to computing, but that’s what makes it easy to learn and practical for people like engineers and scientists to use.
— Tom Radcliffe October 19, 2015
All languages have bugs, and much depends on severity of bugs. For instance, Java has hundreds of open bugs, Python has over 5000 (https://bugs.python.org/issue?%40columns=id%2Cactivity%2Ctitle%2Ccreator%2Cassignee%2Cstatus%2Ctype&%40sort=-activity&%40filter=status&%40action=searchid&ignore=file%3Acontent&%40search_text=&submit=search&status=-1%2C1%2C3), and even Node.JS has 600+ (https://github.com/nodejs/node-v0.x-archive/issue), and even Node.JS has 600+ (https://github.com/nodejs/node-v0.x-archive/issues). …[I]f you are looking for commercially supported, more seamless Tcl, you can always turn to ActiveState’s ActiveTcl, where bugs are resolved by a company rather than the open source crowd: /activetcl.
— Tom Radcliffe October 19, 2015
If you want no-fee support, one of the better venues is Stack Overflow. Be sure to use the ‘tcl’ tag if you do so, and remember that you need to think carefully to formulate your question in a way that can be answered, as per general Stack Overflow rules. Most questions get answered within a few hours (though longer at the weekend) and the ones that don’t are usually rather specialised, requiring knowledge of additional uncommon tools to answer properly. We’ll let you know (and apologise) if that is the case. More diffuse questions or requests for general assistance are better directed elsewhere, whether to commercial support (e.g., by ActiveState) or to comp.lang.tcl.
— Donal Fellows October 25, 2015
And I suppose you get your Windows support from Stack Overflow? Yes the Wiki sucks. That’s why there is an entire separate website: http://www.tcl.tk, many books, AND THE ENTIRE “n” section of the Unix help system devoted to Tcl.
— Sean Woods October 20, 2015
Feel free to drop me a Resume. We can’t find enough Tcl developers.
— Sean Woods October 20, 2015
I find a job with Tcl/Tk and my UNIX experience, I worked in the health domain with Cloverleaf (infor), Tcl/Tk is a great language, cisco router used Tcl too. Remember perl and python use tkinter (tk) to get the graphic interface stuff, so it‘s not so bad.
— Yves Guerin October 28, 2015
Tcl is a great tool for DevOps. I use it for scripting administration tasks and monitoring various parts of the infrastructure. But the developers are so eager to embrace new technologies in their projects that Tcl too often falls behind and doesn’t provide libraries to support these technologies. For example, Memcache and AMQP. While Memcache protocol is text-based and may be easily hacked using sockets, lack of support for AMQP sometimes makes me drop Tcl in favor of Python.
**– Dimitri Minaev October 26, 2015
To read the full article and comments, please see “7 Reasons the Future of Tcl is Bright.“ We think you’ll feel the energy and enthusiasm of Tcl developers jumping off the page.