Tclを使いたい理由

高木です。おはようございます。

先日から私が使いたいプログラミング言語4つについて、ひとつずつ詳細を書いてきました。
今回はその4つ目Tclについてです。
4つ目ですからこれで最後です。

Tclというと、TkとセットでTcl/Tkとして語られることが多いと思います。
実際、Tkは優れたGUIツールキットですし、私もよく使います。
ただ、プログラミング言語としてはあくまでもTclですし、今回はTkのことはひとまず横に置いて、Tclについて書くことにします。

Tclの素晴らしいところは、Cのライブラリだということです。
CやC++から普通にライブラリとして使うことができます。
このことにより、アプリケーションに簡単にコマンド言語を組み込むことができます。

ユーザー向けの組み込み言語として使う場合はもちろん、Interpreterパターンを実装する際にも助けになります。
細かい制御を行いたいときはCベースのTcl APIを呼び出すことができますし、簡単に記述したいのであれば、いつでもTcl言語で記述することができます。
こういう柔軟さがうれしいのです。

Tclを使う具体的な用途はいくつか考えられます。
ひとつは、OS間の違いを吸収するためです。
たとえば、スレッド、タイマー、ソケット通信、シリアル通信、文字エンコーディングなどがそうです。
もちろん、これらを解決するにはTcl以外の選択肢もありますが、私はTclを選ぶというだけのことです。

もうひとつは、マイコン向けのプログラムを開発する際、実機ではなくPCでシミュレーションするための用途です。
マイコン向けのプログラムなのでCで記述することが圧倒的に多くなります。
そして、先ほどの話と重複する部分も多いのですが、周辺デバイスのエミュレーションを実装するためにTcl API、そしてTcl言語が便利なのです。
周辺デバイスのエミュレーションにはTkを合わせて使うこともあります。

Tcl自体、もともとはCのライブラリとして開発されました。
そう考えれば、私の使い方はTcl本来のものであり、最も自然ではないかと考えています。

自分が使うスクリプト言語はひとつに絞れればそれに越したことはありません。
しかし、前回書いたPHPとTclではあまりにも用途が異なっています。

単にGUIを作るだけであれば、PHPでUI拡張モジュールを使えば済んでしまいます。
しかし、PHPをコマンド言語として組み込むのは無理がありますし、CやC++から呼び出す単なるライブラリとして使うのはさらに無理があります。

このように、私の仕事を振り返ったとき、使用するプログラミング言語を4つに収束させたのです。
20代のころは10種類ぐらいは使っていたように思いますが、闇雲に扱うプログラミング言語の種類を増やしても得るものは大してありませんでした。
用途別の使い勝手、そして流行り廃りの影響を受けにくく、今後もずっと使える言語となれば、やはりC、C++、PHP、そしてTclの4つ以外にはないのです。
扱っている分野が異なれば、当然結論も異なると思いますので、これはあくまでも私の出した結論です。