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.
Tk 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.
|