Search the FAQ Archives

3 - A - B - C - D - E - F - G - H - I - J - K - L - M
N - O - P - Q - R - S - T - U - V - W - X - Y - Z - Internet FAQ Archives

comp.lang.tcl Frequently Asked Questions (March 07, 2005) (1/6)
Section - -II- What is Tcl? Tk? Extended Tcl? What is Tcl _not_?

( Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Single Page )
[ Usenet FAQs | Web FAQs | Documents | RFC Index | Business Photos and Profiles ]

Top Document: comp.lang.tcl Frequently Asked Questions (March 07, 2005) (1/6)
Previous Document: -I- Origin of comp.lang.tcl, the FAQ information, and to whom do I contact for more information about the FAQ?
Next Document: -III- Do these packages run on my machine?
See reader questions & answers on this topic! - Help others by sharing your knowledge
o Highlights of Tcl based languages

	Tcl and Tk originated with Dr. John Ousterhout (OH'-stir-howt)
while teaching at the University of California, Berkeley, California.
A quip about the pronunciation of Dr. O's last name from
<URL: news:comp.lang.tcl > pundit <URL: > Jay Sekora:

> `It's pronounced Oh-stir-howt
>     without a doubt!
>  Not Oh-stir-hoot;
>     he's not a brute.'

	A Brief History of Tcl-ing

	See <URL: > for
more details!

	Dr. Ousterhout got the idea for Tcl while on sabbatical leave
at DEC's Western Research Laboratory in the fall of 1987.  He started
actually implementing it when he got back to Berkeley in the spring of
1988; by summer of that year it was in use in some internal
applications, but there was no Tk.  The first external releases of Tcl
were in 1989.  Tk implemention began in 1989, and the first release of
Tk was in 1991.

	John joined Sun in their research group in 1994.
During April/May, 1997, the Sun research group responsible for
Tcl development were spun off into a Sun business group called
SunScript.  However, things changed again soon afterwards.
<URL: > is
a copy of the message posted by John Ousterhout regarding the situation
as it developed during the Summer of 1997.

	During August of 1997, a Tcl Consortium was formed.  In
December of 1999, the Tcl Consortium was disbanded due to lack of

	During February, 1998, John Ousterhout left Sun to create
Scriptics, a company dedicated to scripting tools, applications, and
services.  He stated at the time that core Tcl and Tk would remain free,
with his team continuing work right now on Tcl/Tk.

	During May, 2000, Scriptics changed their name to Ajuba (a-'joo-ba)
Solutions.  The intent was to de-emphasis the scripting nature the
company previous had and to emphasize the business to business nature
towards which the company has moved.

	During June, 2000, John Ousterhout announced the formation of a
Tcl Core Team - a group of 14 key Tcl developers who are to spearhead
the coordination of current and future Tcl maintenance and enhancements.
See <URL: > for details.
This team is NOT intended to be the ones doing all the coding and debugging
of Tcl; instead, the community is urged to take part in the process.  These
fourteen will be the 'project leaders', contributing code when they can,
ideas and direction, enthusiasm, and experienced help where needed.
John Ousterhout continues as a member of the team, providing guidance and
final arbitration if necessary.

	During October, 2000, Ajuba Solutions announced the intent to merge
with Interwoven.  The association betweem Tcl and a company run by its
creator came to an end as John moves on to Interwoven.  Interwoven did
open up the source for TclPro and made the product free, as well as for
a time provided resources to keep the Tcl Developer's Xchange going.
Then, during late February, 2001, ActiveState announced the hiring of
Jeff Hobbs and Andreas Kupries, and the intention to make ActiveTcl another
of their stable of supported scripting languages.

	On April 23, 1998 the Association for Computing Machinery (ACM)
<URL: > awarded the 1997 Software System Award to
John Ousterhout and Scriptics.	This is awarded to an institution
or individual(s) recognized for developing a software system that
has had a lasting influence, reflected in contributions to concepts,
in commercial acceptance, or both. The Software System Award carries
a prize of $10,000. Financial support for the Software System Award
is provided by IBM.  See <URL: >
for the others who have won this award.

	In September of 1998, Scriptics announced the availability of
TclPro, a suite of developer tools and the Tcl Consortium announced
Tcl-Blast! - a CD-ROM containing Tcl and extension source code as
well as binaries for a number of platforms.  With the demise of the
Tcl Consortium and Ajuba Solutions I don't know where one would go to find
the (Tcl 8.0.5 based) Tcl-Blast! CD-ROM.

	Another bit of Tcl trivia has to do with sites where you find
Tcl and user contributed software.  In the beginning, John created the
heavens and the earth... no, that's not right.  In the beginning, the
Tcl and later the Tk source were available on an ftp site at Berkeley.
As user contributed software began to appear, some kind people at Purdue
graciously volunteered some disk space.  Later, when John left Berkeley
for Sun, the core Tcl and Tk software (source code, etc.) moved from
Berkeley to Sun.  Then, when Purdue no longer had resources to support the
archive, it moved to Alcatel.  Eventually, that archive was moved to Neosoft's
<URL: > archive.  Now that Neosoft has retired,
the archive can be found at <URL: >.

	But what _is_ Tcl?

	Tcl (current release version 8.4.7) stands for ``tool command
language'' and is pronounced ``tickle.'' The home download site for
the Tcl source code is <URL: >.
For brave souls, web access to the individual modules is provided via
<URL: > and its CVS respository,
where the latest and greatest patches and improvements can be found.
Tcl is actually two things: a language and a library.  First, Tcl is a
simple textual language, intended primarily for issuing commands to
interactive programs such as text editors, debuggers, illustrators, and
shells.  It has a simple syntax and is also programmable, so Tcl users
can write command procedures to provide more powerful commands than
those in the built-in set.

	Second, Tcl is a library package that can be embedded in
application programs.  The Tcl library consists of a parser for the Tcl
language, routines to implement the Tcl built-in commands, and
procedures that allow each application to extend Tcl with additional
commands specific to that application.  The application program
generates Tcl commands and passes them to the Tcl parser for
execution.  Commands may be generated by reading characters from an
input source, or by associating command strings with elements of the
application's user interface, such as menu entries, buttons, or
keystrokes.  When the Tcl library receives commands it parses them into
component fields and executes built-in commands directly.  For commands
implemented by the application, Tcl calls back to the application to
execute the commands.  In many cases commands will invoke recursive
invocations of the Tcl interpreter by passing in additional strings to
execute (procedures, looping commands, and conditional commands all
work in this way).

	An application program gains several advantages by using Tcl for
its command language.  First, Tcl provides a standard syntax: once
users know Tcl, they will be able to issue commands easily to any
Tcl-based application.  Second, Tcl provides programmability.  All a
Tcl application needs to do is to implement a few application-specific
low-level commands.  Tcl provides many utility commands plus a general
programming interface for building up complex command procedures.  By
using Tcl, applications need not re-implement these features.  Third,
extensions to Tcl, such as the Tk toolkit, provide mechanisms for
communicating between applications by sending Tcl commands back and
forth.  The common Tcl language framework makes it easier for
applications to communicate with one another.

	Note that Tcl was designed with the philosophy that one should
actually use two or more languages when designing large software
systems.  One for manipulating complex internal data structures, or
where performance is key, and another, such as Tcl, for writing
smallish scripts that tie together the other pieces, providing hooks for
the user to extend.  For the Tcl script writer, ease of learning, ease of
programming and ease of gluing are more important than performance or
facilities for complex data structures and algorithms.  Tcl was
designed to make it easy to drop into a lower language when you come
across tasks that make more sense at a lower level.  In this way,
the basic core functionality can remain small and one need only bring
along pieces that one particular wants or needs.

	One answer to "What is Tcl?" can be found at
<URL: >.  For a white
paper written by Dr. Ousterhout discussing scripting languages, and Tcl
in particular, see
<URL: >.
For a 1996 article in SunWorld on the state of Tcl, see
<URL: >.  Other SunWorld articles have

	Many times users post to <URL: news:comp.lang.tcl > asking about
the changes from one release of Tcl to another.  One resource of course
comes with each source release of Tcl and Tk.  A file named "changes"
lists a change log of important changes.  However, it has been pointed out
that this file is not all inclusive.  Another commonly referenced resource is
<URL: >, which has various release notes available
online.  In terms of books covering the topic, the book by Brent Welch
(see below) covers the topic over several chapters.

	Tk (current release version 8.4.7) is an extension to Tcl which
provides the programmer with an interface to the X11 windowing system.
Note that Tk has been successfully compiled under X11 R4, X11 R5, X11
R6, as well as Sun's NeWS/X11 environments.  The home download site for
this Tk release is <URL: >.

	Many users will encounter Tcl and Tk via the ``wish'' command.  Wish
is a simple windowing shell which permits the user to write Tcl/Tk
applications in a prototyping environment.

	Note that one frequently asked question is whether Tcl/Tk can
handle Japanese, Chinese, Korean, .... language fonts.  As of 8.1, Tcl/Tk
supports UniCode.  This makes it easier to provide various language
support, assuming that the appropriate fonts are available and appropriate
care is taken.

	John also has asked me to mention that information about what is
new or changed in each release is now available on the WWW.  John writes:

> there are now pages containing release notes.  The best thing is just to
> refer people to my home page, which is:

>     <URL: >
>     <URL: >

> You might put a notice about this in the FAQ to help people who see
> the FAQ after we reorganize.

	A Tcl/Tk logo and a "Tcl-Powered" logo are now available from John.
GIF images in several different sizes are available in the Tk source
code distribution's ../library/images/ subdirectory.  See the README
file in the library/images subdirectory for more details.

	From time to time, there is concern about the future of Tcl.
John has given me permission to include this quote:

>From: John Ousterhout < >
>Date: Thu, 14 Jan 1999 14:00:40 -0800

>My move from Sun to Scriptics will not change the open source nature of
>Tcl and Tk.  We will continue to develop new releases of both Tcl and
>Tk at Scriptics, and we'll release them freely in source form as has
>always been the case.  The license terms will stay the same.  You'll be
>able to use Tcl/Tk for anything you wish, including making changes,
>selling it, and redistributing it in whole or in part.

	Extended Tcl (tclX) (current release version 8.4.0) is an extended set
of commands for Tcl developed by
Karl Lehenbauer <URL: >
and Mark Diekhans.
The authors' home ftp site for Extended Tcl is
<URL: >.  Extended Tcl
is oriented towards system programming tasks, with many additional
interfaces to the Unix operating system as well as other useful utilities.

	Expect (current release version 5.38) was perhaps the first extension
to Tcl written.  Its purpose is to ease interaction with applications which
normally interact directly with users at a terminal (such as ftp,
telnet, etc.).  The WWW site for Expect is <URL: >.
Expect is oriented towards automating command seuqences commonly
typed.  One can use Expect with Tk to create graphical interfaces to
these commands as well.  Expect works with Tcl up through Tcl 8.x.

	Many other useful (and in some cases essential) extensions
also exist.  (See "part5") for details.

o General information about Tcl and Tk by <URL: >
	(Glenn Vanderburg)

	Tcl (Tool command language) is a freely distributable simple,
interpreted language designed to be used as a common extension and
customization language for applications.  It was designed and
implemented by Dr. John Ousterhout in the hope that application
designers could spend more of their time on applications and less on
scripting languages, and in the hope that users could spend less time
learning new scripting languages for each new application.  Many useful
applications, some of them sold commercially, use Tcl as their
scripting language.

	Tcl is clean and regular, and relatively easy for non-hackers to
learn.  It is command-oriented, and commands added by applications and
users exist on an equal footing with the built-in Tcl commands.  Tcl
has both simple variables and associative arrays (tables), and all
values (including procedure bodies) are represented as strings.
Simple customization scripts (such as preference initialization
scripts) usually look much like novice users expect them to: a series
of simple commands which set options.

	Tcl is implemented as a C library, which can be embedded in an
application.  The application can add its own commands to the
interpreter (using a clean C interface).  It is distributed under a
license which allows use for any purpose with no royalties.

	The Tk toolkit is a Tcl extension (a group of new Tcl commands) which
provides a Tcl interface to the X Window System.  Tk is one of the
easiest ways to build a graphical interface to an application, and due
to the interpreted nature of Tcl, Tk-based interfaces tend to be much
more customizable and dynamic than those built with one of the C- or
C++-based toolkits.  Tk implements the Motif look and feel.  A number
of interesting X applications are implemented entirely in Tk, with no
new application-specific commands at all.  Tk also provides a
mechanism by which one application can send Tcl scripts to other
Tk-based applications running on the same display, for easy
cooperation between tools.

	Tcl and Tk are mature, and quite stable, but they are not static:
Dr. Ousterhout [...] moved from Berkeley to Sun Microsystems, where his
group [pursued] such projects as a commercial-quality Tk
graphical interface designer, an on-the-fly Tcl compiler, and
Macintosh and Microsoft Windows ports of Tk.  John has stated that the
copyright status and licensing provisions of Tcl and Tk will not change.


	As to what Tcl is not - in the context of the discussion in
<URL: news:comp.lang.tcl >, it is not related directly to the
Think C Library (TCL) available on the Mac.  Confusingly enough, the language
concerned with here _is_ available on the Mac, and someone in fact may have
used Think C to compile it there.  Just one of those universal 'coincidences'
that set the stage for Vogon interstellar highway construction crews.
Also, Oracle has a product called Tk2Motif which has nothing to do with
Tcl or Tk as we are referring to it.  Another 'TCL' that is sometimes
encountered has to do with the Pick operating system - again, that
is different than the language being discussed.

	What are some of the most common complaints about Tcl? Well of
course the primary complaint is that because it is interpreted and
because the data is primarily treated as strings, that programs written
in Tcl are slow.  Tcl 8.x attempts to address this by doing some degree
of compilation as well as permitted additional variable types.  There
are also complaints frequently about the fact that several of Tcl's
behaviors are not intuitive - comments are commands rather than
traditional comments, numbers beginning with 0 are octal, proper use of
quoting mechanisms, etc.  These are covered in the various FAQs.

	A common question is whether Tcl/Tk/etc. is Year 2000 (Y2K)
compliant.  The 'official' statement from the creator of the Tcl and Tk
core can be found at <URL: >.  A
statement from one of the <URL: news:comp.lang.tcl > readers who has done
his own analysis can be found at
<URL: >.  Information
about Y2k compliance of various Tcl based programs or extensions should
come from their creators - if the web page for the program or extension
doesn't address the issue, email the creator and ask if they would
please add such a statement.

See The Tcl Wear <URL: > web page
for images of some of the Tcl related merchandise that has been seen during
the past 5 years.

User Contributions:

Comment about this article, ask questions, or add new information about this topic: