读完蛮失望的。
作者在前言中说:“I will take you beyond syntax”,要“get into the head of a language designer”。他写道“I won’t settle for a superficial treatment.” 那么这本书成功与否,就看作者是否实现了他的承诺。
在我看来,显然没有。
在前言中,作者说这本书会忽略细枝末节,着眼于每门语言最精华、独特的思想。的确,每章并没有一步步指导你怎样配置环境安装软件,但仍然把大部分篇幅花费在介绍基本语法上。书中几乎每个语言都或多或少带些函数式编程的味道,于是我们就看到作者一遍又一遍不厌其烦地介绍匿名函数和map、filter、fold、take, etc etc。list comprehension、lazy evaluation、future 等特性也反复出现——除去对又一新语法的猎奇外没有太多信息量。
或许是因为这些零零碎碎占去太多篇幅,介绍那些真正重要内容的部分就差强人意了(显然每章的电影人物类比也没起到什么作用)。随便举例:
Ruby 元编程只在第三天简单碰了一下。
Io 的 coroutine 究竟好在哪?只说 pre-emptive multitasking 不好,就自动证明“voluntarily suspend and resume execution”好?例子太刻意,完全不能说明问题。
Prolog 因为太特别,所以仅仅是读代码、做练习就很开阔眼界。但 unification 作为语言的核心概念,作者也只是简单提到,却从未解释。
Scala 的正则表达式就是每个字符串多了个方法.r,这就"first-class"了?
Clojure 的 protocol 从书中的介绍来看只是 Java interface 的替代品而已。如果是这样,何必浪费篇幅提它?(反正整个 interop 部分都略去了。)更重要的是 protocol 提供了在不牺牲性能的条件下解决 Expression Problem 的方案,忽略这点岂不是本末倒置。
介绍 Clojure 的并行机制是就直接扔出 STM、Atom、Agent,而不讨论三者在独立/协作、同步/异步等方面的异同,作者为 STM 给出的例子又完全可以换由 Atom 更简单地实现,实在不免让人困惑它们各自的用途。
Actor 从 Io 到 Scala 再到 Erlang,三章都没明确讲清 Actor 哪里好,在什么情况下适用。Io 一章只是说 shared state 不好,所以每个 actor 自己的 state 不和别人 share 就好?这也太 simple naive 了吧。后面的例子莫名其妙。Scala 一章用 Actor 解决了一个明明用(连 Java 都有的)future 解决起来更简单的问题。Erlang 一章也只是说 Actor 好是因为在分布式的系统中能更好地容错——但书中却没能给出一个用Erlang实现分布式系统的例子。
类似以上的例子不一而足。当然,作者说了他不可能样样都讲清,还是需要读者自己额外阅读。问题在于,我们需要额外阅读的,是基本语法,还是(作者承诺在书中讨论的)真正有趣的语言特性?这些语言特性中,作者该模模糊糊地“mention”很多,还是该集中篇幅剖析几个?
对于书中提到的每门语言,网上都有质量更高的入门指南和深入探讨,因此我不觉得这本获得Jolt大奖的书值得推荐。不过或许在寻找有趣的语言时可以参考一下它的目录。
我想,如果郑晖先生把他的《冒号课堂》前半部分扩展成这样一本书应该会有趣得多吧。
附:失去耐心前完成的前7章习题。。
https://gist.github.com/2922865
点子不错,缺乏洞见
对“点子不错,缺乏洞见”的回应
《七周七语言》热门书评
-
点子不错,缺乏洞见
30有用 1无用 逆铭睡眼惺忪地 2012-09-06
读完蛮失望的。作者在前言中说:“I will take you beyond syntax”,要“get into the head of a language designer”。他写道“I won’t settle for a superficial treatment.” 那么这本书成功与否,...
-
《七周七语言》电影整理
20有用 1无用 Dexter.Yy 2012-06-09
“与其说这是项目组,不如说是以机械化方式生产软件的工厂。那时的我,就好比某个酷爱电影的家伙,却居住于偏远小镇,镇上只有一家影院,放的还都是些所谓的‘大片’。直到我自立门户,开始自己生产软件时,我才真正领略到独立电影之妙。就像独立电影不断推动电影业发展那样,这些新兴的编程语言也在改变我们的组织以及编写...
-
语言比算法更重要
12有用 1无用 bear 2013-08-09
如果没有五线谱,作曲家只能用自然语言谱曲,那会是什么样子?翻一翻几何原本,看看欧几里德用自然语言写数学的公式和推导,那是多么蛋疼。五线谱和数学公式都是一种专门的语言。维特根斯坦说:凡是语言能表达的,都能说清楚,凡是语言不能表达的,都应该保持沉默。国内编程界长期被理聪主导,几乎每个程序员都听过这句话-...
-
为什么《七周七语言》选中的是这几种语言?
10有用 0无用 出版圈郭志敏 2012-04-09
从众多语言中,挑出本书包含的几门语言,这一过程也许不像你想得那么复杂。我们只不过发了些调查问卷,向本书的潜在读者请教了一番。调查数据汇总上来时,有八门语言入选希望最大。不过,我先是把JavaScript“踢”了出去,因为它实在是过于热门了,取而代之的是原型语言中热门程度仅次于JavaScript的I...
-
带您走进七周七语言的世界
10有用 1无用 出版圈郭志敏 2012-05-11
编者按在本文中,截选了七门各不相同的语言的概况,这七门语言,无论教还是学,对我们而言都是一个宏伟目标。书中的代码足以深刻阐释每一门语言的精髓。这七门语言都有非常优秀的支持社区,这也是我选择它们的原因之一。本书为你铺就的学习途径......第一周:Ruby有糖相伴好下药。——Mary Poppins松...
书名: 七周七语言
作者: [美] Bruce A·Tate
出版社: 人民邮电出版社
原作名: Seven Languages in Seven Weeks: A
副标题: 理解多种编程范型
译者: 巨成 | 戴玮 | 白明
出版年: 2012-5-8
页数: 246
定价: 59.00元
装帧: 平装
ISBN: 9787115276117