新書推薦:
《
奶奶的半个心愿 “课本里的作家” 中考热点作家孙道荣2024年全新散文集
》
售價:NT$
190.0
《
天生坏种:罪犯与犯罪心理分析
》
售價:NT$
445.0
《
新能源材料
》
售價:NT$
290.0
《
传统文化有意思:古代发明了不起
》
售價:NT$
199.0
《
无法从容的人生:路遥传
》
售價:NT$
340.0
《
亚述:世界历史上第一个帝国的兴衰
》
售價:NT$
490.0
《
人工智能与大数据:采煤机智能制造
》
售價:NT$
440.0
《
未来漫游指南:昨日科技与人类未来
》
售價:NT$
445.0
編輯推薦:
Perl全球社区公认经典著作,资深Perl专家(核心贡献者之一)数十年工作经验结晶,Perl
6设计者之一Conway亲自作序推荐
深入探讨Perl领域的各种经典问题和新主题,包含大量最佳实践和真知灼见,Perl程序员进阶必读
內容簡介:
本书是Perl全球社区公认的经典著作,是资深Perl技术专家(核心贡献者之一)数十年工作经验的结晶,Perl
6设计者之一Conway亲自作序推荐。本书处处皆珍宝,不仅对Perl领域的各种经典问题给出了独到且精辟的解释,而且深入探讨了Perl中各种最新的主题,如递归、迭代器、过滤器、记忆术、划分、数值方法、高阶函数、currying、切断排序、基于语法的解析、惰性求值和约束编程等内容,并将这些转换成现实编程工作中强有力的实用工具:文件系统互动、HTML处理、数据库访问、网页抓取、排版、邮件处理、家庭理财、文本描图和图表生成等。全书包含大量真知灼见和最佳实践。
全书共9章:第1章介绍了递归与调用等参数化函数行为,分析了数制之间的转换、目录遍历、递归适用条件等;第2章讲解了代码引用的另一种用法—分配表;第3章介绍了解决性能问题的一个简单和普遍的做法—缓存;第4章讲解了迭代器的详细使用方式,包括迭代器概念、自制迭代器、迭代器实例、过滤与变换、半谓词问题、网页抓取等;第5章讲解了将通用递归函数转换到迭代器的技术;第6章介绍了如何使用无限流来摒弃迭代器的缺陷,涉及链表、递归流、正则字符串等内容;第7章介绍了把一个普通的函数转换成一个函数工厂以制造更多函数的currying技术,以及把一个函数转换成另一个函数的技术;第8章讲解了将未结构化的输入转换为数据结构的方式—解析;第9章介绍了声明式编程的技术与应用。
關於作者:
Mark Jason
Dominus(陶敏修) 资深Perl技术实践者和研究者,对Perl技术有非常深刻的认识和理解,拥有丰富的实践经验。他是Tie::File、Text::Template和Memoize模块以及perlreftut手册页的作者,还是Perl核心贡献者之一。2001年赢得Larry
Wall实用性大奖。热衷于分享,撰写了大量关于Perl的技术文章并分享在自己的博客上,由于文章技术含量高,所以非常受欢迎,这使得他在Perl技术圈内颇具知名度和影响力。他喜欢演讲,经常在大型公司和团体的Perl研讨会和培训课程上发表演讲或提供培训服务。
译者简介
滕家海 Perl技术实践者,精通Perl应用开发,对Perl技术拥有独到的认识和理解,近十年来一直参与Perl的实践开发,拥有丰富经验。业余时间潜心于技术的钻研,热衷于分享Perl技术,目前供职于一家IC设计公司,任CAD主管。
目錄 :
Mark Jason
Dominus(陶敏修) 资深Perl技术实践者和研究者,对Perl技术有非常深刻的认识和理解,拥有丰富的实践经验。他是Tie::File、Text::Template和Memoize模块以及perlreftut手册页的作者,还是Perl核心贡献者之一。2001年赢得Larry
Wall实用性大奖。热衷于分享,撰写了大量关于Perl的技术文章并分享在自己的博客上,由于文章技术含量高,所以非常受欢迎,这使得他在Perl技术圈内颇具知名度和影响力。他喜欢演讲,经常在大型公司和团体的Perl研讨会和培训课程上发表演讲或提供培训服务。
译者简介
滕家海 Perl技术实践者,精通Perl应用开发,对Perl技术拥有独到的认识和理解,近十年来一直参与Perl的实践开发,拥有丰富经验。业余时间潜心于技术的钻研,热衷于分享Perl技术,目前供职于一家IC设计公司,任CAD主管。
內容試閱 :
前言
在编程圈子里有一句著名的俗语,一个优秀的Fortran程序员可以用任何语言写Fortran程序。然而,让人悲哀的是,不管他们是否愿意,Fortran程序员用任何语言写Fortran程序。类似地,作为Perl程序员,我们也在用Perl写C程序,不管我们是否愿意。这让人羞愧,因为Perl是一门比C更富有表现力的语言。我们本可以做得更好,以C程序员梦想不到的方式使用Perl,但是我们没有那样做。
怎么会这样呢?Perl的设计初衷是一方面作为C的替代品,另一方面作为UNIX脚本语言(如Bourne
Shell和awk)的替代品。Perl最初的主要拥护者是UNIX系统管理员,他们熟悉C和UNIX脚本语言,因此自然地倾向把Perl程序写成类似于C和awk的程序。Perl的发明人(Larry
Wall)来自这个系统管理员社区,还有Randal Schwartz,与Perl合著了《Programming
Perl》,本书是第一本也仍然是最重要的一本Perl参考著作。其他重要的早期贡献者还包括Tom
Christiansen,也是古董级C与Unix专家。即使Perl程序员不是来自Unix系统管理员社区,他们也被其中的人或者其中的人训练的人训练成那样。
大约在1993年我开始阅读关于Lisp
的书,我有一个重要的发现:Perl更像Lisp而不是C。如果你拿起一本优秀的Lisp书,其中会有一段文字描述Lisp的优秀特点。例如,《Paradigms
of Artificial Intelligence Programming》,作者Peter
Norvig,有一节标题是“是什么让Lisp与众不同”,其中就描述了Lisp的七个特点。Perl分享了其中六个,C一个也没有分享。这些是巨大的、重要的特点,如头等函数、符号表的动态访问以及自动存储管理。Lisp程序员自1957年以来就在使用这些特点。他们知道如何高效使用这些语言特点的许多方法。如果Perl程序员能发现这些Lisp程序员已经知道的事情,那么他们将学到许多使Perl编程工作更轻松的方法。
说比做容易。几乎没有人愿意听Lisp程序员的。Perl人对Lisp心存芥蒂,就像Larry Wall
的著名评论所表明的,Lisp与混合了剪下的指甲碎屑的燕麦看起来一样。Lisp程序员经常制造像“cons”与“cooder”的滑稽噪声,他们还讨论像PC
loser-ing问题的东西。他们相信Lisp比其他语言更好,他们也是这么说的,这让人不快。但是现在一切都好了,因为现在你不必听Lisp人的了。你可以听我的。我将制造一些轻缓的关于散列和存储以及glob的噪声,并讨论流行的和令人鼓舞的软引用与变量销毁问题。与其告诉你Lisp有多么好,不如告诉你Perl有多么好,到最后你将不会对Lisp有任何认识,但是对Perl知道得将会更多。
然后你可以停止用Perl写C程序了。我认为你将发现这是一个很好的改变。Perl就是Perl的样子,比一个慢版本的C好得多。当你写Perl程序而不是C程序时,你将惊喜于所能够做到的。
网站
本书中的所有代码示例可以从如下网站获得:
http:perl.plover.comhop
当代码段中标示某某例子的标签时,那段代码就可以从如下网址下载:
http:perl.plover.comhopExamplessome-example
该网站还包括完整的文本、一个勘误表,以及其他有趣的内容。针对本书有任何问题都可以给我发电子邮件,请发邮件至mjd-hop@plover.com。
致谢
每段致谢都以这样一句开头“要是没有我的编辑Tim
Cox不知疲倦的支持与协助,这本书肯定还没写完”。除非你写一本书,不然你将不会意识到这是多么真实的。在这里我无法用语言表达,要是没有Tim不知疲倦的支持与协助,这本书就不会写完,感谢他的贡献、友善,还有他极大的耐心。
这本书姗姗来迟,在我工作的时候Tim经历了三位助理。所有这些人都是乐于助人的和能干的,因此我谢谢Brenda
Modliszewksi、Stacie Pierce以及Richard
Camp。“能干的”听起来可能无力,但是我认为这是最高的褒奖。
多谢产品经理Troy Lilly与Simon Crump,不仅是能干的而且与他们合作愉快。
临近成书之前,我开始为实例代码写测试。我厌恶地认识到几乎没有程序工作正常。有大量的小错误(有些也不小),代码与输出之间的不兼容、排版等。谢谢Robert
Spier在最后关头的英勇,我认为他捕获了这些错误里的大部分。Robert不仅确实是能干的、乐于助人的、富有成效的,而且确实是活泼开朗的。如果本书中的任何代码程序运行如预期,那么要感谢Robert。(如果不是这样,你应该责备我,而不是Robert。)Robert也负责命名我用来准备手稿的MOD文件准备系统。
我妻子Lorrie Kim的贡献太多太大以至于无法一一描述。本书题献给她。
其他许多人对本书作出了贡献,但是他们中许多人在当时并不知道。我幸运地拥有许多卓越的老师,我有时不得不狠狠地考验他们的忍耐力。谢谢Mark
Foster、Patrick X. Gallagher、Joan Livingston、Cal
Lobel(第一位教我编程的老师)、Harry McLaughlin、David A. J. Meyer、Bruce
Piper、Ronnie Rabassa、Michael Tempel以及Johan Tysk。正当我认为一切都错过了的时候,Mark
Foster鬼使神差地为本书建议了书名。
本书直接从两本更早的书获得灵感:《ML for the Working Programmer》,作者Lawrence
Paulson,以及《Structure and Interpretation of Computer
Programs》,作者Harold Abelson 和Gerald Jay
Sussman。其他有重要影响的是《Introduction to Functional Programming》,作者Richard
Bird 和Philip Wadler,以及《Paradigms of Artificial Intelligence
Programming》,作者Peter Norvig。
正式的技术阅校者的工作报酬比他们可能在别的项目中更低。这本书花了很长时间写就,尽管我想与阅校者就每件小事进行长时间交谈,但是我害怕如果那么做了,我将永远也不会完成。所以我很少与阅校者联系,也许他们认为我只是把他们的建议塞进了碎纸机。但我不是那样的,我极其认真地仔细研究他们所有的批评,并为这些批评中的大多数伤脑筋。我要谢谢阅校者:Sean
Burke、Damian Conway、Kevin Lenzo、Peter Norvig、Dan Schmidt、Kragen
Sitaker、Michael Scott以及Adam Turoff。
在写作的时候,我维护了对本书感兴趣的人的一个邮件列表,并把未定稿的章节发到邮件列表。这非常有帮助,我已经把这种做法推荐给其他人。我的邮件列表的650个令人惊奇的成员无法一一列在这里。他们都是提供了帮助与支持的,本书由于他们的投入而更加完美。一些突出的人贡献了大量的具体内容:Roland
Young、Damien Warman、David “Novalis” Turner、Iain “Spoon”
Truskett、Steve Tolkin、Ben Tilly、Rob Svirskas、Roses Longin
Odounga、Luc St-Louis、Jeff Mitchell、Steffen Müller、Abhijit
Menon-Sen、Walt Mankowski、Wolfgang Laun、Paul Kulchenko、Daniel
Koo、Andy Lester、David Landgren、Robin Houston、Torsten
Hofmann、Douglas Hunter、Francesc Guasch、Kenneth Graves、Jeff
Goff、Michael Fischer、Simon Cozens、David Combs、Stas Bekman、Greg
Bacon、Darius Bacon,以及Peter
Allen。我向许多提供帮助的贡献者道歉,考虑到片幅问题我没有放在上面的列表里,更要向我意外遗漏的几个特别有帮助的贡献者道歉。
Wolfgang Laun和Per Westerlund特别勤勉地帮助我纠正第二次印刷的错误。
在开始写作以前,我收到了关于挑选出版社的有价值的建议,它们来自Philip Greenspun、Brian
Kernighan和Adam Turoff。Damian Conway和Abigail对我的提议给予了有帮助的建议与批评。
Sean Burke
录下了我的象牙塔谈话,刻成CD并发给我,还在最后一刻提供了有关RTF的咨询。他定期发邮件提醒我,书到什么流程了,还经常在我无法确定的时候到访。
第4章里几个特殊的想法是由其他人建议的。Meng Wong 建议了聪明与恰当的“里程表”比喻。Randal Schwartz
帮我“增补”函数。Eric Roode 建议了多列表迭代器。
当我需要读Paul Graham绝版的书时,A. E. Sundstrom借给了我。当我需要《The Art of
Computer Programming》第二卷的时候,Hildo Biersma与Morgan
Stanley为我买来了。当我需要钱的时候,B. B. King就借给我一些。谢谢他们所有人。
第9章的约束系统绘制程序是一个大项目,我很长时间盯着该项目。要是没有Wm Leler 及时的帮助,我可能还盯着呢。
Tom Christiansen、Jon Orwant以及Nat Torkington
在使我融入Perl社团方面扮演了主要的与不可替代的角色。
最后,“没有这个,这本书不可能写成”语句不能结束,要是不感谢Larry Wall
写了Perl并创立了Perl社团,没有这个,这本书不可能写成。
……