« サラリーマン | トップページ | 「龍馬伝」 »

2010年2月19日 (金)

TCL/TK

 「SEという職業」にも書いたが、最近はあまり売り物の業務アプリは書かないで、もっぱら自分が仕事をするときにちょっとあったら便利程度のツールを作ることが多い。

 仕事では、以前はCOBOL、最近ではCやVB.NET、ACCESSなどを使うが、自分用に簡単にツールを作る時には「TCL/TK」というスクリプト言語を使っている。ちょっと癖のあるツールなので、正統派プログラマからはあまり評価されていないのか、Webサイトの数もPerlやRuby,Pythonとかに比べ、はるかに少ない(と思う)。

 以下、TCL/TKをご存知ない方にほんのさわりをご紹介。

 TCL/TKはTCLというデータ処理言語とTKという画面制御言語で構成されている。ちなみにTCLはTool Command Languageの略でTKはTool Kitの略。TKはRuby/TKやPerl/TKなどでも使われているのでご存知の方も多いかも知れない。TKは簡単にかつ本格的な画面が作れる。オープン系のスクリプト言語で使用する画面開発ツールの標準の一つとも言えるかもしれない。

 問題はTCLのほう。先ほどちょっと癖のあるツールと書いたが、癖があるのは短所でもあるが長所でもある。たとえば、

全てコマンド

 TCLのコマンドは全てコマンドとそれへの引数の組み合わせになる(ナンカ、ヘンナ ニホンゴ ダ)。制御構文でさえコマンドと引数の組み合わせになる。例えばif文は、

 if {条件} {判定結果が真の場合} else {判定結果が偽の場合}

とあらわせるが、上で言う{条件}も{判定結果が真の場合}も{判定結果が偽の場合}も else でさえも全て if コマンドの引数となる。だから何?と思われるかもしれないが、何でもかんでもコマンドとその引数という割り切りのよさが僕は好き。

変数の型宣言が不要

 TCLで変数を使用したい場合は、いきなり変数に値をsetしてやればいい。例えば、

 set A "こんにちは"

とすると、変数Aには「こんにちは」という文字列が格納される。

 set B "1"

とすると、変数Bには"1"という値がセットされる。このとき、"1"は数値としても文字列としても使用することができる。これは、set文で変数に数字をセットすると、整数や浮動小数点、キャラクタなどの各々の領域を用意してそれぞれに値を格納し、次に使用するときに最適な型を動的に判断して取り出してくれる、という仕組みになっているかららしい。なので、使用者は変数の型を意識することなく使用することができるのですごく楽。(その結果、TCLの処理系は非常に重い。また、型を明に指定しないためちょっと大きなプログラムを組むとバグの温床になってしまうかもしれない)

文字列処理がやりやすい

 仕事上ではテキストデータを操作することが多いので、文字列操作がしやすい言語がベター。特にcsvファイルを読み込んで操作するときに配列処理系の操作が簡単にできる。例えば、readを使ってファイル丸ごと読んでそれを改行でsplitして配列に格納し1行分ずつ処理したり、getsで1行ずつ読み込んでカンマでsplitして配列に格納して項目単位に操作したり、と言ったことをするのが多いので、そういうツールを簡単に作れるところが便利。(ま、他の言語でもできるだろうけど)

 以上はほんのさわりなので、ぜひ「TCL/TK」でググって見てください。僕のよりもっと詳しい説明のページが検索できると思うので。で、TCL/TK使いの仲間が一人でも増えるといいなぁ、と思う今日この頃。

« サラリーマン | トップページ | 「龍馬伝」 »

パソコン・インターネット」カテゴリの記事

コメント

ほんとにTCLって便利なのに、何故か日本ではマイナーです。ネットワークテスト機器系は、ほぼTCL APIを実装しており、海外ではJob DescriptionにTCLを書けるのに。。。日本語ドキュメントが少ないのも、使用者少ない>文献少ない>使用者増えないの悪循環なのか

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/553015/47606193

この記事へのトラックバック一覧です: TCL/TK:

« サラリーマン | トップページ | 「龍馬伝」 »