2013 年图书综述

作者:Reuven Lerner

我总是惊讶地听到关于出版业衰落的消息。没错,书籍和(唉)杂志经常在生死线上挣扎,新闻业也支离破碎。但与此同时,我们仍然看到大量高质量的书籍出版。过去的一年也不例外;我读了很多书,这些书真的启发了我,在技术、商业和生活等领域给了我新的想法。

所以,就像我每年这个时候大致做的那样,这里是对我去年读过的最有趣的书籍的综述。这不是一个有代表性的样本;它反映了我购买和收到用于评论的书籍的组合,通常是因为我看到或注意到它们。我预计有很多好书我还没读过,但这仅仅意味着它们很可能会出现在明年的清单上。这也意味着这份清单上几乎肯定有一些我在过去一年里第一次看到的书,但它们是在那之前出版的。

编程语言

作为一名定期开发软件的人,并且还向很多人教授编程,编程语言仍然是我喜欢阅读和学习的主题。我最常使用的语言——Ruby、Python 和 JavaScript——是源源不断的书籍的主题,其中许多不再是简单的教程,而是对特定主题的探索,这些主题将引起许多使用该语言的开发人员的兴趣。

Wes McKinney 撰写的《Python for Data Analysis》(O'Reilly 出版社,ISBN:978-1-449-31979-3)介绍了如何使用两个著名的 Python 库 NumPy(用于数值分析和一些高效的数据结构)和 Pandas(用于数据分析)来操作数据。阅读对这些库的描述,让我想起了用于数据分析和操作的出色的 R 语言,以及我们在 SQL 中知道(和喜爱!)的关系代数。Pandas 的优势在于,它允许您将分析集成到您已经使用的语言中,而不必学习一种新的语言。这本书充满了示例和实用技巧;如果您曾经想学习如何分析、操作和绘制您的数据,那么这是一本很好的入门书,它使用一种出色且易于阅读的语言。

Python 在许多方面都非常出色,其中包括它对于初学者程序员和经验丰富的专业人士来说都是一种优秀的语言。Jason Briggs 撰写了《Python for Kids》(No Starch Press 出版社,ISBN:978-1593274078),该书通过有趣的示例,包括使用 Tk 库的基于 GUI 的程序,向 10 岁及以上的儿童介绍编程。儿童友好的例子和幽默(例如,“想听一个荤段子吗?一只猪掉进了泥里!”)让我想要重新开始我给自己的孩子上的编程课。

Ruby,我日常工作中最常用的语言,是过去一年中几本优秀书籍的重点。也许最受赞誉的书是 Sandi Metz 撰写的《Practical Object-Oriented Design in Ruby》(Prentice Hall 出版社,ISBN:978-0321721334)。如果您熟悉面向对象编程原则,Metz 提到的那些原则对您来说并不新鲜。然而,Metz 提供的示例非常清晰,并且源于这些想法的实用指南和建议非常引人入胜,因此这本书是 Ruby 社区中每个人,甚至使用其他面向对象语言的人的必读之作。

与此类似的是 《Confident Ruby》,这是 Avdi Grimm 自行出版的电子书。Grimm 开篇就断言 Ruby 使软件编写变得如此容易,并且可以快速编写,以至于我们做得太快了,创建了难以理解的库。Grimm 的写作总是清晰而有趣,在这本书中,他分解了我们最常编写的代码类型——类和方法——并为我们提供了更快更好地完成这些代码的指南。

我对 Ruby 方面的最后一个选择是另一本自行出版的书,《Working with Ruby Threads》,作者是 Jessie Storimer。我必须承认,我是那些多年来不太使用线程的程序员之一(因为 Web 应用程序往往不太使用线程),所以我对线程有点反感。这本书真的让我大开眼界,了解了有关线程的问题、Ruby 在这方面的实现差异以及解决问题的替代方案。

作为一名 Web 开发人员,我倾向于使用的第三种语言是 JavaScript。JavaScript 是一种越来越流行的语言,既因为它无处不在,又因为实现速度越来越快。JavaScript 虽然有其缺点,但它将继续存在,所有 Web 开发人员都需要了解它的工作原理,而不是将其视为他们被迫使用的语言。

O'Reilly 出版社去年出版的两本书提供了示例和信息,您可以使用它们来提高您对 JavaScript 工作原理的理解和方法。Mark Ethan Trostler 撰写的《Testable JavaScript》(ISBN:978-1449323394)展示了多种不同的 JavaScript 代码测试技术,并描述了如何使用 PhantomJS 等工具将它们付诸实践。Callum Macrae 撰写的《Learning from jQuery》(ISBN:978-1-4493-3519-9)的目标读者是那些知道如何从 jQuery 内部做事,但不了解如何从底层 JavaScript 做同样事情的开发人员。对于已经使用 JavaScript 一段时间的人来说,这本书可能是不必要的,但如果您是“jQuery 开发人员”而不是“JavaScript 开发人员”,那么它很可能有助于您完成过渡并加深您对 JavaScript 的理解。

JavaScript 有许多怪癖,使得程序员很难在概念上从其他语言过渡过来。因此,许多书籍旨在帮助程序员完成过渡。Reginald Braithwaite 撰写的 《JavaScript Allonge》 就是一本关于这方面的优秀书籍,它既可以作为购买的 PDF 版本,也可以作为免费的 HTML 版本在线阅读。这本书风趣、有趣,并帮助程序员真正理解 JavaScript 的工作方式。我从 JavaScript 发明以来一直在以各种不同的方式使用它,但我仍然很喜欢 Braithwaite 这本书的风格和内容。

您可能还想考虑 Cody Lindley 撰写的《JavaScript Enlightenment》(ISBN:978-1-4493-4288-3),它更像是一本 JavaScript 编程范例的食谱,而不是更具叙事风格的《JavaScript Allonge》。

当然,还存在其他编程语言,我一直在尝试涉足这些领域。在过去的几年里,我稍微玩了一下 Erlang,尽管我不确定我会用它做很多工作,但我确实喜欢它的许多想法,并且发现尝试它很有用且具有启发意义。Fred Hebert 撰写的《Learn You Some Erlang for Great Good》(No Starch Press 出版社,ISBN:978-1-59327-435-1)是一本大部头(600 多页),介绍了 Erlang 语言及其许多方面,包括对测试的极大强调。

几个月前,我介绍了使用 Clojure 语言(一种在 JVM 上运行的现代 Lisp)进行 Web 开发的基础知识。Dmitri Sotnikov 撰写的《Web Development with Clojure》(Pragmatic Programmers 出版社,ISBN:978-1-937785-64-2)是对使用 Compojure 等库在 Clojure 中创建 Web 应用程序的温和介绍。这本书的目标读者是初学者,它似乎在介绍对 Web 开发有用的语言功能方面做得很好。如果您对这个领域感兴趣,并且发现在线教程不够详细或有帮助,那么这本书可能会对您有所帮助。

概念和技术

许多书籍的目标不是讨论特定的语言,而是讨论使用它们的想法和技术。其中最引人入胜的是 Paul Butcher 撰写的《Seven Concurrency Patterns in Seven Weeks》(Pragmatic Programmers 出版社,ISBN:978-1-93778-565-9)。它假定线程是困难和糟糕的,并着眼于线程的替代方案,以实现安全、并发的执行。我想说这本书是 Jessie Storimer 关于 Ruby 和线程的书籍的良好后续,但对于任何正在使用线程并希望找到一种更好的方法来消除基于线程的程序的危险和挫败感的人来说,这可能都是一本值得一读的书。

Avdi Grimm 今年出版的第二本书,《Much Ado about Naught》,是一本出奇有趣的读物,主题是我坦率地说从未想过要思考或谈论的主题。这本书是使用 TDD 技术编写的,对于不熟悉测试的人来说,也是对该主题的良好介绍。

最后,Facebook 和 LinkedIn 可能是著名的社交网络,但社交网络分析的世界已经存在多年,并提供了可以帮助您更好地了解用户的技术。Maksim Tsvetovat 和 Alexander Kouznetsov 撰写的《Social Network Analysis for Startups》(ISBN:978-1449306465)介绍了 SNA 的核心思想,然后演示了如何使用 Python 代码应用它们。如果您的 Web 应用程序涉及人群,您很可能可以从本书中受益,以了解他们是如何联系的。

框架

Web 开发人员越来越不只是使用编程语言创建应用程序,而是也在框架中创建应用程序。如今,Web 开发人员通常使用两个不同的框架,一个用于服务器端(例如 Ruby on Rails 或 Django),另一个用于浏览器端,用 JavaScript 编写(例如 AngularJS 或 Backbone)。

Pragmatic Programmers 继续推出其《Seven ___ in Seven Weeks》系列(包括上面提到的关于并发模式的书籍),推出了 Jack Moffitt 和 Fred Daoud 撰写的《Seven Web Frameworks in Seven Weeks》(ISBN:978-1-93778-563-5),其中涵盖了一些服务器端框架和一些客户端框架。与他们的其他书籍一样,其想法是让您体验和理解框架——不是成为专家,而是更好地欣赏它们的工作方式。正如学习一种新的编程语言可能是一种有益且具有启发性的体验一样,学习一个新的 Web 应用程序框架也是如此。渴望学习新范例的经验丰富的 Web 开发人员绝对应该看看这本书。

Rails 的铁杆开发人员会很高兴看到 Pragmatic Programmers 发布了 Jose Valim 撰写的《Crafting Rails 4 Applications》(ISBN:978-1-937785-55-0)的更新版。这本书甚至没有假装要教授 MVC、Rails 约定或几乎每本 Rails 书籍都以之开头的其他任何内容。相反,第一章从创建 Rails 插件开始,然后事情变得更加复杂和有趣。如果您正在处理复杂的 Rails 应用程序,或者只是想更好地欣赏和理解该框架,那么您很可能想阅读这本书。

用 JavaScript 编写的客户端框架继续流行。但在过去一两年中,我们看到了对全尺寸 MVC 框架越来越浓厚的兴趣,超越了 Backbone 及其同类产品提供的基本功能。这里的两大巨头是 Ember.js 和 AngularJS,我打算在未来几个月的专栏中对它们进行评测和讨论。似乎还没有关于 Ember 的书,但有一本名为 Brad Green 和 Shyam Seshadi 撰写的简短书籍《AngularJS》(O'Reilly 出版社,ISBN:978-1-449-34485-6)。这本书给出了一个很好的快速入门介绍,至少对我来说,它比官方文档和教程更容易理解。

其他读物

虽然我确实阅读(和收听、观看)大量关于技术的书籍,但我也尽量抽出时间阅读其他主题的书籍。

我的第一个推荐不是一本书,而是一本杂志。我从小就听说《纽约客》是一本以幽默漫画而闻名的杂志,但除此之外就没有什么了。我现在可以告诉你,在订阅了一年多之后,这本杂志本身很有趣、引人入胜且发人深省,其中包含一些我曾经有机会欣赏到的最佳写作。如果您想阅读各种有趣的主题——以及用漫画逗乐您的笑神经——我衷心建议您阅读《纽约客》。

我今年最喜欢的非技术书籍是 Jay Heinrichs 撰写的《Thank You For Arguing》(Three Rivers Press 出版社,ISBN:978-0385347754)。我发现这本书非常深刻、有趣且幽默,它教会了我修辞学的基础知识——说服的艺术。作者将修辞学分解为许多基本工具,然后使用这些构建块来演示如何提出令人信服的论点。

我现在去过中国两次,仍然对中国着迷。我在夏天阅读了三本有趣的中国相关书籍:《Factory Girls》,作者是 Leslie Chang(ISBN:978-0385520188),这本书描述了年轻女性离开乡村去寻找更好未来的现实;《China Airborne》,作者是 James Fallows(ISBN:978-0375422119),这本书以航空为切入点来理解现代中国的决策;以及《Last Days of Old Beijing》,作者是 Michael Meyer(ISBN:978-0802717504),这是一本关于中国政府如何拆除历史悠久的旧建筑并在其原址上建造新建筑的苦乐参半的书。

我希望您喜欢今年的图书综述。我一直在寻找新的图书推荐,所以如果您有任何书名可以推荐,我将非常乐意听到。

Reuven M. Lerner,一位资深的 Web 开发人员,提供 Python、Git、PostgreSQL 和数据科学方面的培训和咨询服务。他撰写了两本编程电子书(《Practice Makes Python》和《Practice Makes Regexp》),并为程序员发布免费的每周新闻通讯,网址为 http://lerner.co.il/newsletter。Reuven 在 Twitter 上的账号是 @reuvenmlerner,与他的妻子和三个孩子住在以色列的莫迪因。

加载 Disqus 评论