欢 迎 访 问 卢 昌 海 个 人 主 页

除了自己的无知,
我什么都不懂。

-苏格拉底

 
信 息
 
 
 
All English Contents
作品列表 | 电子图书
站长简介 | 常见问题
版权说明 | 电子邮箱
 
统 计
 
 
 
自 2008-02-01 以来
本文点击数
15,707
自 2008-02-01 以来
本站点击数
33,826,266
昨日点击数 2,590
今日点击数 2,373
 
备 注
 
 
 

本文及本软件曾被 Tcl 语言中文网收录。

喜欢本人文字的读者
>>> 欢迎选购本站电子书 <<<

TCL2HTML

- 卢昌海 -

本软件编写迄今已近六年, 由于最近几年我未再使用 Tcl/Tk, 也未对本软件进行更新, 因此本软件所能识别的 Tcl/Tk 的关键词想必已不全。 不过用户可以按照软件内的说明自行添加关键词。 我尚未在 Windows Vista 上运行过本软件, 如果哪位用户试过, 欢迎告知结果。 此外, 三年多前曾有一位中文用户来信提及过一个问题, 我将解决办法作为补注附在文末了。 [2008-03-30]

English Version

一. 背景介绍

Tcl2Html 是本人编写的一个小软件, 它能把 Tcl/Tk 的源程序转变成 HTML 文件, 便于在网上交流程序。

编程的人可能对 C/C++、 Java、 C# 等所谓的 System Language 比较熟悉, Tcl/Tk 则属于一类被称为 “Scripting Language” 的 “另类” 语言。 其实说 Scripting Language 另类有些冤枉, 因为一来 Scripting Language 的历史之悠久并不亚于 System Language, 自二十世纪六十年代以来两者就并存于各操作系统之中; 二来 Scripting Language 家族中的 VBScript、 Perl 等传播之广也不在 System Language 之下, 而后起之秀诸如 Python、 Ruby 等也为写书人赚了不少银子。 不过 Tcl/Tk 对大多数人来说确实算是比较陌生。

Tcl/Tk 由核心语言部分 Tcl 和界面编程部分 Tk 所组成, 除此之外还有许多其它软件包可供下载。 与其它 Scripting Language 类似, 用 Tcl/Tk 编程远比用 System Language 方便。 以 C 语言为例, 据统计每一行 C 程序平均对应于 5 行汇编语言指令, 而对于 Tcl/Tk 来说, 这一数字是 100 到 1000! 也就是说一行 Tcl/Tk 程序平均对应于数十行乃至上百行 System Language 程序。 别的倒也罢了, 在编写用户界面 (GUI) 方面, Tcl/Tk 委实可以让埋首于 MFC、 Java 等的人有耳目一新之感。 即使考虑到 VC++、 Java、 C# 等各有大型的 (很不幸也都是昂贵的) 编程环境 (IDE) 的支持, Tcl/Tk 在编程简洁性上依然有其独特的优势。 尤其是在必须直接对源程序进行修改的时候, 用 IDE 产生的程序往往因为含有冗余 code 而给阅读和修改带来额外的复杂性。 这时候逻辑清晰、 语法简明的 Tcl/Tk 所具有的优势就颇为明显。 由于 Tcl/Tk 在界面编程方面的长处, 目前流行的几种主要的 Scripting Language, 比如 Perl 和 Python, 在界面编程上都采取了仿照 Tcl/Tk 的方法。 由于 Python 是最近才流行的, Perl 也是在较新的版本中才有所谓 Perl-Tk 的, 在这些语言还不存在, 或还没有与 Tcl/Tk 相似的界面编程功能的时候, Tcl/Tk 的 “大隐于市” 实在是编程界的一种奇怪的现象。 或许是因为传统上人们认为 Scripting Language 只是用来处理文本数据的缘故吧, 也或许是由于 Scripting Language 的运行速度较慢, 在计算机硬件不发达的时候往往达不到人们对运行速度的要求。

而今天, 硬件的发展使得速度瓶颈对许多软件来说已不复存在, 这给 Scripting Language 创造了在更多方面与 System Language 争锋的机遇。 即使有 Perl 和 Python 等语言的竞争, Tcl/Tk 依然有其便利之处, 语言功能的比较或许是各有千秋, 但对于业余编程的人来说, Tcl/Tk 的一个有利之处, 就是它有一些很不错的免费编译器, 其中最出色的是 TclPro, 它是一个商业软件, 但 TclPro 1.4 (含 Tcl/Tk 8.3.2) 可以免费下载, 它们可以将 Tcl/Tk 编译成可执行文件。 编译器对于象 C++ 这样的 “编译型” 语言自然不新鲜, 但 Scripting Language 通常是由所谓的 Interpreter 来执行的, 因而要求用户机器安装相应的 Interpreter, 这样的一层额外要求对于软件的传播带有不可忽视的负面影响。 因此拥有象 TclPro 这样的编译器, 从而免除用户安装 Tcl/Tk Interpreter 的麻烦, 是 Tcl/Tk 的一个显著优势。

王婆卖瓜吆喝了半天, 除了真心实意要替 Tcl/Tk 呐喊几声外, 也是为 Tcl2Html 作点背景介绍。 如果你从来没有用过 Tcl/Tk 的话, 不妨试着用一下, Tcl/Tk 的 Interpreter 是可以免费下载的。 你会发现学习 Tcl/Tk 比 C++、 Java、 C# 等容易多了, 很值得一试。

顺便说一下 Tcl2Html 本身就是用 Tcl/Tk 编写, 并用 TclPro 编译的。

希望这个小软件能对 Tcl/Tk 在网上的传播交流起到一些帮助。

二. 用户界面

The Main Screen

The Main Screen

The Font/Color Preference

The Font/Color Preference

The Style Preference

The Style Preference

The Indentation Preference

The Indentation Preference

三. 效果展示:

以下文件便是用 Tcl2Html 1.0 产生的 HTML 文件的显示效果:

#!/bin/sh
# the next line restarts using wish
exec wish "$0" "$@"

# timer --
# This script generates a counter with start and stop buttons.

label .counter -text 0.00 -relief raised -width 10
button .start -text Start -command {
    if $stopped {
        set stopped 0
        tick
    }
}
button .stop -text Stop -command {set stopped 1}
pack .counter -side bottom -fill both
pack .start -side left -fill both -expand yes
pack .stop -side right -fill both -expand yes

set seconds 0
set hundredths 0
set stopped 1

proc tick {} {
    global seconds hundredths stopped
    if $stopped return
    after 50 tick
    set hundredths [expr $hundredths + 5]
    if {$hundredths >= 100} {
        set hundredths 0
        set seconds [expr $seconds + 1]
    }
    .counter config -text [format "%d.%02d" $seconds $hundredths]
}

bind . <Control-c> {destroy .}
bind . <Control-q> {destroy .}
focus .

四. 下载及使用

下载 Tcl2Html 1.0 for Windows (zip 文件, 1.7MB), 解压缩后直接运行 tcl2html.exe 即可。

补注

  1. 二零零四年十二月十日, 我收到一位国内用户的来信, 提到 tcl 文件中的中文经 Tcl2Html 转换成 HTML 文件后会变成乱码。 不幸的是, 我几次回信都因对方地址出错而被退回。 考虑到这个问题对国内用户有一定的普遍性, 因此在这里解释一下。 出现这一问题的主要原因在于 HTML 文件中的编码设置。 Tcl2Html 所生成的 HTML 文件选用的是 iso-8859-1 编码, 在有中文时只需把这一编码 (在所生成的 HTML 文件的第四行末尾) 改成相应的中文编码, 如 gb2312, 即可。 [2004-12-10]

站长往年同日 (3 月 30 日) 发表的作品

站长近期发表的作品

本文的讨论期限已过, 如果您仍想讨论本文,
请在每个月前七天的 “读者周” 期间前来讨论。

>> 查阅目前尚在讨论期限内的文章 <<