"Perl is really old news, and for the average DA/ASIC/FPGA/SoC engineer, Perl is probably the worst scripting language they could try to learn, for as many reasons as Tcl/Tk is the right first language."
- Rich Auletta ViaWest Boulder, CO"I would still take a hard core Verilog or VHDL coder with Tcl skills over a Perl guy any day of the week."
- Randy Findley Layer N NetworksAll from http://www.deepchip.com/items/0401-09.html, an October 17, 2002 discussion archive.ee
"I started using Tcl back around 1994. I was looking for a quick way to prototype ideas, with the intent that, once the logic was proven feasible, the code would then be redone for production use in a "real" language like C or C++. After a while, it started to appear that the Tcl-based prototypes worked so well that fewer and fewer of our projects required recoding. Several years ago it became clear that the Tcl platform had evolved to the point where it was no longer necessary to recode our prototypes at all. Since then, I've been using Tcl exclusively for virtually all of my development projects, and haven't looked back."
- Mike Doyle Eolas Technologies Inc.
Why have you chosen Tcl?Because I like "programmable programming languages" like Tcl and Lisp a lot. The programmer is free to reinvent the language, write new control structures, and so on. Tcl is very powerful, but for some reason few programmers fully understand it, so it's often regarded as a toy language. I use Tcl for everything not involving low-level things or speed. For the rest, I tend to use C.What particular limit or feature does the language itself bring?One of the best features that Tcl gives you is that you can specialize it so much to have a domain-specific language designed to play with packets. The limitation of all this flexibility is speed. For example, in theory you can use hping3 to write a firewalling engine, but in reality you can't go beyond a "prototype" because a firewall needs to be fast. [1]
- Salvatore SanfilippoFrom the computer science perspective TCL looks like a more interesting development than Perl as it is the first open sourced embeddable language. IMHO Perl is a kind of mainframe (anti-Unix) style language that very much reminds me PL/1 ("all things for all people" kind of approach; there is always several ways to accomplish anything, etc. -- bonanza for consultants and book writers ;-), while TCL is a more Unix-style language. It does well one thing well: it's a really decent command language for various tools including OFMs.It's very sad that TCL never become prominent neither in Solaris nor in Linux environment. BTW that definitely attests Linux as a neo-conservative movement as TCL has tremendous potential to lift Unix-style OS to a different level by integrating applications on a new level as well as providing a common internal language to a million of obscure Unix utilities some of which outlived their usefulness. One needs to understand that despite their non-othogonality and obscurity (I would like to see a person who really understands all the differences between find and grep in interpreting regular expressions ;-) the current set of Unix utilities still represents quite an innovative, semantically rich set of commands for the operating system. [2]
- Dr Nikolai Bezroukov
On comp.lang.tcl [3], Robert said, "... I still use Perl for my web stuff but I am slowly moving all my admin tasks to little Tcl utilities and I had a lot of fun doing it. :-) Just a rave!"
The EDA training company Doulos says this [4]:"Tcl is a popular and widely used cross-platform script programming language that achieves significant productivity gains when used by skilled engineers. Its combination of text processing, file manipulation and system control features make it ideal for this purpose. Many industry-leading EDA tools use it together with the Tk graphics toolkit to provide a flexible and platform-independent graphical user interface. Included are: ModelSim, Leonardo Spectrum, Synopsys Design & FPGA Compiler, Synplify Pro and Altera Quartus."
In July 2004 Dr. Danny Rittman writes: [5]"Up to few years ago Perl was the ruler in the EDA world as the main scripting tool. In the recent few years Tcl (Tool Command Language) has become the rising star due to an almost zero learning curve. Compared to Perl that requires memorizing many syntax and idioms Tcl is based on maybe a dozen basic commands to get you up and running. Major EDA vendors offer access to their tool's internal functions via Tcl scripting and it looks like it became a standard.Scripting languages like Tcl and Perl were created for rapid control and systems integration. In the recent years Tcl has become an integral part of design houses design flows as Perl remain a handy tool for other useful tasks. EDA vendors are standardizing on platform-independent Tcl scripts to automate repetitive design tasks and extend the basic features of their tools. Since most of design flows use applications from multiple vendors, a designer now only needs to learn Tcl in order to control multiple tools. Furthermore, Tcl's power, versatility and ease of use is fast being adopted for a wider range of methodology tasks such as data processing; file management and tool interface solutions. No Doubt, the usage of scripting languages created a whole world of possibilities for the EDA world and therefore became an integral part of today's design flows."
The one real argument for Tcl/Tk [6] (Fixed broken link - Lauri Ojansivu)What happens when you want to work on a software project with the following requirements:
- 1. Same source code produces a GUI in both Win32 and Linux.
- 2. Must not require installation on the target machine.
- 3. Must be distributable as a single executable.
- 4. Must be able to run without write access to anything if necessary.
- 5. Language and API are free of charge or preferably, free software.
CMcC I really dig the tcl encomium in Mars Rover Project
WJP I came across an interesting positive mention of Tcl in GNU Autoconf, Automake, and Libtool. In the chapter on Unix/Windows Portability there is a brief subsection on scripting languages at p. 172. It talks exclusively about Tcl/Tk except for the last sentence: "Other portable scripting languages are Perl, Python, and Guile.". I think its interesting to see Tcl/Tk front and center in a book with a strong Unix and indeed specifically GNU orientation.
IL From the Expect faq at nist http://expect.nist.gov/FAQ.html,
>I have nothing against tcl as such. >The reluctance to learn it comes mainly from the feeling that half my >life seems to be spent learning new languages that differ very little >from existing ones, and differ in annoying little details at that. >To add to the misery, every implementation has its own >idiosyncracies...:-( Ironically, Tcl was written specifically to halt this very problem. The author recognized that every utility seems to have its own idiosyncratic .rc file or programming language. Tcl was designed as a general-purpose language that could be included with any utility, to avoid having everyone hack up their own new language. In this context, your statements do Tcl a great disservice.Amen, brother, amen. :) In addition, while there isn't a specific quote for TCL I can think of the swig author uses TCL as the introduction to the functionality. The entire article paints TCL in a favorable light.
escargo 25 Oct 2005 - I found this looking for information on software testability: Hey Vendors, Give Us Real Scripting Languages [7]One detail from near the bottom:Comment: It's nice to see someone else that speaks out against all these proprietary (non-portable) script languages (a.k.a. "vendorscript"). About 3 years ago we switch out internal (home grown) test automation tool from our script interpreter to TCL (and have never looked back). TCL has many nice features with the main ones being readability of the script and its support libraries. Its user community offers great support and it is one of the easiest languages to learn (especially if you skip the GUI "Tk" stuff). I just can say enough about TCL verses the other script languages (including VBA, ECMA, PERL). With its BSD style software licenses ... ~ Michael Jacobson (11/21/01)Author's Response: I've used TCL and am rather fond of it. You're right: any vendor can bundle it with their tool. I don't know why more don't. ~ Bret Pettichord (11/28/01)
Lars H: On 2006-03-21, the Software Map on sourceforge.net [8] reports
Hardware (1522) Most downloaded: Tcl Most active: TclNow, why Tcl should be in this category is not obvious, but it's cool to be #1.
In an ACM interview [9], JG (James Gosling - the guy responsible for Java Virtual Machine) says:EA Let me ask about a language that may be a little closer to home: Tcl/Tk?JG That one is pretty nice. It's the child of its environment. It's really very much scripting for C where the data type is all strings, and it works really nicely for that.
iRules Concepts: Tcl, The How and Why:"F5 uses Tcl as the interpreter for iRules. Many people often ask why that is. This questions is usually followed up by an immediate, "Why not Perl?" or "Why not Java" or "Why not <fill in my preferred language of choice>?". I understand the question, and frankly I'm a Perl guy from way back myself, so when I first landed at F5 and started devouring all things iRules, I was curious about the same thing. Since then I've discussed this topic with some of F5's best, in my opinion, and have come to understand that there are many solid reasons for choosing the runtime that we use.When asked "Why Tcl?" my standard response centers around varying degrees of discussing:
- Speed
- Embeddability
- Usability
F5 DevCentral: "iRules Concepts: Tcl, The How and Why" [10]The ensuing discussion on Reddit was also mostly positive - CGM.
SEH 20120412 -- Extensive performance test (speed, memory) on string handling, comparing Java, C, Perl, Tcl and several others: [11]tl;dr -- Tcl speed middle of the pack, memory usage one of the lowest.I noticed that the Tcl test code was not put into a proc, hence not bytecode-compiled.
Tcl was invented around 1988 as a distillation of the fundamentals of programming language which had been learnt over the previous decade. Tcl represents perhaps the most concise distillation of what a programming language needs to be, and as such is never likely to be improved on. It is so simple its rules can be written on the back of a postcard with no fineprint. [12]
"it is dead easy to prove that something is overengineered. You may not know it, with such a background, but complexity is a well defined, objective, measurable thing. If you're curious, look up what an 'Algorithmic information theory' is. An existence of a formally simpler model with a more flexible functionality is a very clear evidence that the other, more complex system is overengineered. Just compare something like Tcl/Tk with your awful web stack." [13]"When you have something to compare with, something as simple and beautiful as Tk, all the complexity of the modern web looks like a steaming pile of stupidity." [14]
"...I've come to a realization that a lot of programming problems can be solved very easily using meta-programming or basically the code that writes code. Some of the potential applications include but are not limited to: extending the language to break away from its limitations, eliminating boiler-plate, creating domain-specific languages."So why Tcl and not Lisp? A number of good reasons. Tcl was meant to be embedded whilst there is a very limited amount of Lisp implementations that were meant for that exact purpose... Tcl is arguably more powerful than newLisp: everything can be mutated and you're not stuck inside dynamic scoping - you have both: the dynamic and the lexical one! I also like the fact that if need be the code can be simply manipulated as text whereas in a Lisp you're committed to lists. It provides yet another degree of power unheard of in Lisp land. Tcl is very easy to build and is about as fast as the vanilla Lua interpreter. Unlike Lua Tcl is a minimal language following the extend it as you go philosophy of Lisp and that's exactly what I want in my programming languages." --Alisa Dolinsky
"Once you accept that everything is a string, you’ll enter a zen-like trance and every atom of your being will vibrate in harmony with Tcl’s interpreter." --Dave Ray
"I develop speech rec\tts applications, commercially. Went to AVIOS looking hoping for a quick meeting with one of Microsofts Speech\Language product managers in order to demo the product and determine if I had may head screwed on straight with regard to the best use of available technologies.He said ten minutes at most, had two other presentations to make. Forty-five minutes later, after interacting with the bot\simulator, he stepped back and said 'I know what language you used - Tcl'.Blew me away. 'How could you possibly know?' His response 'Cause it would be nearly impossible to do this with any language that Microsoft makes available'" [15]