Programming Perl,第三版

作者:Larry Wall, Tom Christiansen 和 Jon Orwant
出版社:O'Reilly & Associates, Inc.
电子邮件:nuts@oreilly.com
网址:www.ora.com
价格:49.95美元
ISBN:0-596-00027-8
评论者:Paul Barry
Perl 编程社区今年有很多值得庆祝的事情。在新千年之后不久,Perl 自上个世纪中叶 Perl 5 首次亮相以来,迎来了首次重大版本发布。Perl 5.6 酝酿已久,但现在终于问世了。当然,我们不可能在没有更新 “骆驼书”,即 Perl 圣经的情况下迎来 Perl 的新版本:Larry Wall 的 Programming Perl。
第三版 Programming Perl 从封面开始就与第二版有所不同。Perl 的格言赫然出现在顶部:“不止一种方法可以做到。” 这句话比其他任何事物都更能概括 Perl 与大多数其他编程技术的巨大差异。Perl 不仅仅是一种编程语言,它还是一种文化,而这本书——比任何其他书都更——是您了解 Perl 文化的指南、入门和参考。
不仅仅是封面不同。实际上,这一版中的所有内容都经过了重写、修订、重新组织和扩展。现在页数已超过 1000 页,而上一版只有 600 页左右。以前需要九章才能讲完的内容,现在需要五个部分和整整 33 章!这反映了第三版重写的程度。
第一部分“概述”是对 Perl 语言及其文化的高层次介绍。其目标是让读者了解 Perl 的风格,作者也成功地做到了这一点。但是,请注意,这不是为那些希望学习 Perl 编程的人准备的教程。事实上,如果您是 Perl 新手,这本书是 错误 的选择。这本书是一本参考书。我喜欢告诉人们,“骆驼书” 是他们应该购买的 第二本 Perl 书籍。
第二部分“血腥细节”正如其名——血腥。在 13 章中,读者会被大量关于 Perl 作为一种编程技术的详细描述所轰炸。如果您像我一样为了这篇评论而通读本书,这可能会非常吃力,但是,当用作“浅尝辄止”的参考文本时,这些材料更容易消化。同样,本书不是教程——它是对该语言的权威描述。这里有很多很好的材料。我很高兴看到正则表达式(Perl 编程语言中的编程语言)有了自己的章节,并且得到了极大的扩展。第 5 章“模式匹配”中有超过 60 页的模式和正则表达式,虽然内容都很棒,但读完之后我的头都晕了!
第三部分“作为技术的 Perl”包含涵盖 Perl 对 Unicode、IPC、线程和编译支持的章节。在 Unicode 和线程方面,Perl 正在追赶其他编程技术(最值得注意的是 Java)。但是,嘿,使用 Java 的想法让大多数 Perl 人感到恐惧,因此即使 Perl 5.6 中这些功能的实现可能仍被归类为“实验性”(线程就是这种情况),但等待这些功能出现在 Perl 中始终是可以容忍的。其他章节涵盖了从命令行使用 Perl 以及使用调试器。关于使用 C 扩展 Perl 和将 Perl 嵌入 C 中的额外(且非常受欢迎的)章节为本书的这一部分画上了句号。
第四部分“作为文化的 Perl”完全关于社区。读者了解了与他人分享代码的重要性(以帮助使世界变得更美好),以及如何保护他们的代码免受自身和日益不友好的互联网的侵害。“常用实践”一章充满了对 Perl 新手和专家程序员都有用的建议。另一个受欢迎的补充是关于代码可移植性问题的章节,以及在编写将部署在不同系统上的 Perl 代码时需要注意的事项。一个好的程序员在 Perl 世界中是一个 懒惰 的程序员,与其让每个人一遍又一遍地问您关于代码的相同问题,不如生成文档来配合(并附加到)您编写的任何 Perl 模块。为此,Perl 提供了 POD(纯文本旧文档),第 26 章告诉您您可能想了解的关于这种简单标记技术的所有信息。第四部分的最后一章名为“Perl 文化”。由于每个人都喜欢听故事,因此我们了解了 Perl 是如何产生的简要历史。如果没有诗歌,文化会是什么样子呢?还包括 Perl 诗歌现象的例子。定期举办比赛,欢迎诗歌投稿。
第五部分“参考资料”提供了关于 Perl 内置变量、函数、标准库和 Perl 诊断消息的详细信息。“函数”一章的一个亮点是使用描述性图标来指示每个内置函数对 Perl 运行时环境的副作用。我很失望地看到列出了所有标准模块,但只详细讨论了其中一小部分。作者以空间限制为由解释了原因,但我会想念这些材料。诚然,所有标准模块文档都可以在线获得(并且它随 Perl 发行版一起提供),但以印刷形式提供它有一些好处。也许现在是时候出版一本关于 Perl 标准库的单独卷了?
为了完善内容,还有 29 页的“词汇表”。您在任何其他计算文本中都找不到比这更有趣的词汇表了。想象一下,“有趣”和“词汇表”这两个词出现在同一个句子中!查看以下条目:algorithm(算法)、bucket(桶)、C、conditional(条件)、dweomer、eclectic(折衷主义的)、freely redistributable(可自由再分发的)、funny character(有趣的字符)、hubris(傲慢)、impatience(不耐烦)、invocation(调用)、laziness(懒惰)、Pern、portable(可移植的)、RTFM、script kiddie(脚本小子)、shebang、string(字符串)和(我个人最喜欢的)UNIX。
我的 Programming Perl,第三版 是非常早期的印刷版,因此受到了一些影响。作者们为了赶在 2000 年夏季 Perl 大会之前完成本书而仓促行事,一些不应该通过质量控制检查的内容最终还是通过了。例如,在我的版本中,第 31 章和 32 章的黑色章节标签颠倒了——“模块”应为“Pragmata”,“Pragmata”应为“模块”。当我阅读关于 Unicode 的第 15 章时,另一个小小的烦恼浮出水面。作者讨论了 utf8 编译指示,所以我查阅了第五部分“实用模块”第 31 章中的 use utf8,结果发现它不在那里!材料在第 15 章中,但它 也应该 出现在本书的参考部分中。索引也需要稍作整理。在 perl.oreilly.com 上维护的在线勘误表表明作者意识到了这些问题,并且其中一些问题已经在较新的印刷版本中得到了修复。
总而言之,这是一本很棒的书,第三版骆驼书是迄今为止最好的一本。它的写作风格和幽默感都是独一无二的(我怀疑这主要来自 Larry Wall)。作者都是 Perl 社区中受人尊敬的成员——有发明者 (Wall)、守护者 (Christiansen) 和编年史家 (Orwant)。他们对 Perl 的了解比任何凡人可能记住的都多,这有助于解释为什么这本书是 必不可少 的 Perl 参考书。您在任何其他书中都找不到对该语言更权威的论述。请记住:在购买本书时,请务必购买最新印刷的版本。
