Tcl
[Wikipedia|▼Menu]
.mw-parser-output .hatnote{margin:0.5em 0;padding:3px 2em;background-color:transparent;border-bottom:1px solid #a2a9b1;font-size:90%}

この項目では、プログラミング言語について説明しています。その他の用法については「TCL」をご覧ください。
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事は検証可能参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方
出典検索?: "Tcl" ? ニュース ・ 書籍 ・ スカラー ・ CiNii ・ J-STAGE ・ NDL ・ dlib.jp ・ ジャパンサーチ ・ TWL(2023年11月)

プログラミング言語>>他のプログラミング言語

カテゴリ / テンプレート

Tcl

最新版8.6.12[1] / 2021年12月5日 (2年前) (2021-12-05)
最新評価版Tcl/Tk 8.7a5[2] / 2021年6月12日 (2年前) (2021-06-12)
リポジトリ

core.tcl-lang.org/tcl

対応OSクロスプラットフォーム
プラットフォームクロスプラットフォーム
ライセンスオープンソース
公式サイトhttps://www.tcl.tk/
テンプレートを表示

Tclパラダイム手続き型
登場時期1988年
設計者John Ousterhout
開発者John Ousterhout、Tcl コアチーム
最新リリース8.6[3]/ 2012年7月27日 (11年前) (2012-07-27)
型付け動的型付け
主な処理系ActiveTcl
影響を受けた言語AWKLISP
影響を与えた言語PowerShell[4]、Tea
ウェブサイトtcl.sourceforge.net
拡張子.tcl
テンプレートを表示

Tcl(ティクル)はスクリプト言語の一つであり、コマンド行のみで構造化文法をフォローしてしまう非常にシンプルな文法を特徴とする。

Tclはその非常に強力なGUIツールキットであるTkにより、GUIツールを素早く作り上げるのに適した強力なスクリプティング環境を構築できる。この両者を組み合わせTcl/Tk(ティクル・ティーケー)と呼ばれる。ただしTkはクロスプラットフォームなGUI環境としても有名で、Tclに限らずPerlPythonRubyなどの言語環境からも利用できる。

Tcl/Tkは、スクリプト言語TclとGUIツールキットTkからなる 非常に強力なGUIスクリプティング環境である。現在、各種オペレーティングシステム(UNIXWindowsMacintosh)上で動作する。他にもウェブブラウザ上でTcl/Tkを動作させるプラグインTclet(ティクレット)がある。
背景

Tclがカリフォルニア大学バークレー校のジョン・ケネス・オースターハウト博士[注釈 1]により最初に開発されたのは1988年の事である。当時アプリケーションプログラムに組み込まれる拡張用スクリプト言語には標準がなく、アプリケーション毎に独自の言語が実装されていた。そのためアプリケーション使用者はツール毎に異なるスクリプト言語の習得を余儀なくされた。この非効率さを嘆いたオースターハウトは、状況を打開するために UNIX アプリケーションにおける標準となる拡張スクリプト言語をデザインしようと考えた。こうして作られたのがTclの始まりである。そのためTclはアプリケーションへの組み込みが容易であることを重視してデザインされた。具体的には処理系をライブラリとして提供することでC言語で書かれたアプリケーションに容易に組み込めることや、言語構造が簡素であり、かつ高い拡張性を持つこと、インタプリタ言語であることが挙げられる。

TkはTcl用に開発された、非常に簡単なコードでGUIを作成できるツールキットである。1990年代初頭にTclにバンドルされる形で公開された。AppleHyperCardに触発されて開発されたと言う。当初Tclの有用な活用事例の一つとして紹介されたTkだが、その取り扱いやすさからTcl言語と共に一躍人気に火がつく。Tcl は当初の設計意図と異なり、アプリケーションの組み込み言語として使われるよりも、Tkと合わせた「Tcl/Tk」の形のGUIスクリプティング環境として人気を博した。特にTkの人気は高く、TclにとどまらずPerl(Perl/Tk)、Python(Tkinter)、Ruby (Ruby/Tk)など、他の言語でも標準的なGUIキットとして Tkが利用された。

オースターハウトがサン・マイクロシステムズに勤めていた1994-1998年はTcl/Tkは同社で開発が進められた。このころのサンは WWW クライアント環境の制覇に向け邁進していた時期であり、Tcl/Tkもその流れの上、その対象領域をウェブに広げていく。ウェブブラウザ上でTk GUIを動作させるプラグイン「Tclet(ティクレット)」や、ブラウザのスクリプト言語としてのTclの組み込み、国際化対応(内部処理のUNICODE化)、インタプリタからバイトコンパイラへの変更による実行速度の大幅な向上など、Tcl/Tkはこの時期機能的にもっとも大きな進歩を果たした。しかし他技術との競合やブラウザでのサポートの薄さなどもあり、WWWを「第二のTk」として人気を拡大することは出来なかった。

オースターハウトの退職に伴い、Tcl/Tkの開発はサンの手を離れた。2000年からはTcl/Tkの開発はオープンソースにその場を移し、精力的に開発が続けられている。

2005年現在Tcl言語は「Tcl/Tk」の知名度とは裏腹に利用者数は少なく、PerlやPython、Rubyに比べ劣勢と言わざるを得ない。特に日本国内での利用者数は少ない。ただし、EDAツールにおいては標準的なスクリプト言語として広く利用されているほか、電子国土Webシステムにおいても一部でTcl言語が使われている。一方Tkは、後発のGTK+Qtと並び、軽量プログラミング言語における事実上の標準GUIツールキットの一つとなっており、広く利用されている。

なお、Tcl言語の名前は「ツールコマンド言語」を意味する英語「tool command language」に由来し、Tkの名前は「ツールキット」を意味する英語「toolkit」に由来する。
特徴Tkについては、 Tk (ツールキット)を参照

ここではTcl言語の特徴を記す。

Tcl言語の特徴は一言でいえば「全て文字列」である。Tclは、

コマンド行の順次実行のみのシンプルな文法

首尾一貫したリスト構造

の二つを組み合わせ、非常に小さいルールで広範囲の領域をカバーする点にある。コマンド行はひとつのリストであり、先頭の要素がコマンド、それ以降の要素がコマンドへの引数として扱われる。LISP 言語と同様の一貫性を持つと言えるが、リストの要素分離記号がブランクやタブであるため、これらの文字が無視される一般のプログラム言語に慣れた人には「とまどい」を与えるかもしれない。
リスト構造

リストは文字列である。リストを構成する要素はブランクかタブで区切られる。ブランクやタブを要素に含めたい場合には、その要素をブレス({、})で挟めば良い。以下の文字列は三つの要素から成るリストである。 This is {a pen}
リストの抽出

Tclパーサーがソースコードからコマンド行としてリストを取り出すとき、ひとつのリストの終端は改行コードかセミコロン(;)で判断する。しかし改行コードやセミコロンがブレスの内側にあれば、それをリストの終端記号とは見なさない。したがって、以下の3行の文字列は3つの要素から成るひとつのリストである。改行コードは3個あるが、最後の改行コードだけがリストの終端記号の役割を果たす。 if {$a<0} { set a 0 }

上記リストは Tcl の if コマンドでありC言語の if 文に似ている。しかしブレスがリスト記述記号として採用されているので似ているだけである。上記の if コマンドを以下のように改行の位置を変えると、ifコマンドの引数エラーになる。 if {$a<0} { set a 0 }

Tclパーサーは上記4行の文字列を2つのリストとして認識する。したがって先頭行のifコマンド行は引数がひとつだけしか与えられていないことになり、引数エラーが発生する。

ここで重要なのは、エラーを返したのは if コマンドであり、Tclパーサーが検出した「文法エラー」ではないということである。Tclには制御文などの「文」はない。分岐や繰り返しなどの実行制御も単にコマンドによって実現されているだけである。「Tclには細かなルールが無い」のであり、そこにはリスト構造と、以下に解説する「特殊記号」しかない。
ブラケット記号(コマンド置換)


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:36 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef