Perl 6 Essentials、Perl Cookbook 和 Perl Template Toolkit(Reship)


级别: 初级

Teodor Zlatanov
程序员, Gold Software Systems
2004 年 5 月

Column icon在本期文章中,Ted 对三本 Perl 编程书籍进行了评论,为您总结了这三本书中包含的关键信息以及新版本如何被更新。

在本期文章中我将要评论的三本书都是来自于 O'Reilly & Associates,但您将会看到,它们很不相同。不过,对 Perl 编程的具体方面来说,它们都是优秀的指导资料,您将乐于收藏它们。

是 O'Reilly & Associates 为我友好地提供了这里所评论的书籍的拷贝,为此我要向 O'Reilly & Associates 表示感谢。

Perl 6 Essentials

本书是对未来的描述。也就是推测 Perl 的未来。 Perl 6 Essentials是对新的 Perl 6 的未来预测,并且,为了跟上 Perl 开发的步伐,作者保证每年都会进行修订。可见,作者将全部身心都投入到了 Perl 6 的开发中。这本书主要是对 Perl 6 文化、Perl 6 语言和 Perl 6 内部机制的介绍。它用了不到 200 页就成功地完成了所有这三个层次的内容,体现了作者的熟练程度。

本书最开始是对 Perl 6 的一个概述,给出了足够的背景资料,以使新 Perl 程序员了解他们所需要知道的所有最新知识,然后,作为补充,详细说明了 Perl 6 开发工作如何进行、如何评价最新的版本、甚至如何实践 Perl 6 的开发者发行版本。

然后,在第 4 章,作者为读者准备的是对 Perl 6 语法的讨论,全面介绍了 Perl 基本概念和规则。

第 4 章是正式内容的开始。它是对 Perl 中可期待内容的完整总结,如果您不得不从本书中只选择一章,那么就是这一章。每个 Perl 程序员都应该去阅读这一章,不只是为了了解 Perl 6 的诱人特性,还会说出“哎呀,我从来没想到过那一点”,因为 Perl 6 引入的视点对 Perl 5 开发者来说经常是新的。第 4 章惟一的不足之处在于,它不是对初学者准备的。具体内容特别简明有趣,而且它假定读者具备 Perl 5 术语和背景的知识。

由于曾经使用支持关联符号属性(properties)的 Emacs Lisp 进行过编程,所以我为 Perl 6 属性而感到兴奋,它可以做极其类似的事情。属性必然会为 Perl 编程带来一个全新的“侧面的(sideways)”途径。我之所以称之为“侧面的”,是因为它们用“另外”的方法来表达含义,不需要使程序的逻辑变得复杂,也不需要面向对象的方法。篇幅所限,很多其他的特性我不能提及。在阅读到 junctions、currying 以及 Perl 6 将要具备的所有其他特性时,我感觉就像是小孩子走进了糖果店。

第 4 章比较详细地解释了 Perl 6 的语法,我当然欣赏这一点。Perl 6 语法是一个肯定会让程序员迷惑、烦恼而又会产生灵感的特性。它们和 Perl 5 的语法有着巨大的差异;实际上,就其灵活性而言它们更像是 Parse::RecDescent 语法。如果您想要理解 Perl 6 语法,就不得不去深入学习您可能曾经想过要学的 lexing 和 parsing。

第 4 章结束后,第 5 章开始研究 Parrot 的内部机制。Parrot 是运行 Perl 6 代码的引擎,因此它对 Perl 6 编程来说非常重要。作者解释并论证了他们为 Perl 6 所做出的设计选择。Parrot 的内部机制显然不适合编程的初学者学习。熟悉计算机体系结构、编译器内部机制、甚至是 Java? 语言等其他语言,有助于深入理解这些内容。对我来说,第 5 章是令人着迷的,但是我的观点可能会因为我个人的经验而有失偏颇。如果您是那种热衷于多方法分派和迭代器实现的程序员,那么这一章就是为您准备的。如果您不是,那么此时您可能只是会略读一下第 5 章和本书其余的部分,以后再回来重新阅读这些内容,或者是本书以后版本中(保证一年内会得到更新)相应的内容。

第 6 章回答了“说了这么多,有什么可看的吗?”这个古老的问题。介绍了 Parrot 汇编语言。类似于第 5 章,第 6 章假定读者具有计算机体系结构知识,并且至少有一些汇编语言编程的经验。如果没有那些知识和经验,第 6 章可能难以理解。

如果说第 4 章是 Perl 6 的驾驶手册,第 6 章就是引擎部分列表。第 6 章中并没有展示第 4 章中的大部分特性,但是展示了其实现方法。阅读完这一章后,我认识到,Perl 6 的语法和特性比以前好了很多。例如,在第 6 章中对栈和寄存器结构的解释要联系到第 4 章中对变量作用域的解释。

此外,第 6 章有一些关于如何将引擎部分加入到一辆全新汽车的介绍,也就是说语言的选择不仅仅局限于 Perl 6。我发现,有趣的是,用疯狂的计算机科学教授(crazy-computer-science-professor)的思路来想像如何在 Parrot 汇编中表达 Java 或 Lisp 代码。

在第 6 章的有趣内容之后,第 7 章描述了 IMCC(中间码编译器,Intermediate Code Compiler)如何可以简化 Parrot 汇编编程中的大部分工作。IMCC 使事情变得更简单,但它并没有免去理解 Parrot 内部工作原理的负担。IMCC 还是 Parrot 特性的一个极好界面。

第 5 章到第 7 章显然不是容易读懂的,但它们非常有价值。我希望在 Perl 6 Essentials一书的下一版中看到更多的那些话题。

总体来说, Perl 6 Essentials是一本好书。我建议那些初级的程序员等待更容易理解的关于 Perl 6 的书的面世,因为这本书将计算机科学与技术多年的发展过程浓缩到了 200 页之中。对中级的和高级的 Perl 程序员来说, Perl 6 Essentials是指引您走向 Perl 未来的必备路线图。

Perl Cookbook,第二版

Perl Cookbook的第二版在第一版之后五年问世,经过了深入的修订,添加了很多新内容。它回答了程序员会问到的关于编写 Perl 的几乎所有问题,还有例子和解释。作者是 Tom Christiansen 和 Nathan Torkington,对第一版和第二版的贡献者列表是 Perl 社区的名人录。

Perl Cookbook第二版中关于 Unicode 的资料是对本书第一版的可喜的补充,而且要比 Programming Perl,第三版中整个 Unicode 一章更为完整和实用。毫无疑问,这是因为在编写旧版本的时候,很多 Perl 5 Unicode 特性的时机还没有成熟。 Perl Cookbook中对 Unicode 的复盖贯穿于全书始终,其中第 1 章(字符串)和第 8 章(文件内容)中涉及到了最新的 Unicode 内容。

尽管有个别的地方被更新或重写,但大部分章节的内容几乎没有改变。换句话说,先前版本中对问题话题的组织并没有随时间而改变,但其答案发生了变化。

第 14 章讨论了数据库的访问,已经被扩展,但没有涉及 Class::DBI 模块。对每个使用 Perl DBI 的人来说, Class::DBI 都是一个应该考虑的可行选项。它在过程化的 DBI 层之上提供了一个完全面向对象的接口。由于 DBI 的局限和关系型数据库的广泛应用, Class::DBI 在这一抽象中没有获得完全成功,但是它对 90% 的实际项目来说是足够的。不过,非常欢迎在 Perl 中引入额外的数据库接口。

第 18 章涵盖了在第一版中可以找到的 Internet 服务,有了关于邮件附件、LDAP、XML-RPC 和 SOAP 访问的新资料。这些都是很好的技术,它们为在上个世纪(20 世纪)就已经根深蒂固的一章带来了一丝新鲜空气。不幸的是,没有提及 SSH 自动操作,也没有提及 IMAP 协议。

第 20 章是关于 Web 自动操作,包含了大量的新资料。无论是客户端还是服务器端,对 Web 程序员来说它都是一个很好的参考资料。

第 21 章( mod_perl )和第 22 章(XML)是第二版中全新的两章。这两章我都非常喜欢,尤其是第 22 章解释了可以非常方便地解析 XML 的各种可用选项。任何对其中一章的话题感兴趣的人,都应该去阅读它们,尤其是那些简明而直接的有用的例子。

现在吹毛求疵地提出一些问题,尽管在这部 900 多页的书中几乎没有问题。

我希望第 3 章直接在介绍中提到 POSIX strftime() 函数,而不是在方法 3.1 和 3.8 中作为可选方法提到。这样就会是一个严谨的章节。

我感到惊奇的是,竟然没有提到方法 4.16 中的 Schwartzian 转换的名称,尽管它很容易识别。

我应该指出,方法 5.9,也就是“倒置一个哈希表”,也可以用我的 Tie::Hash::TwoWay CPAN 模块完成,该模块所做的要比方法中展示的多很多(假如要我自己说!)。

如果方法标识出支持它们的 Perl 版本,将是很好的。还有很多人安装的是 5.005 和 5.6.1 版本的 Perl,出于常见的原因,这些不会很快得到升级。

第 15 章应该提及 CPAN 的 AppConfig 模块,它给出了一个我认为与标准的 Perl Getopt 模块不同的而且更好的命令行选项接口。例如,与 Getopt 不同, AppConfig 是面向对象的;它还支持使用与命令行中可用的相同的语法去读取配置文件。

读完 Perl Cookbook的第二版后,我感觉已经为应对当今环境中的 Perl 编程的挑战作好了准备。第一版由于印刷以后出现的技术而导致现在看来有些地方存在不足,第二版再次为所有 Perl 程序员(从初学者到高级程序员)提供了一个可靠的基础。我向大家强烈推荐 Perl Cookbook,甚至是那些已经拥有第一版的人。

Perl Template Toolkit

Perl Template Toolkit(TT)是我所喜爱的 Web 开发工具之一。我为这本关于 TT 的书而感到激动,因为它是由 TT 的作者编写的。

这本 TT 书籍的规划类似于经典的“Learning Perl”的规划,首先是关于基本概念的一个简单介绍性章节,接下来是较长的解释性章节。第 1 章到第 6 章遵循这一策略;TT 语言、指令、过滤器和插件都解释得很详细,令人满意。即使我多年来就是一个 TT 用户,我还是发现几乎在每一页上都会找到新的资料,不管是在函数中还是在给出的例子中。阅读 TT 的在线文档是实用的,但是,对于学习如何全面彻底地使用 TT,TT 书籍显然是更好的途径。

第 1 章到第 6 章适合初学者,也同样适合高级 Perl 程序员。TT 语言是独特的,但是任何人在阅读完 TT 书后,都将发现它很简单。

不过,第 7 章到第 12 章就高级得多了。至少,读者应该熟悉 Perl 面向对象编程(OOP)和 HTML 编程。第 9 章(关于数据库访问)和第 10 章(关于 XML)更容易理解,但是分别具备一些实际的使用数据库和 XML 的经验会非常有帮助。这不是 TT 书籍作者的过错;数据库和 XML 是深深植根于计算机科学与工程中的复杂话题。

在第 3 章中讨论的“视图(view)”特性让我感到兴奋,但是让我疑惑的是为什么如此有限。要为哈希表、数组和标量都提供视图多好呀,为什么不呢?视图的声明应该基于类名,所以类“ A::Beta ”的一个对象可以有与“ A::Gamma ”不同的动态视图,而不需要程序员付出额外的工作。这只是我惟一的一个重要问题,在这本 TT 书籍中几乎找不到任何瑕疵。

这本 TT 书籍的作者非常尽力地去保持 TT 只是一个描述工具,没有执行逻辑。实际上,有些情况下(比如 mod_perl 示例),完整的自包含的 TT 模板本身就已经不错,稍微打破一些规则可以带来更大的益处。应该高度评价本书的作者对 TT 的意图的坚持,不过,要认识到没有什么规则是绝对的,尤其是在 mod_perl 下进行 Web 编程时。

总体来说,这本 TT 书籍详细地、令人着迷地介绍了 Perl Template Toolkit。所有对 Web 开发感兴趣的人,不管用不用 mod_perl ,都必须至少要从与其他模板系统进行比较的观点出发来读一下这本 TT 书籍。出于很多其他目的,TT 也是实用的,书中非常好地对它们进行了解释,因此我真心地向所有 Perl 程序员(从初学者到高级程序员)推荐这本 TT 书籍。

回顾

在这里我所评论的三本书都很好。 Perl 6 Essentials一书的期望读者并不是整个 Perl 社区,不过包括了所有对 Perl 6 感兴趣的人。拥有中级到高级经验的读者将肯定会发现这本书更为实用。还有一点很重要,第一版将在一年内“过期”,由紧跟 Perl 6 开发的新版本所取代。不过,这是一本写得很好的书,有很多关于 Perl 6 的资料。第 4 章特别好。

Perl Cookbook 第二版对所有的 Perl 程序员来说都是一个极好的参考资料。我无保留地推荐它,而且我保证多年内它都是实用的。

Perl Template Toolkit是一本迷人的书,非常详尽地介绍了 Template Toolkit。我向所有的 Perl 程序员推荐它,我想初学者程序员将会发现前 6 章更有用。与使用源代码版本控制器及吃巧克力一样,使用模板进行编程很容易上瘾。要是上钩了可不要怪我!

参考资料

关于作者
Teodor ZlatanovTeodor Zlatanov 于 1999 年从美国波士顿大学(Boston University)毕业,获得计算机工程硕士学位。他从 1992 年起就从事程序员的工作,使用过 Perl、Java、C 和 C++。他的兴趣是文本解析、三层客户机-服务器数据库体系结构、UNIX 系统管理、CORBA 和项目管理方面的开放源码工作。可以通过 tzz@bu.edu 与 Teodor 联系。


转载于:https://www.cnblogs.com/BpLoveGcy/archive/2005/06/22/179352.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Description: Among the many different approaches to "templating" with Perl--such as Embperl, Mason, HTML::Template, and hundreds of other lesser known systems--the Template Toolkit is widely recognized as one of the most versatile. Like other templating systems, the Template Toolkit allows programmers to embed Perl code and custom macros into HTML documents in order to create customized documents on the fly. But unlike the others, the Template Toolkit is as facile at producing HTML as it is at producing XML, PDF, or any other output format. And because it has its own simple templating language, templates can be written and edited by people who don't know Perl. In short, the Template Toolkit combines the best features of its competitors, with ease-of-use and flexibility, resulting in a technology that's fast, powerful and extensible, and ideally suited to the production and maintenance of web content and other dynamic document systems. In Perl Template Toolkit you'll find detailed coverage of this increasingly popular technology. Written by core members of the technology's development team, the book guides you through the entire process of installing, configuring, using, and extending the Template Toolkit. It begins with a fast-paced but thorough tutorial on building web content with the Template Toolkit, and then walks you through generating and using data files, particularly with XML. It also provides detailed information on the Template Toolkit's modules, libraries, and tools in addition to a complete reference manual. Topics in the book include: * Getting started with the template toolkit * The Template language * Template directives * Filters * Plugins * Extending the Template Toolkit * Accessing databases * XML * Advanced static web page techniques * Dynamic web content and web applications The only book to cover this important tool, Perl Template Toolkit is essential reading for any Perl programmer who wants to create dynamic web content that is remarkably easy to maintain. This book is your surefire guide to implementing this fast, flexible, and powerful templating system.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值