Tcl 和 Tk 实用编程

作者:John McLaughlin
Practical Programming in Tcl & Tk
  • 作者:Brent Welch

  • 出版社:Prentice Hall

  • 电子邮件:sales@prenhall.com

  • 网址:http://www.prenhall.com/

  • 价格:42 美元

  • ISBN:0136168302

  • 评论员:John McLaughlin

如果您是 Linux 用户,您很可能已经使用过 Tcl/Tk 应用程序。Linux 下的大量应用程序使用 Tcl/Tk(以下简称“Tcl 应用程序”)作为 GUI 前端。Tcl 在 Linux 下变得流行有多种原因:灵活性、易用性、源代码的可用性、宽松的许可政策以及 Tk 部件集的美观外观。如果您好奇并想了解更多关于 Tcl 的信息,或者您只是想更轻松地使用该语言,那么 Brent B. Welch 撰写的 Tcl 和 Tk 实用编程 这本书是您想要阅读并经常参考的书籍。

Welch 先生是 Sun 公司 Tcl 开发团队的成员,他可能因开发 EXMH 而为 Linux 社区所熟知,EXMH 是 Linux 下最好的邮件阅读器(插入了少量个人偏见)。在他的这本书的第二版修订版中,他用 613 页的篇幅引导用户从 Tcl 脚本的基本范式,到使用 Tk 以及用 C 语言编写扩展。

本书分为七个部分,涵盖 Tcl 基础知识、高级 Tcl、Tk 基础知识、Tk 部件、Tk 细节、Tcl 和 C 以及变更。每章首先以简短的段落介绍主题,然后是详细的讨论、表格和大量的示例。本书的一个有用的特点是在页边空白处标记的“小贴士”,这些提示表明一些特别有用、棘手或不明显的东西。

关于 Tcl 语言的部分让我非常满意;通常书籍会快速略过 Tcl 的基础知识,以便进入更“吸引人”的 Tk 部分。Tcl 功能强大且内容丰富,但有时可能是一种令人困惑的语言,特别是如果您没有完全理解基础知识。作者对 Tcl 语言的基本结构和组-替换-求值范式的透彻解释做得很好,并澄清了我的理解。任何编写 Tcl 脚本的人都会从多次阅读第一部分中受益。

关于 Tk 部件的部分清楚地解释了部件的语法和用法,而且通过大量使用示例,真正说明了如何最有效地使用它们。本书还讨论了如何以简单的方式解决许多 Tk 程序员面临的问题的技术(例如将滚动条附加到两个列表框)。

关于 Tcl C API 的部分写得非常好,对于任何试图将 Tcl 集成到更大的应用程序中的人来说,都是极好的读物。作者不仅从任务的角度对 API 进行了很好的概述;他还提供了一些技巧。我最喜欢的是 Tcl_Invoke,这是一个 C 过程,允许调用 Tcl 命令,而无需 Tcl_Eval 附带的替换开销。

本书附带一张 CD-ROM,其中包含本书中的所有示例以及一个小型浏览器应用程序,以帮助访问和运行示例。也许我有点过于挑剔,但我对包含的浏览器应用程序有点失望。如果能包含一个真正华丽的 Tcl 浏览器来真正展示该语言的优势就好了。遗憾的是,包含的应用程序虽然可用,但有点简陋,肯定不会激发 Tcl 新用户对该语言的兴奋。还包括了来自各个 FTP 站点的 Tcl 脚本和扩展的集合;如果其中更多一些已解压缩并准备好从 CD 运行,那就更好了。

虽然本书被描述为对初学者以及 Tcl 专家用户都有用,但它对于至少具有一点编程知识的人来说确实很有用。在某些方面,本书的广度和细节(更不用说它的重量)对于新手来说可能有点令人生畏。对于真正的初学者,我仍然喜欢 John Ousterhout 的 Tcl 和 Tk 工具包(尽管它有点过时了)。

在整本书中,作者毫不含糊。他非常详细地介绍了该语言,并提供了许多有用的技巧,他同样迅速地指出了潜在的陷阱、低效的命令以及虽然合法但“可能不是一个好主意”的结构。

本书花费了大量篇幅来描述适用于特定 Tcl 版本或特定计算机平台(Unix、Windows、Mac)的功能。如果您有兴趣编写真正的跨平台脚本,这将特别有帮助。在可能的情况下,都会注意编写可在多个平台和 Tcl 修订版本上工作的代码。由于作者是 Sun 公司设计团队的成员,他能够介绍 Tcl 8.0 中引入的一些新功能,包括命名空间、二进制字符串支持和即时编译器。

毫无疑问,本书名副其实。它提供了 Tcl 和 Tk 的极其实用的观点,指出了它的优点和缺点,同时专注于编写“完成工作”的脚本。Welch 先生撰写了一本书,对于任何编写 Tcl 代码或将其集成到更大的应用程序中的人来说,这本书都是必读的参考资料。

John McLaughlin 是惠普公司的项目经理,致力于无线芯片组的测试设备。作为 0.99.13 以来的 Linux 用户,他和妻子 Noel 住在旧金山湾区,喜欢旅行、潜水、滑雪、使用 Tcl 进行黑客攻击以及编写 EXMH 扩展(当然是在 Linux 下)。您可以通过 johnmcl@sr.hp.com 与他联系。

加载 Disqus 评论