Tcl/Tkクイック入門

Preview:

Citation preview

Tcl/Tk クイック入門

明日から使える

使用書体 HGP創英角ポップ

平成24年3月31日土曜日

や闇鍋プログラミング勉強会

発表資料

話者

にゃおきゃっと

Tcl/Tk

は、ス

クリプト言語

Tcl

とGUI

ツール

キットTk

からな

非常に強力

なGUI

スクリプ

ティング環境で

ある。現在、各

種OS(Unix

Windows

Macintosh)

上で

動作する。

Tcl

は、コマン

ド行のみで構造

化文法をフォ

ローしてしまう

非常にシンプル

な文法を特徴と

する。Tk はク

ロスプラット

フォームなGUI

環境としても有

名で、Tcl

に限

らず、Perl

Python

、Ruby

などからも一般

的にTk

が利用さ

れている。

他にも Web

ブラ

ウザ上でTcl

/Tk

を動作させるプ

ラグイン

Tclet

などがある。

自己紹介 %whoami

にゃおきゃっと twitter:@nyaocat

学生

アルバイト エンジニア

趣味でゲーム作ってます

(雑誌乗りました)

趣味で色々な言語とかやっ

てます

Xtal C++ html D

gcc C Java Javascript css SDL vim OpenGL SIMD OpenMP

Scheme CUDA CommonLisp

tcl/tk Emacs Haskell Linux ChickenScheme

Ruby

で、今日は

Tcl/Tk

今日話すこと

Tcl/Tkとは?

Tcl/Tkの利点は?

インストールは?

使い方は?

C言語と連携 (時間あれば)

宜しくお願いします

Tcl/Tkとは

まずそもそも

TclとTkは セットで1つの言語

ではない

Tclは 組み込み用言語として作られた 1988年、J.K.Ousterhout博士

Tkは90年に Tclの拡張とし

て公開

かなり人気出た (らしい)

いつの間にか 両者がセットとして扱われるようになってしまった (みたい)(推測)

まぁ歴史とか どうでもいい

現代から見る Tcl/Tkの特徴

言語仕様が古い

遅い

人気が無い

というか 使ってる人 知らない

そもそも 知らない人も

多い

(´・ω・`)

git gui とか gitk とか

Tcl/Tk 製なのに…

あっでも他の有名なTcl/Tk製の ソフト知らない

でも利点も多いよ

!(`・ω・´)

Shell-Like な言語仕様

というか シェル

としても使える

コマンドの順次実行形式な言語

首尾一貫した リスト構造

“a b c”←リスト {a b c} ←リスト [a b c] ←リスト

“a b c” 変数の展開が されるリスト

{a b c} 変数の展開が

されないリスト

[a b c] リスト内の結果で置き換えられる

バッククオートみたいな `(,(a b c)) みたいな

そこそこやりやすいC言語との連携

標準で正規表現

バックグラウンド実行

ガベコレ! (ガベージコレクション)

有志の拡張が 豊富

豊富なGUIパーツ

マルチプラットフォーム

(OSネイティブのGUIをなるべく使ってくれる)

学習コストが低い (多分)

manが充実してるマン

インストール

基本はビルド

Mac,Linuxなら パッケージ

Winなら ActiveTcl ?

(使った事ないので紹介できない)

Winなら Starkit

(こっちのがオススメ) (単一exeファイル)

(ただしC組み込みは出来ない)

(ここから実物を見せる)

C言語組み込み

Tclの変数を直接操作したり

バイナリ値を操作出来たり

Tkのイメージオブジェクトのピクセルデータを直接弄れたり

コマンドを作成したり

色々なAPI が揃ってる

基本めんどい

全部EvalでOK

最低限覚えるべきもの

Tcl_CreateInterp Tclインタプリタの作成

Tcl_FindExecutable 何故か必須指定

ちょっと前までは必須ではなかった 実装見ても大した事してない

Tcl_CreateCommand(…) tclのコマンドを作成する コールバックに使える

Tcl_Eval(char *) 文字列を解釈して実行

何故か char const* じゃない

Tcl_GetStringResult 直前のコマンドの結果を得る

ちょちょいと GUI組み込むの

に便利

GUIを付けるのに 普段してる手順と

しては

1 まずプログラム

を組む

2 Tcl/Tk 用の

コールバックコマンド作って登録

3 Tcl/Tk で

GUIデザイン作る

4 完成

まぁ

わざわざ C APIの紹介のために書きまし

たが

先にCUIアプリとして作って

Tcl/Tkで ラップ

この方が良い

まとめ

面白いし楽

誰も知らない

やりましょう

今回紹介出来なかったこと

様々な拡張 (Expect とか)

他言語Tkバインド

マルチスレッド (ほんとにある) (びびった)

最近のVerの機能

推奨されてる C API の使い方

バイナリデータ の扱い方

派手なデモ

調べて (Tcl/Tkやって)

皆さんで調べたり 作ったりしてみて

ください

質問とか

ありがとう ございました

Recommended