Tcl と Tk は,カルフォルニア大学(カルフォルニア州バークレイ)の John Ousterhout 博士によって開発されました. Tcl (現在の版は 7.3) は,``tool command language(ツール コマン ド言語)'' の略で,「ティクル」と発音します.Tcl のソースコードが公開さ れる,作者のホーム ftp サイトは ftp.cs.berkeley.edu です.Tcl は,言語 (インタプリタ)とライブラリから構成されます.第 1 に,Tcl は簡単なテキ スト処理言語で,テキストエディタやデバッガ,図的表示やシェルといった, 対話的なプログラムを実現するのに便利なコマンドを含んでいます.文法規則 は単純で,プログラムは容易ですので,Tcl ユーザは組み込みのコマンドプロ シージャを,より強力に拡張して書き直すことも可能です.第 2 に,Tcl は,アプリケーション内に組み込み可能なライブラリ パッケージでもあります.Tcl ライブラリは,Tcl 言語のパーザ,組み込みコ マンドを実装したルーチン,そして,組み込むアプリケーション固有の処理を 扱える様に Tcl を拡張するプロシージャから構成されます.アプリケーショ ンプログラムは Tcl コマンドを生成し,それを実行する為に Tcl パーザに渡 します.コマンドの生成は,入力ソースから文字列を読み込んだり,あるいは, メニュー項目やボタン,キーボード操作といった,アプリケーションのユーザ インタフェースの構成要素に割り振られたコマンド文字列から行えます.Tcl ライブラリがコマンドを受け取ると,それを構文解析し,組み込みコマンドを 直接実行します.アプリケーション上で実装されたコマンドに対しては,Tcl は,そのコマンドの実行の為,アプリケーションを呼び返します.多くの場合 (プロシージャやループコマンド,条件分岐などが,これに当たります),コマ ンドは,追加指定された文字列を実行する為に,再帰的に Tcl インタプリタ を呼び出します.
アプリケーションプログラムが,Tcl をそのコマンド言語として用い ることで,次の 3 つの利点を得ることができます.まず第1に,コマンド言語 の標準化です.ユーザは一度 Tcl を覚えてさえしまえば,他の Tcl ベースの アプリケーションも容易に扱えます.第 2 に,Tcl のプログラム容易性です. 全ての Tcl アプリケーションは,そのアプリケーション固有の低水準コマン ドを実装する必要があるでしょう.Tcl は,多くのユーティリティコマンドに 加えて,この様な複雑なコマンドプロシージャを組み立てる為の,汎用のプロ グラムインタフェースを提供します.Tcl を使うことによって,アプリケーショ ンは,これらの機能を再利用することが可能となります.第 3 に,Tk ツール キットのような,Tcl の拡張を用いることで,アプリケーション間で Tcl コ マンドを送受しあい,アプリケーション間通信を実現できることです.アプリ ケーション間で共通の Tcl 言語と言う枠組は,アプリケーション間通信を容 易にしてくれます.
[訳注: ここで言うコマンド言語とは,アプリケーションのカスタマイズなど を行う際,その指定をアプリケーションに伝える為に使う言語の様なイメージ の様です.emacs における,emacs-lisp の様なものでしょうか.]
Tk (現在の版は 3.6) は,プログラマに X11 ウィンドウシステムへ のインタフェースを提供する,Tcl の拡張です.Tk のソースが公表される, 作者のホーム ftp サイトは,ftp.cs.berkeley.edu です.多くのユーザは, ``wish'' というプログラムの形で Tk と出会っているでしょう.wish は, ユーザに Tcl アプリケーションを作成するプロトタイプ作成環境として使え る,簡単なウィンドウ環境シェルです.
拡張 Tcl (TclX) (現在の版は 7.3a) は,Karl Lehenbauer と Mark Diekhansによって開発された,Tcl の拡張コマンド集です.拡張 Tcl のソー スを入手できる,作者のホーム ftp サイトは,ftp.neosoft.com です.拡張 Tcl は,種々の便利なユーティリティに加え,システムプログラミングを可能 とする為の,Unix OS へのインタフェースを有しています.