锻造坊 - 2010 图书综述

作者:Reuven M. Lerner

各位爱书人,大家好! 如果您住在北半球,您大概正在阅读这篇文章时,天气正在变冷。 但在我写这篇文章时,以色列(以及北美和欧洲的大部分地区)正在“享受”相当炎热的天气,气温非常高,而且没有明显的缓解迹象。 无论气温是高还是低,我都总是乐于阅读新书,学习最新的开源 Web 相关技术。 幸运的是,去年出版了许多优秀的新书。 本月,我将暂时放下通常对最新开源 Web 相关技术的讨论,转而列出今年我看到的一些更有趣的书籍。

Ruby、Python 和 Perl

本专栏的常客已经知道,大约五年来,我最喜欢的编程语言是 Ruby。 这很大程度上归功于 Ruby on Rails,这个 Web 框架以迅猛之势席卷了整个行业,所有其他框架似乎都要以此为衡量标准。 鉴于 Ruby 的受欢迎程度,出版商继续提供大量与 Ruby 相关的书名也就不足为奇了。 然而,这些书中的许多书都是针对更高级的程序员,他们通常希望改进他们的编程技术和代码可维护性。

我见过的两本更高级的 Ruby 书籍几乎具有相同的名称,而且令人困惑的是,它们都来自同一家出版商 Addison-Wesley。《Refactoring Ruby》由 Kevin Rutherford 撰写,是一本分类法和教程的结合,向 Ruby 程序员介绍常见的“代码异味”,即代码中可能存在的问题,应在失控之前加以解决。 Rutherford 是我最喜欢的工具之一 Reek 的作者,Reek 可以自动识别代码异味,从而识别潜在的问题代码。

另一本书《重构(Ruby 版)》由 Jay Fields、Shane Harvie 和 Martin Fowler 撰写,并由 Kent Beck 参与。 正如书名所示,这是 Fowler 经典著作《重构》的 Ruby 版本,该书向许多程序员介绍了这样一种观点:在不改变代码功能的情况下改进代码既是可能的,也是有益的。 本书包含许多关于如何使代码更具可读性的示例,并强调使用许多小方法而不是少量长方法。 当我通读这本书时,我时而对自己当前的技术感到满意,时而又理解了如何提高代码的可维护性。 这本书易于阅读,有许多清晰的示例,并且适合中级和高级 Ruby 程序员。

自动化测试是 Ruby 社区以及整个编程界的一个热门话题。 过去一年出版的两本书,都来自 Pragmatic Programmers,从不同的角度解决了测试问题。 其中一本《Rails 测试规范》由 Noel Rappin 撰写,是对 Rails 应用程序中所有不同测试代码方式的绝佳介绍,从基础知识(模型和控制器)开始,到模拟对象和工厂,最后研究 Cucumber、Webrat 和 Capybara。 如果您对 Ruby 的替代 RSpec 测试框架以及使用场景驱动的 Cucumber 系统进行测试感兴趣,《RSpec 之书》由 RSpec 当前的维护者 David Chelimsky 撰写,可能值得一读。 它介绍了 RSpec 和 Cucumber 的互补性,并展示了如何在编写代码之前和编写代码时有效地且轻松地使用它们来测试代码。

虽然我大部分时间都在使用 Ruby,但我的确偶尔还会使用其他编程语言。 特别是,我经常教授 Python 编程课程。 迄今为止,我还没有看到一本书深入探讨 Python 编程的许多更高级方面,特别强调面向对象开发、自动化测试和元编程。 然而,Marty Alchin 撰写并由 Apress 出版的《Pro Python》一书旨在填补这一空白,而且从我所看到的来看,它做得非常出色。 我希望我会向我的高级 Python 开发课程的学生推荐这本书。 虽然这本书是为 Python 3.x 编写的,但作者认识到 Python 世界的大部分仍然在使用 2.x 系列,因此他包含了大量的侧边栏和注释,指出 2.6、2.7、3.0 和 3.1 之间的差异(如果适用)。

最后,我应该补充一点,虽然 Perl 不再是我编写代码时首先想到的语言,但它在我心中仍然占据着温暖的位置。 因此,当一位客户最近要求我做一个 Perl 项目,并且我使用 Catalyst 作为该项目的框架时,对我来说就像是回到了家。 Perl 黑客会将 Catalyst 描述为一个出色的 MVC Web 框架(Ruby 黑客会将其描述为 Rails 的 Perl 仿制品)。

无论您的观点如何,Catalyst 都是用 Perl 编写现代 Web 应用程序的好方法。 而且,尽管 Catalyst 和 Rails 之间肯定存在相似之处,但也有足够的差异,我需要一个 Catalyst 入门指南才能相对快速地启动和运行。 由 Apress 出版,Kieren Diment 和 Matt Trout 撰写的《Catalyst 权威指南》正是我所需要的。 当我对 Catalyst 的工作原理有疑问时,我发现自己不仅求助于优秀的在线文档,还求助于这本书。

新语言

使用您已经知道的语言工作固然很好,但学习和使用新语言也有很多好处。 每种语言都会教给你一些新的东西,并且(我认为)会提高你对已经知道的其他语言的理解。 因此,我很高兴发现 Pragmatic Programmers 出版的 Bruce Tate 的《七周七种语言》。 这本书回顾了(正如您可能期望的那样)七种编程语言,每种语言都与其他语言截然不同:Ruby、Io、Prolog、Scala、Erlang、Clojure 和 Haskell。

我一直想在过去一两年学习其中的几种语言,虽然我没有花七周时间通读这本书,但我确实用它来熟悉其中的几种语言以及它们可能适用的地方。 (我对 Clojure 和 Scala 特别感兴趣,这在很大程度上是因为这些语言在 Web 开发方面的可能性。)我发现写作清晰,示例很好,也许最重要的是,与其他语言的比较很有用。 即使我不打算用 Io 编程,例如,看看数据类型是如何工作的,以及基于原型的语言是如何运作的,也很有趣。 正如作者自己所写,Io 给了他对 JavaScript 的新视角,JavaScript 无疑是当今最流行的基于原型的语言。

另一种流行的语言,尽管我们可能不这么认为,是 SQL,即所有关系数据库系统中使用的查询语言。 正如存在关于“设计模式”的书籍和教程一样,这些书籍和教程举例说明了您可以而且应该如何构建代码,越来越多的文章和书籍谈论“反模式”,这些例子说明了您应该应该如何构建代码。 Bill Karwin 撰写,Pragmatic Programmers 出版的《SQL 反模式》一书介绍了人们不应使用 SQL 和关系数据库的多种方式,然后展示了可以并且应该使用数据库工具的方式。 我很高兴看到他建议不要使用“float”类型,不要使用如下模式搜索文本列'%target%',并且反对在单个列中存储多个值。 我在许多项目中都见过这些(以及更多!),并且很高兴有一个清单可以避免什么。 我在很大程度上不同意作者关于将图像和其他大型二进制对象放入 BLOB 列的论点。 也就是说,他为自己的观点提出了相当有说服力的论据,并承认这是一个极具争议的话题。 特别是如果您是数据库和查询设计的新手,这本书很可能会派上用场。

万维网

当史蒂夫·乔布斯公开宣布 iPhone 和 iPad 将不支持 Flash 时,许多人想知道替代方案是什么。 乔布斯告诉大家,HTML5 提供了大部分或全部相同的功能。 我的回应是:“嗯,我猜 HTML5 的发展比我想象的要超前——我最好去看看。” 从那以后,我一直在阅读新兴的 HTML5 标准的各个部分,我必须承认,至少在这个阶段,它看起来非常引人注目。

我的主要信息来源是 Mark Pilgrim 的《深入 HTML5》,这本书既在网上免费发布,也由 O'Reilly 出版成书。 长期以来,我一直觉得 Pilgrim 的写作清晰而有趣,他对 HTML5 的描述并没有让我失望。 他的书的网络版具有能够与描述一起演示功能的优势,让您看到您的浏览器可以做什么,并以图形方式描绘其他浏览器将显示什么。 如果您是任何类型的 Web 开发人员,您都应该阅读 Pilgrim 的书,然后将其添加为书签,作为您在未来几年中会多次查阅的参考。

借鉴了对 Douglas Crockford 的《JavaScript:优秀部分》的当之无愧的赞誉,O'Reilly 正在出版更多此类书籍。 Crockford 的书仍然是最物有所值的,这很大程度上是因为他设法告诉您应该避免 JavaScript 的哪些部分。 但本系列中的另一本书,Ben Henick 的《HTML 和 CSS:优秀部分》可读、有趣,并且给了我信心(再次)尝试将 CSS 用于比基本框更高级的东西。

Randy Farmer 和 Bryce Glass 合著的《Web 声誉系统》也是一本出乎意料的有趣的书,同样由 O'Reilly 出版。 我的论文软件包含一个评分系统,所以我对这些作者就此主题的看法很感兴趣。 我没想到会有足够的内容来写满整本书,但我发现他们提供了有趣的思考素材,以及将评分系统实施和融入网站的实用考虑因素。 如果您正在考虑将此类评分系统纳入您的 Web 应用程序,那么这本书至少值得一看。

播客和屏幕录像

屏幕录像已成为交付教程和信息的越来越流行的方式。 因为每个人都可以看到演讲者的屏幕,所以可以跟随他们进行编程、显示图表甚至犯错误。 我已经成为屏幕录像的忠实粉丝,并且经常观看它们以更好地理解问题或学习新主题。

Ryan Bates 多年来一直在制作他出色的每周免费“Railscasts”系列。 我尽量观看其中的每一集。 特别是当我开始从 Rails 2 过渡到 Rails 3 时,“Railscasts”非常方便,它向我展示了我需要在哪里更改代码以及可以在哪里保持原样。

每周的“Rails Envy”播客已经不复存在,但 Gregg Pollack 和他在 Envy Labs 的同事现在正在制作一个名为“Ruby5”的每周两次的播客,该播客试图在不到五分钟的时间内总结最新的 Ruby 和 Rails 新闻。 它比“Rails Envy”更具新闻性,我们不再听到俗气(但在我看来很有趣)的音效和音乐,但信息是最新的且可靠的,并且以高度的思考和清晰度传递。

对我来说,今年最大的惊喜是我发现了 Bruce Momjian 关于 PostgreSQL 的网络研讨会(后来变成了屏幕录像/电影)。 如果您使用 PostgreSQL,我相信您会从这些出色、精心编写和清晰解释的研讨会中获得一些收获。 Momjian 在 EnterpriseDB 工作,EnterpriseDB 是一家 PostgreSQL 咨询和支持公司。 他的屏幕录像可在 enterprisedb.com 免费获取。

非计算机书籍

我并非所有时间都花在阅读计算机书籍上,尽管在任何看到我家庭办公室里堆积如山的书籍的人看来,情况可能就是这样。 在本节中,我将提到过去一年中我最喜欢的一些非编程书籍,尽管您会看到其中大多数仍然带有技术倾向。

本节中最可能与计算机相关的书是 Peter Siebel 撰写,Apress 出版的《程序员在工作》。 如果您阅读并喜欢《创业者在工作》,作者在其中采访了许多初创公司的创始人,那么您可能会喜欢《程序员在工作》,其中采访了许多令人印象深刻且著名的程序员。 听到其中一些程序员的发言,并从他们在多年的软件开发中获得的见解中学习,总是很有趣的。

我家中的每个人(包括我的孩子)都非常喜欢烹饪。 我经常说我烹饪的原因之一是它让我可以进行科学实验,并获得可食用的结果。 因此,我们家中最重要的一本书(通常被称为“本书”)是 Harold McGee 的《食物与厨艺》第二版,这本书似乎是关于食物和烹饪科学的历史、事实和有趣花絮的无尽集合。 好吧,如果 McGee 的书提供了科学,那么 O'Reilly 出版的新书《Geek 的烹饪》则提供了工程技术,提供了实用的建议、食谱、对厨师的采访以及您可以立即使用的丰富技术。 (我已经停止在将大蒜放入压蒜器之前去皮了。 谁知道呢?)如果您喜欢烹饪,或者只是想开始烹饪,我强烈推荐这本书。

另一本非计算机 O'Reilly 书籍是《你的钱:遗漏的手册》。 《遗漏的手册》系列由《纽约时报》专栏作家 David Pogue 创立,旨在为需要一些帮助但又不想付费或等待支持的用户提供参考指南。 最近,《遗漏的手册》系列已扩展到非计算机主题,包括《你的身体》(对人类生物学的精彩介绍)和个人理财领域。 由于我居住在美国境外,这本书的许多方面与我无关。 然而,这本书的总体态度是值得欢迎的,特别是对于我们这些在金钱方面不如我们应该做的那样自律的人来说。 我不会说这本书改变了我的生活,但它确实给了我许多关于如何更好地管理家庭财务的新想法,这对我们所有人都有好处。

结论

亚马逊最近宣布,其电子书的销量超过了精装书,我相信这一点。 电子书有令人信服的论点,尽管当我需要集中注意力或只是为了方便时,我更喜欢纸质版。 无论您使用哪种媒介阅读,让我向本专栏的读者建议我告诉自己年幼的孩子们的话,最重要的是阅读并始终学习新事物。 今年新书的丰收,我在这里只触及了皮毛,应该至少为来年提供足够的思考素材,甚至可能远远超出这个范围。

Reuven M. Lerner 是一位资深的 Web 开发人员、架构师和培训师。 他是西北大学学习科学博士候选人,研究在线协作社区的设计和分析。 Reuven 与妻子和三个孩子住在以色列的莫迪因。

加载 Disqus 评论