IDG: Why did you create Tcl? Aren't there enough computer languages already?
Ousterhout: I originally created Tcl as a command language for applications my graduate students and I were building at the University of California, Berkeley.
What I wanted was an interpreted language that could be embedded inside an application and melded with the features of the application to provide a powerful command-and-extension language.
Furthermore, I wanted to be able to use the same basic language in many different applications. There was no existing language that could serve this purpose, so I created Tcl.
What makes Tcl better than other scripting languages?
Tcl's greatest strength is its ability to work with devices or applications to control them, automate them and integrate them with other resources. This comes from two key features of the language: embeddability and extensibility.
I mentioned embeddability before. Extensibility means that Tcl provides [programming interfaces] you can use to create new features in the language by writing code in C, C++ or Java. People have written thousands of extensions for Tcl, such as Tk, and hundreds of these are freely available on the Internet.
Embeddability and extensibility make Tcl a wonderful platform for automating and integrating things. It's easy to put Tcl anywhere, [to] create extensions that allow Tcl to communicate with things you want to control, then write Tcl scripts to automate those things and integrate them with other things in your environment.
One of Tcl's distinctive features is the Tk tool kit, an extension that allows you to create graphical user interfaces [GUI] by writing Tcl scripts. People have found that they can create GUIs five to 10 times faster with Tcl/Tk than with other approaches.
Are there any notable drawbacks?
I'd like to see a lot more Tcl extensions, such as interfaces to [enterprise resource planning] systems. Tcl could also use better development tools. Until a few years ago, there were essentially no development tools for Tcl. At Scriptics, we've created a tool set called TclPro, which is a good start. But even more tools are needed in the future, such as performance analysis tools, test coverage and a graphical interface builder for Tk.
What kinds of practical applications is Tcl being used for?
Tcl is used for a huge variety of applications, but most of them have an integration flavour. On the Web, Tcl is used at high-end Web sites such as AOL's Digital City and Travelocity, where it creates dynamic Web pages by integrating content from a variety of sources.
One of my favourite applications is at NBC, where Tcl is at the heart of its new digital broadcast control system: it fetches programming schedules from corporate databases, mixes different regional feeds and controls video storage hardware, transmission channels and satellite uplinks and downlinks.
Who is Tcl for? Can it really be used by nonprogrammers?
Tcl is probably the easiest scripting language to learn.
Often what happens is that programming wizards create a Tcl-based system by writing extensions or embedding Tcl in an application. Then more casual programmers write Tcl scripts for that system.
For example, at AOL the casual programmers are Web content creators; at Cisco, the casual programmers are test engineers; and at Motorola, the casual programmers are factory automation experts.