プログラミング言語 Tcl/Tkの紹介

Tcl/TkはRubyやPythonより前からあるプログラミング言語です。RubyやPythonと比べると、人気がありません。

RubyやPythonのことを紹介しているWebサイトを見ると、「言語仕様が非常に洗練されている」、「エレガント」などと説明されています。

エレガントとは

優雅な、上品な、気品の高い、すっきりしているなどの意味がある。

Tcl/Tkは「エレガントさ」よりもシンプルで実用的なツールを作るように設計されています。

Tcl/Tkについて

Tcl/Tkは、John K. Ousterhout 博士によって1988年にカルフォルニア大学バークレー校で作成されたスクリプト言語です。Tcl/Tkは、Tool Command Language/Toolkitの略で、ティックル・ティーケーと呼ばれています。

Tcl/Tkのロゴは「quill (毛の長い堅い羽、鳥の羽柄)」です。「葉っぱ」ではないですよ。(^_^)

Tclの基本的な文法は、スペースで区切られたリスト構造をもつコマンドで構成されています。条件分岐や繰り返しなどの制御構造もコマンドとして実装されています。Tclでは、このコマンドを記述してプログラミングしていきます。

コマンド名 引数1 引数2 引数3 …

  例.画面に文字を出力するコマンド。
    puts “hello, world!”

TkはGUI(Graphical User Interface)に必要な部品(ボタン、メニューなど) をTclで簡単に扱えるようにする目的で作成されました。

ボタン、メニューなど、GUIに必要な部品のことを、Widget(ウィジェット)といいます。

サンプル

# ウィンドウにメッセージを表示する

message .msg -width 200 -text "hello, world!"
button .btn -text 終了 -command exit
pack .msg .btn

サンプルを実行した時の表示。

[Windows8.1]

[CentOS(Linux)]

Tcl/Tkの特徴

Tcl/Tkは以下のような特徴をもっています。

・GUIベースののアプリケーションを簡単に作成できる

Tkは豊富なGUI部品を持ち、それらを組み合わせて簡単にGUIベースのアプリケーションを作成できる。 

・クロスプラットフォーム上で動作する

Tcl/TkはUNIX, MS-Windows, MacOS 上で動かすことができます。

・国際化サポート

Tcl8.1から内部コードにUnicode(UTF-8)を採用しており日本語の文字列操作も容易に扱えます。

・迅速な開発

スクリプト言語なので、コンパイル作業は不要です。

・容易な拡張

C言語で新たな機能の実装を書くことにより、TclやTkを簡単に拡張できる。

・組み込みが可能

C言語で作成されたアプリケーションにTclインタプリタを追加することにより、Tclスクリプトでアプリケーションの設定や制御を行うことができる。

・バイトコンパイラの採用

Ver:8.0からプログラム実行時にバイトコード(中間コード)へ変換するバイトコンパイラを採用しています。Tclインタプリタは、読み込んだソースコードをバイトコードに変換したものを実行しているため実行速度が大幅に向上しました。

バイトコード について

インタプリタとは作成したソースコードを解釈しながら実行するプログラムのことをいいます。解釈しながら実行するため実行速度は遅いです。
また、ソースコードを解釈して機械語、中間コードに変換のみ行うことをコンパイルといい、コンパイルするプログラムをコンパイラとといいます。(C言語のcc, Javaのjavacなど)

Tcl/Tkに興味を持つ人はどんな理由で?

恐らく、こんな理由ではないでしょうか。

  • GUIのプログラムを簡単に作れるらしい。
  • Ruby/TkやPythonのTkinterはTcl/TkのTkだ。
  • Cisco IOS で利用されているスクリプト言語はTclだ。*
  • 他の言語で挫折した人。

*最近はPythonもサポートされている模様。

参考になるサイト

[英語]

[日本語]

Tcl - Wikipedia
もっとTcl/Tk
Tcl/Tk言語プログラミングのための入門ページです。初心者から中級者ための情報が満載です。
Tcl
M.Hiroi's Home Page / Tcl/Tk GUI Programming
Tcl/Tk,Tcl/Tk入門,GUI,プログラミング
http://bitwalk.sitemix.jp/tcltk.php

コメント

タイトルとURLをコピーしました