Tcl/Tk

世の中が「じゃばじゃば」したり、「真珠」や「ルビー」を夢見る中で、少しあまのじゃくな私はTcl/Tkが好きです。といっても、それぞれ得意不得意があるので、排除しているわけではないんだけど、あまのじゃくじゃ無くなることを祈っています。だいぶん日本語の参考書も増えてきました。

○  思い出

昔々、私が大学院に進学したとき、研究室にApolloコンピュータという今は無き名機がありました。
その中で、GUIを担っていたのがDialogという言語でした。私がこの言語の革新的であると感じたのは、User Interface(人間と機械をつなぐ見かけとの接点)とApplication Interface(実際の作業と機械との接点)という二つのInterfaceを持っていた点です。

Apolloが続かないことを分かったとき、UNIX/X-Windowの環境に移ることになりました。そのとき、つまり、X-WindowのプログラムをC言語で書かなければならないと分かったとき、私は嘆きました。なぜ、すべてのプログラムをUser Interfaceに至るまでCで一から書かなければならないのか。何かいい方法は無いものか?

Tcl/Tkはそうしたとき、1995年の夏に学会に参加した際にボストンの本屋で出会った言語でした。

(これだから、ボストンでの本屋巡りはやめられない。のんびりと座り込んで、本を積み上げて、一日かけて本を探すことが出来ます。日本の本屋でもこうなって欲しいけれど、なかなかそうはなりませんね。のんびりと座り込んでなどという本屋はほとんどありませんね。残念。)

○ 優れていると思うこと

C言語などと組み合わせることにより、User Interfaceと計算させる部分の役割分担が可能な点が特に好きです。Tclは、スクリプト言語と呼ばれるものの一つで、PearlやPythonなどと同じ分類です。今やPearl/Tkすらあるじゃないですか?Perlもずいぶんと拡張性があがりました。でも、次の世代はPythonだRubyだとも言われているし。

 シリアルラインを使った機械制御やsocketを使った通信がFileの制御と同じように扱えます。Unixでは元々の考え方がdevice file的な考え方なので比較的素直ですが、MS-Windowsでは少し新しい感覚ではないでしょうか。MS-Windows 上での機械制御にBasicを使った時よりも素直にかけました。Unixでもほとんど同じプログラムで動かせるのもとても有り難いです。

 

○ 悩ましい点

基本的に値送り(Fortranの逆)ですので、適当なglobal変数が必要となります。これが、プログラムを複雑にする可能性があります。基本的にshell scriptなのだから、当然といえば当然でしょうか!?

でもnamespaceを使ったり、upvarを使ったりすることでクリアすることができます。あるいは、C言語による拡張を考えるとか。どのくらいまでのことをTcl/Tkにさせるかによって使い分けでしょうか?

ご意見がある方は
mailto:tacyas@nn.iij4u.or.jp
まで

○ 参考図書

Practical Programming in Tcl and Tk, Welch, B. B.

Effective Tcl/Tk Programming: Writing Better Programs with Tcl and Tk, Harrison, M. and Mclennan, M.

 

○ 関連リンク

須栗歩人(すぐりふひと)さんのホームページ:http://members10.tsukaeru.net/bitwalk/

現在の本家:http://www.ajubasolutions.com/