大多数人都是忙碌社会中沉浮漂游的一部分,就像始发站到终点站的有轨列车,每天来来去去,一成不变,连车上乘客的数目也能猜个八九不离十。这种生活秩序得可怕。但是大多数人更怕改变,更怕选择,更怕未知,探索未知需要勇气,而这恰恰是大多数人所缺乏的。
艺术家大抵是最能义无反顾地闯入迷雾的一群人。他们凭着对美的狂热的追求,一头扎进常人所无法理解的世界里,去流浪,去创造,去宣泄自己心中澎湃的热情。有时候他们也说不上为什么要这么做,就像一个人被扔进水里,他只能不停地游,否则就会死去。画家高更的名字想来大家都耳熟能详,他原是一名法国证券交易所经纪人,股市狂跌之后,他下决心投身艺术。后来由于各种原因离开了妻子,开始全身心投入艺术领域里探索,最终在荒蛮原始的大溪地(Tahitian)画出代表作《我们从何处来?我们是谁?我们向何处去?》。
1903 年高更因心脏病去世,16 年后,第一次世界大战结束之际,作家毛姆以高更的人生故事为原型,写出了《月亮与六便士》一书。
这本书枫影读的是上海译文出版社出版的,由傅惟慈老师翻译的版本,翻译基本上做到了信达雅,非常流畅,但是英文译作里面奇怪的人名、地名还是无法避免,傅老师有时候习惯用京腔儿化音也令人莞尔,不过总体翻译质量很高,这点是需要肯定的。
毛姆的人生经历与高更也有些许相似之处,他弃医从文,周游列国,是以作品中常带有异国风情,《月亮与六便士》中地中海的文化以及大溪地(又译塔希提)文明也是令人眼前一亮的东西。全书读下来有两点比较令人叹服的:
一是人物。毛姆非常擅长人物描写,寥寥数笔就能令人物跃然纸上,毛姆知道人物的言行远比体貌重要,配角对于这个人物的看法远比直接描写人物本身重要。作家非常擅长讲故事,他笔下的人物各个性格鲜明,又形色各异,上至上流社会的阔太太,下至底层社会的流氓水手,几句台词,几笔点睛,人物是奸是诈,是纯朴是狡猾,立时分明,活灵活现。
二则抽象情感描写的具象表达。如果说小说中的体貌描写是人物的皮肤,那么抽象的情感描写就是人物的心脏。情感描写最难的地方不在于说出我有多难过多高兴,而是如何把这份悲伤与开心描写得顺理成章。艺术家之所以给普通人难以捉摸的感觉,并不在于他刻意去装扮自己(那是真装逼),而是他的思维方式与意识形态与普通人完全相异。普通人所重视的所惧怕的在艺术家眼里却毫不在乎。
小说以第一人称转述来写,为了让这份不在乎成为自然而然的事情,作家安排了好几场转述者与主角的对话。在对话中产生了激烈的碰撞,然后再以转述者的视角对这份激动作出揣测与表达。艺术家本来就是不可知的,直接把话说出来就不具有信服力了,借转述者之口来表达使故事更加可信。另则转述者是以“非艺术内行”的身份出场的,他的视角与读者的视角是一致的,于是作家得以用外行人的眼睛去解读艺术。这种避重就轻的写法有点狡猾,也很通用,像动漫《棋魂》、小说《棋王》都采用了类似的手法,不从专业本身入手,而以通俗的角度去看艺术家对美的狂热追求,这种方式读者更容易接受,也更容易受感染。
但是这部小说成于 20 世纪初,有些地方可能我们今天读来会感到不太舒适,比如这部小说的节奏没有今天的作品来得紧凑,冗长的过渡读起来就显得拖沓与无聊。比如主角直到第六章才有了正式的体貌描写,于是此前五章事实上全部都是铺垫,这大概也是许多读者无法把前面部分读完的原因。
另一个问题是,小说的后半部分开始讲大溪地的故事的时候,这一部分其实是充满异国风情,可以一观原始文明与主角内心的美的追求产生碰撞的精彩部分,但是由于作者在写这部分内容的时候采用了另一些人物来做转述,转换太多次人物意味着作家需要花时间去刻画这些人物,读者则需要花成本去接受这些人物,简而言之就是累赘。尽管作家的妙笔仍然在这些小人物身上展开,幽默与讽刺不断,但是这些会心一笑是无法满足读者内心对于聆听主角故事的渴望的,毕竟主角才是读者们投资了最多感情的人物。这些小人物写得再鲜活,也不过是点缀之妙罢了,而笔墨花费得多了,就有点喧宾夺主了。
所以总的来说这部作品的亮点在作家辛辣的文笔与对生活赤裸裸的剖析,透过作家的视角看到的人物,既生动又可笑,既可恶又可敬,你随着人物的悲恸而悲恸,随着人物的愤怒而愤怒,再加上作家华丽丽的情感表达,读之仿如泛舟浪涛之巅,澎湃而不由自已。
15.12.24/凌晨
于自居
曾经《月亮与六便士》一直处于豆瓣小说标签类首页,常常能见到这个奇怪的书名,却一直不知道这是什么意思——因为书名与内容其实是完全无关的。一个说法是 Philip Carey 曾评论毛姆的代表作《人性与枷锁》中的主人公过于仰望月光而看不到脚下的六便士:
so busy yearning for the moon that he never saw the sixpence at his feet.
毛姆喜欢这个说法于是就以 The Moon and Sixpence 为下一部小说的名字。读完小说全文,在毛姆辛辣讽刺的文笔之下,我觉得这种做法还是挺很符合毛姆的风格的。
今年(2015)年初开始把“每周读书”搬到微信公众号上,基本上保持了每周一更的频率,于是今年很多朋友都在问我同一个问题:
你是怎么做到每周读一本书的?
问这个问题的朋友大部分是真好奇,也有些期望通过质疑来安慰自己的。今天我们生活在一个节奏飞快的社会里,大部分人每天都很忙,要赚钱要生活要绩效,大家听得最多的借口就是“没有时间”。
但是其实每个人内心都清楚,“忙”并不等于完成的事情多,往往整天忙得团团转的人反而是效率低下的表现。“每周读书”曾经介绍过的《番茄工作法》、《Getting Things Done》、《启示录》等书都有相关的阐述,今天 GTD 等时间管理方法的流行也正是基于大家日益繁忙而疲累的内心。
我不敢说自己是高效工作者,但是与其无可奈何的抱怨工作压力,不如学好时间管理(核心是管理自己),在繁忙的工作中不忘打开一扇明窗,我觉得比起蒙起头来往前冲要开心得多。起码回忆起过去这一年时间里,除了工作我还收获了阅读的美好时光。
所以我觉得把这一年的读书经历写下来也许会是件有意思的事情,起码再有朋友问我一样的问题,我可以直接把链接发给他(笑)。于是就有了这一期的 Q&A 🙂
Q1: 微信公众号里发的那些书你全都看过吗?
枫影: 是的,所有的书我都完整地看过,今年没有看完的书也有一些,里面不乏好作品,比如《自私的基因》,但是没有看完的作品我不会拿出来妄加评断。即使看完的书我也会做好读书笔记才开始动手写书评,没做过笔记就好像没看过这本书一样。
Q2: 你真的每周都读完一本书吗?你发的书不会是以前读过的吧?
枫影: “每周读书”最早是 2010 年底开始在博客上写,当时还在上学,经常泡图书馆一呆就是一下午,每周看完一本书不是什么难事。但是工作后就有点难度了,今年年初我开始写微信公众号之后才开始保持了真正的每周一更。每一本书都是看完后,做完笔记与书评后才发的。
更新的频率是每周一次,并不代表每周只读一本书。像读《三体》和《死亡通知单》这种系列小说可能需要两周时间,于是我会提前看多几本书,这样就可以给长篇的作品留出一定的 buffer。典型的情况比如我国庆要出去玩,于是一口气先读完了《24个比利》、《孤儿列车》和《无声告白》三本书。
当然这种情况也比较少,大部分时候一周一本书的节奏比较适合我,所以我选择的大部分作品都是长度适中的。一般找书的时候如果不是通过别人推荐过来的,我就会先找到感兴趣的话题,然后找到代表作家,再找该作家的代表作,这样选择的作品一般质量都不错,而且也不会太长。
Q3: 那你平时读书的时间都是怎么安排的?
枫影: 我在互联网公司上班,加班是常事。我们公司晚上 10 点后下班的的士费是可以报销的,所以很多同事会选择打的。但是我更倾向于做地铁,一般只要能赶上最后一班地铁(11点15分左右)我都会选择坐地铁上下班。
我每天花在地铁的时间大概有快一个小时的样子,这段时间就是很欢乐的阅读时间了。另外就是我从小有个技能,可以不用睡午觉。所以午休时间也是我非常期待的时间,可以用来看书,做笔记,写书评什么的。而且这段时间大家都在睡觉,非常安静,也不会有人来打扰你。(笑)
有的朋友问我读书为什么这么快?其实我读书的速度并不快,跟大家差不多,只是我每天可能有大约一个多小时的时间会用来读书,这样一周读一本厚度适中的书就不是什么难事了。
Q4: 可以说一下你是怎么做读书笔记的吗?
枫影: 上中学的时候我们学校有个做读书笔记的作业,要求每个月以作业的形式上交。这个传统在我这里算是保留下来了。每次读书,看到好的地方或者有争议的地方我都会用笔划出来,电子书就直接用高亮功能。读完之后我再用笔记本(这里安利一下德国灯塔笔记本,比只会做广告的 Moleskine 好多了,以后可以开坑聊一聊)把这些标记了的部分抄写下来。
做读书笔记相当于是二次阅读,同时也会在写笔记的过程中产生一些奇思妙想。一般我用 △ 标记原文内容,然后把自己的想法用 ○ 标记区分开来。
我的书评很多时候都是基于做笔记时产生的零星思考来写的。这样做虽然比较耗时间,大概我做笔记的时间跟阅读时间是 1 : 2 的样子,但是笔记有助于思考和记忆,我觉得虽然这个办法好像挺笨的,但是效果很不错,基本上可以比较好地把一本书消化掉。
另外就是现在大家用键盘代替纸笔的时候太多了,很多时候都忘记怎么写字了,做笔记也可以当做是练笔吧。
Q5: 你在微信公众号说每周推荐一本好书,你怎么知道你读的就一定是好书呢?怎么评价一本书是不是好书呢?
枫影: 我并不知道我一定能读到好书。但是我读书有个习惯,如果不够吸引人的书,我看了个开头就会放下。这样可能放下的书里面可能会有一些好书,但是能够吸引人一直读下去的书一般都不会是烂书。所以这是一个比较简单粗暴的筛选办法:要吸引人。
当然真正的好作品是能够让人放下了又拿起的。像《三体》和《月亮与六便士》都是看了好多遍开头没能看下去,最后还是把他们都看完了。
至于如何评价一本书则是一个比较复杂的事。读书是很主观的事情,萝卜白菜各有所爱,A 说好的 B 不一定喜欢。但是在众人的评价之中,总会有一些相对客观的东西可以提取出来。比如作者的写作技巧,单以小说为例,经典的三幕剧加上冲突与悬念,就可以制造情节紧凑的故事来。不过写小说有如厨师煮饭,厨艺再好也要有新鲜高级的食材相辅,小说的故事构思就是这个食材。
比如《死者代言人》这本书,有全然未知的猪仔外星人种族,有走向人生巅峰魅力爆表却被视为大魔王的安德,有星际旅行时间膨胀这样的工具,有藐视光速即时通讯的安塞波,等等这些原件都是极好的素材。
这里提到的只是小说类的冰山一角,还有散文类的,还有诗歌类的,自我反省类的,社会学类的,心理学类的,实用类的,各种各样的书籍。这些书虽然种类繁多,但是总会有一些相对客观的东西,可以评价一本书的好坏。
有朋友说能坚持不容易,我却觉得凡是需要用到“坚持”这两个字的,一般都是很难做下去的。因为坚持意味着痛苦,而读书对我来其实不是痛苦,是乐趣。每天的地铁时间和午休时间,读书无疑令人非常非常期待的一件乐事。
那么才能把“读书”变成乐趣呢?关注“枫言枫语∙每周读书”公众号,从每周的分享好书中得到读书的乐趣吧!
2015.12.20/下午
于自居
2022-08-20 原《每周读书》系列更名为《枫影夜读》
“产品经理”在互联网行业是一个非常特殊也非常重要的职位,国内互联网巨头中又以腾讯的产品经理最为强势。作为一名互联网从业者,工作数年间我一直对产品设计很感兴趣,却从来没有真正明白产品经理的职责到底是什么,什么样的产品经理才算是牛逼的产品经理。由于产品经理这个角色需要和几乎所有其他不同岗位的同事打交道,目标与优先级的不同常常让产品经理与其他角色产生冲突。到底是什么原因导致的争议?因为产品经理都是SB 吗?我认为以BAT的招聘标准来说,能够通过层层面试进来的人都是非常聪明的人,那么问题到底出在哪里?
2008 年来自美国硅谷的 Marty Cagan 写的一本书《Inspired:How To Create Products Customers Love》很好地回答了“牛逼的产品经理到底是怎样的”这个难题。Marty 的事业最早是从惠普实验室(HP Labs)开始的,后来他加入了网景公司(Netscape),后来随着公司被收购进入了 AOL,然后又去了 eBay,最后创办 SVPG 硅谷产品集团(Silicon Valley Product Group)。他的职业生涯基本都在与大公司打交道,Inspired 这本书的主要内容也是围绕在大公司中如何做好产品经理这个角色来讲。把 Marty 在书中所说映照到自己的工作中来,只觉作者字字珠玑,句句精辟。今年自己参与的项目遇到了不少问题,很多平时说不清道不明的事情到了作者书中豁然开朗。
2011 年国内的“七印部落”以类似众包的形式募集译者,把这本书翻译成中文,题为《启示录》,书名来自圣经的一章。我个人觉得这本书确实有点像产品经理的圣经,因为书中所描述的“产品经理”是耶稣一般的存在,现实生活中没有人有办法做到他的要求。但是这不代表我们就可以给自己的问题找借口,反而以圣贤为镜,可以更清楚地看到团队的不足,可以使整个项目团队朝向更为高效,和谐,高产出的方向前进,从而做出真正受用户喜爱的产品。
在我个人工作的几年时间里,合作过的产品经理各种各样,有挂着名字平时完全不管等到产品发布了就发个邮件邀功的老油条,有满腔热情但是毫无经验不知道怎么做产品的愣头青,有精于用户体验与设计以质量至上却忽视了项目进度的个人主义,但是更多的是中规中矩办事稳健却缺乏创意的螺钉。这些不同的人物各有优缺点,人无完人,我们应该做的是利用好优势,尽量改掉缺点。我觉得对于非产品职位或者对于刚刚入职产品一行不久的同学来说,Marty Cagan 的圣人标准很有明灯之用。就像作者在书中所形容的人们在大公司里的工作状态:
大部分人游荡在黑暗里,他们只知道抱怨,却从不想办法寻找电灯开关。
从这个角度上说,这本书就是电灯开关的地图。由于产品经理职责繁杂,书中涉及的方面也很多,我个人比较感兴趣的有几个点:
读这本书的过程中不断映照自己手头的项目,大部分时候我都觉得作者讲得非常到位,中肯实在。作者在大公司呆过这么长时间,深谙大公司之病。身在大公司不一定代表是好事情,往往在大公司里面做事反而资源会更加匮乏。作者针对大公司病提出了许多有用的方法,令人点头称道。对于这样一部本应相见恨晚的作品,我却觉得恰逢时机,因为早几年我可能还在上学或者没什么工作经验,无法把作者的描述与自己的工作经验结合起来读,估计会是云里雾里不知所云。所以反而我更推荐有一定工作经验的同学来读这本书。无论是产品也好,开发也好,只要是做互联网产品的同学,都应该知道真正牛逼的产品经理是怎样的,至少在自己说某产品做得不好的时候要给出实在的理由,以理服人。
15.12.17/夜
自居
年初“每周读书”同步到微信公众号,从 4 月开始基本上保持了每周一更的频率,至今已经介绍了 33 本书。当时在 71 期介绍的小说《The Martian》改编的电影《火星救援》最近也上映了,口碑非常不错。在电影院里看着 Watney 在荒无人烟的红色星球上艰难挣扎,还不忘搞笑,想起 2015 年就这样过去了,有些感慨。
这一年里在“每周读书”介绍的书目必须满足两个要求:
其实这一年里还读过几本不值得介绍的书,比如斯蒂芬金的烂作《手机》,以及科普类的《三百幅不可不知的世界名画》之流。我个人读书有个习惯,就是不好看的书看了个开头就放下了,所以基本上会在公众号里发出来的都是比较有看点的书。
以下是“枫言枫语·每周读书” 2015 年介绍过的书里,按照分类做个简单的 Top 排行。
小说类 科幻的《三体》和《死者代言人》都非常不错,推理类东野圭吾的《恶意》质量很高,阿加莎的小说第一次接触但是非常好读,不愧是推理小说的女王。日本战后文学的代表中,太宰治、三岛由纪夫的作品都相当深刻。当然还少不了今年大热的《火星救援》原作——《The Martian》,比起浓缩过的电影来说,小说里解释的东西要多得多。畅销书《岛上书店》讲述了一个很感人的故事,虽然有比较重的畅销书技巧的痕迹,但仍不失为感动读者的好书。
理论类 的书里面,《Being Mortal》(中译名《最好的告别》)以揪心的事例把如何面临衰老与死亡这个艰难的问题摆在读者面前,读来心情沉重,但是人生自古谁无死,无法避免死亡的情况下,怎样让自己能够有尊严地,开心地面对死亡才是最重要的课题。互联网业界的《增长黑客》把 Growth Hacking 这个概念介绍了一番,属于科普好书,Marty Cagan 2008 年写的《启示录》介绍了如何胜任产品经理这个职业技能要求很高却常常被人误解的职位,这么多年过去了,里面的核心内容仍然非常有价值。
2014 年来自以色列的尤瓦尔·赫拉利的《人类简史》出了英文版,于是开始风靡全球,14 年底中译本出版,这是一本刷新三观,超然物外,处处上帝视角的书。
文学类 中,《中国文学史》可以帮助读者整理本来就纷繁复杂的中国文学故事,文学体裁,以及发展的轨迹,虽然成书较早,但是对于中国古代的文学史点评到位,令人茅塞顿开。“创意写作书系”里James Scott Bell 的《冲突与悬念》讲述了畅销小说的写作技巧,将之映照于大部分畅销小说之上,发现的确如此,有助于读者对小说的优劣作出品评。诗歌类中余秀华的诗集因其朴素的乡村气息以及真实的个人情感,超然于虚伪浮夸的现代诗坛之外,只可惜外界大部分人对余秀华的传闻只限于对《穿过大半个中国去睡你》的揶揄与围观。海子由于卧轨而成名于那个特殊的时代,大多数人知道海子却源于对《面朝大海,春暖花开》的误解读。《海子诗全集》并不都是好诗,比如海子一直在坚持写作的《太阳》史诗,读起来就很不以为然,但是海子的短诗却是才华横溢的,读来颇感振奋。
增长黑客一词是 Growth Hackers 的中译名,指的是做 Growth Hacking 的人。Growth Hacking 主要是指创业团队通过数据分析,利用社交网络,创造性地设想出各种营销手段从而让名不见经传的小产品迅速成长为明星产品的过程。所以 Growth 是用户增长,Hacking 则有点黑科技的意思。可能非 IT 业界的读者一直以为黑客 Hacker 是一个贬义词,其实黑客是比较中性的,主要指技术特别牛逼的 geek,把技术用在不好的地方并不是黑客本来的含义(Steven Levy 的《Hackers》一书就讲述了黑客的来由)。所以总的来说,Growth Hacking 可以理解为用黑科技以低成本的方式获得超级快的用户增长。
其实 Growth Hacking 这个词早在几年前就已经在硅谷流行起来了,Growth Hackers Conference 也举办过好几届了,下一届将在旧金山湾区举办。但是说来惭愧,枫影还是最近才在IT 公论的播客上听到这个词,于是赶紧买了本《增长黑客》压压惊。
整本书看下来给我感觉就三个字:故事会。
作者范冰 @XDash 曾经是 WiFi 万能钥匙的产品经理,写过代码做过运营,各方面涉猎挺广,积累了不少互联网的故事,于是作者在这本书里面堆砌了大量的案例,从国外的 Hotmail, Twitter, Airbnb, 到国内的QQ,微信,美图秀秀,唱吧等应用,这里有许多非常有趣的故事,令人深受启发。
总体来说这本书的发散很好,案例真实可靠,但是理论沉淀不足,可以说是一本不错的故事会,但不要指望书里能给你什么方法论。这方面 Marty Cagan 的《Inspired: How To Create Products Customers Love》(中文版由七印部落翻译为:启示录)这本书要沉稳得多。一本纯理论的书会让读者打瞌睡,所以作者都会用实例来帮助论证自己的观点,即使是《自私的基因》这样类似学术论文的书,也会使用大量的模型以讲故事的方式对自己的观点进行论证,所以简单地说,讲故事是保证理论能够更容易地被读者接受的一种手段。从这个角度上讲,《增长黑客》这本书还是很有趣的。
近几年美国硅谷也好,国内中关村也好,互联网创业热不亚于当年旧金山淘金热。大量的创业小公司如雨后春笋般出现,每一个创业公司都打着“改变世界”的旗号在勇往直前。但是创业公司资源少是一个短板,人力也好经验也好金钱也好,都无法和拥有海量用户的巨头相提并论。于是如何顶着创业失败率高达四分之三的压力,以四两拨千斤,用最低的成本获取最迅速的用户成长就成了创业团队最为关切的问题。毕竟对那个经典的问题“你做的这个东西如果腾讯做了你咋办?”只有一个答案:天下武功,唯快不破。创业团队的优势就是快,只有利用好这一优势,在大公司进入新领域之前先把市场占了,才能获得一线生机。于是这种人人创业的热潮直接催生了行业对增长黑客的需求。
增长黑客涉及开发、设计、产品以及市场运营,简直就像万金油,而万金油一般都不太受待见。于是 Andy Johns, 这位曾带领 Facebook, Twitter, Quora 等大公司增长黑客团队的领袖人物,通过数据分析,改善用户体验细节,提出各种颇具创意的想法,从而帮助这些公司获得瞩目的成绩。他的成功让业界看到增长黑客不是海市蜃楼,不是挂羊头卖狗肉,真正的增长黑客是可以帮助公司获得显著的用户增长的。
但是这个行业还比较新,还没有人能够发展出系统的理论来。《增长黑客》这本中文书的出现在一个很好的时机——一个人人创业的时代,作者在书前的推荐序里面也贯彻了自己书中提到的理论:如果先渗透到那些具有社交影响力的人群当中,我们就能以此为基础向其他人扩散开来。于是作者在推荐序里面罗列了一大堆互联网大小V 的简评。推荐序这种东西大家都知道很水,很多人其实没看过书也会应邀写上一两句,虽然在部分读者看来这种做法有点滑稽,但是不可否认的是,这种营销手段是有效的——至少这本书在 z.cn 的排名不低。
要知道营销的对象不是互联网的从业人员这种小众群体,而是绝大部分会买单的普通人。有一句不雅的话叫“得屌丝者得天下”,我还能记得数年前因为 @Fenng 的一句话就跑去买凯文凯利的《失控》用来装逼,事实上我并没能看完这本书,也并不觉得这本书真的有趣到可以让我读完它。所以我个人的读书习惯是上来就读正文,跳过序和前言,读完全书才回过头来,看看这些水分里面能否发现些干货。
这本书的推荐序里没什么干货,但是书中的案例都是颇具启发的故事。所以对渴望获得用户增长的团队也好,个人开发这也好,甚至只是想了解互联网公司八卦的人也好,这本书都算值得一读的了。
15.12.09/中午
于 T.i.T
1905 年爱因斯坦提出狭义相对论之后无疑给科幻小说世界带来一大福音,从相对性原理和光速不变原理我们可以得出移动速度越快的物体,它所过的时间越慢这个颠覆性的结论。这个原理给科幻小说带来许多幻想空间,诞生了许多不错的作品。今天我们要介绍的是 1987 年包揽了科幻文学两大最高奖项的作品——《死者代言人》,这部作品就巧妙地利用了相对论的“时间膨胀”原理。
有些读者可能以为相对论还只是处于理论研究阶段,事实上我们的 GPS 卫星由于绕地飞行的速度很快,每天都需要做一次时间校正,这就是现实中相对论应用的例子。但是这种差距还比较小,如果我们的宇宙飞船航行速度快到可以接近光速,当我们坐在飞船上去宇宙旅行的时候,可能只是出去玩了一天,回到家自己的兄弟姐妹都已经变成老人家了。
这种有趣而新颖的体验会给我们人类社会带来什么样的冲击是非常有趣的事情,于是Orson Scott Card,《安德的游戏》的作者,就以这种方式把虫族终结者安德 (Ender) 带到三千年之后,扔进了续作《死者代言人》(Speaker for the Dead)一书中。
在第 99 期的每周读书中我们曾介绍过,作者先是想写《死者代言人》,然后顺便把《安德的游戏》给写了的。其实这个说法并不严密,早在 1977 年,作者就已经写了短篇版的《安德的游戏》,故事从安德在战斗学校组成飞龙战队开始,一直到虫族战争结束。这个短篇故事非常完整,没有姐姐华伦帝,没有哥哥彼得,也没有战争结束后的事情,情节紧凑,故事悬念丛生,一路推到最终幕,非常流畅,是一篇不错的作品。
后来作者从葬礼获得了灵感,觉得大家对逝者的致辞都是自己的伪饰,逝者已矣,大家只是单纯地想把他幻化为更容易被世人接受的形象罢了。于是作者觉得应当写一部真正给死者代言的书,哪怕真相惊天动地,也要一字不差地说出来。
这时作者的一个朋友问他为什么不写一个安德的续集,于是作者就开始构思怎么才能把安德带到这本书里去。就在作者写完提纲准备开始《死者代言人》的创作的时候,他忽然发现开头根本写不下去。因为安德不会莫名其妙突然就变成死者代言人,要解释这一段故事就必须写一个超级长的开头。于是作者灵机一动:不如把《安德的游戏》从短篇扩充成长篇吧!
把短篇小说扩充成长篇这件事情,很好地解答了我们在 99 期中遇到的几个疑问:一是小说开头进展缓慢有些无趣:这是由于短篇版没有这段开头,为了解释安德为什么要去战斗学校以及三兄妹的羁绊,才补充了个超级长的开头;二是华伦帝和彼得这两兄妹联手比正品的主角还要厉害,但是作者又非常吝惜笔墨:这当然是因为这两个人本来就不存在,存在的意义只是为了解释安德为什么要到另一个星球去。因为地球有彼得安德不想去,刚好华伦帝想去虫族星球于是安德就顺理成章一起去了。三则是结局冗长,其实虫族战争结束后小说应该就可以结束了:短篇里是在虫族战争后就结束了的,但是为了解释续集,才有了超级长的结局,唉。
当然这部《安德的游戏》也拿下了雨果奖和星云奖,不过基于上期我们说的,我觉得事实上这部扩充后的前传水平一般,反而短篇版本非常不错。
尽管作者很努力想要把《死者代言人》这部续作写成一部独立的小说,读者们即使没看过前作也能够理解、沉入故事体验,但是我个人认为如果没有前作的铺垫,安德的形象会相对薄弱一点,说服力可能就没那么强。
不过即便如此,这部续作也是比前作好得多的作品,是一部真正担得起雨果奖与星云奖的作品。在前作中,安德只是一个处处受限的小孩,完全没法发挥最高统帅的能力,所以人物魅力就打了个折扣。另外前作的场景却主要集中在战斗学校狭窄的室内,对于一部科幻小说,宇宙空间的广袤对故事场景的帮辅作用巨大,这点上基本无用了。最后是科幻小说中时间的变化,《三体》是通过冬眠这一手段来穿越时间,在《安德的游戏中》则是让上一次打赢虫族的人类最高统帅马泽坐在光速飞船里,利用相对论来实现穿越时空。然而也只是提了一下而已,有点小气。
直到《死者代言人》中,作者终于得以把以上三点发挥得淋漓尽致。在打赢虫族战争之后安德已经是全世界人类的最高统帅,他享有的权力是无人能及的,经过多年的光速旅行之后,时间已经过去了三千年,而安德也已经三十多岁。这时候,天才步入中年,多了隐忍与稳重。虫族战争是人类世界的重大事件,安德由此蜚声四海,成为一代大魔王。再加上安塞波网络中诞生的“人工智能”——简的辅助,安德已经是三千年后的超人,人格魅力达到顶峰,与当年的小屁孩已不可同日而语。
光是这个人物设定就已经令人兴奋,而三千年后的人类,足迹已经踏入宇宙,除了虫族、人工智能简之外,还有另一个外星异族——猪仔(Pigges)也站上了舞台。猪仔是一个幻想的新种族,他们的语言是怎样的,社会结构是怎样的,人类与猪仔的相互影响是怎样的,这里面充满了无限可能,作者很机智地选择了外星人类学家的视角,一点一滴的探索都是令人惊喜的发现。
本作中有频繁的时空旅行,有藐视光速的即时通讯手段安塞波(?ansible),人生巅峰的主角安德,有未知的落后外星种族猪仔,所有的高级素材已经齐备,就看作者如何下笔了。
《死者代言人》的悬念设计不再像前作一样简单直白有如少年漫画,而是含蓄了隐约,在故事的推进过程中埋下盲点,像推理小说,撩动读者的心弦却迟迟不揭露真相,吊足读者胃口。
由于有了时间旅行这一利器,作者可以轻易操纵几十年的人生,用于铺垫一个悲剧,一个真相,一个死者一辈子不曾道出的故事。这本书的英文名是 Speaker for the Dead,所以本作的主要目的是解开死者的谜团,不是群众想象的美好,也不是当事人刻意的谎言。为了解开这个真相,需要有一个于世独立的第三者来挥下利剑。
于是作者在故事一开始就在猪仔的星球上安排了一场谋杀,死者是研究猪仔的外星人类学家皮波。这场冲突直接把人类与外星文明直接对立起来,把死者代言人安德推入这场混乱之中。
由于时间旅行的特性,作者有足够的时间来安排安德旅行期间猪仔星球上故事的变化,尽管人类社会最终判定猪仔这个落后文明不是蓄意谋杀皮波,但是人类与猪仔之间毕竟留下了裂缝。在安德赶往这个地方期间,事态有了很不一样的变化。这些变化出人意料,又在情理之中,给安德留下了许多难解的问题。
我觉得安德到了这个地方之后就像柯南一样,一点一点地用侦探之眼解开故事的迷云。这点上,较之前作只是蒙着头往前冲杀,安德要成熟了许多。在《死者代言人》一作中,行事特立的安德更容易吸引读者的喜爱,古板腐化的教会与政府更容易令读者产生对立心态,二者的冲突就是读者内心的冲突,人类与猪仔的复杂情感就是读者内心的复杂情感,达到这样的阅读体验很不容易,但能够做到的通常都是好作品。
小说之所以能令人沉浸其中是因为他基于我们的现实社会,却充满幻想的体验,我们可以代入到角色当中,去感受我们平时可望而不可及的事情。随着安德做星际穿越,以安德视角去看待外星文明,站在安德身边与僵化的政府怒目横对,我们的内心充满了各种渴望,各种梦想。
现实是局限的,现实是孤独而平凡的。我们有一颗不甘于平凡的心,却身处于这个平凡的世界。所以我们阅读,我们在阅读中体验到灿烂的幻想与精彩。科幻小说是基于科学的幻想,也是我们基于现实的梦。
15.11.28/下午
于自宅
2022-08-20 原《每周读书》系列更名为《枫影夜读》
为什么基于原著改编的电影电视剧总是无法满足书迷读者?为什么看习惯了漫画之后第一次看到动画觉得配音演员的声线好奇怪?当我们阅读小说的时候,我们倾慕于小龙女的清丽脱俗,我们沉湎于黄蓉的古怪精灵,我们惊叹于洛神的柔情绰态,然而我们真的看清了这些倾城美女的容颜了吗?
来自美国 Alfred A. Knopf 出版社的艺术副总监 Peter Mendelsund 通过 What We See When We Read 一书回答了这一问题。?Mendelsund 是一名书籍封面设计师,这部作品的装帧也同样出自其手,在我看来,这本设计多于文字内容的书之所以能在豆瓣拿下 8.1 的高分,在 Good Reads 拿下四星,一部分是出于其设计多于内容的独特,另一部分则是 Mendelsund 的个人魅力所致。
Mendelsund 并不是科班出身的设计师,他原是一名钢琴演奏家,日子过得并不宽裕。后来他因缘际会找到企鹅出版社的封面设计师 Chip Kidd,带着自己设计的音乐专辑封面。没想到 Chip Kidd 很欣赏 Mendelsund,于是他就忽然从一个音乐家转行成为设计师了。他擅长于使用简单的文字、几何图形、明丽的色块来做封面设计,这种独特的风格也给书籍装帧带来一股清丽之风。
至今 Mendelsund 已经为许多书籍做过封面设计,我们可以在 http://covers.petermendelsund.com/ 这里找到他的设计,里面甚至有余华的 China in Ten Words。
Mendelsund 有一个非常重要的原则:封面设计要忠于文字。Mendelsund 喜欢阅读,他会阅读每一本将由他设计封面的书籍,从中找出具有代表性的,能够视觉化表达的东西,然后融入他的涉及。
Reading with a mind to designing a jacket is very different from just reading. When I’m reading for work, I’m looking for something described in the book that will be reproducible visually and that will serve as an emblem for the entire book—a character, or an object, or a scene, or a setting. That’s not the way one reads when one is simply immersed in a book.
于是他在积累设计经验的同时,也阅读了大量的作品。2014 年 Mendelsund 出版了两本书,一本是关于书籍装帧设计的 Covers,另一本就是关于阅读的 What We See When We Read。前者谈设计,后者谈阅读。二者其实有相互印证之处,比如作者喜欢用的抽象图形,为什么不使用真实的人物照片来作为封面设计呢?我记得我第一次看到《孤儿列车》的封面时,我一方面为靠着火车窗的小女孩忧伤的眼神为感染,一方面又为封面把人物的形象过于具体地展现在我面前而感到不舒服。作者认为,我们在阅读的过程中虽然自认为能够认清人物的形象,但是事实上都无法清楚地描绘出人物的体貌,你能够记得人物的性格,人物的动作,以及事件,但是不管小龙女也好黄蓉也好,在你的脑海里她们都是模糊的。而这一点,正是阅读的精彩之处,是阅读提供给读者自由想象的空间,那些以人物照片为封面的设计,反而剥夺了读者想象的权利。
由于阅读的不确定性,作者在给本书设计封面的时候,也采用了简单的文字搭配钥匙孔的图案,仿佛要往钥匙孔中窥视什么。在书中,作者试图以一种新颖的手法,用插画的视觉呈现来表达文字本身无法明确的事情,很有意思。
但是作者是一个优秀的设计师不代表就一定是个优秀的作家,老实说这本书的文字部分有点无聊,有点啰嗦,所以单就内容来说,这本书比较一般,但是设计给这本书加分不少,可以说这本书的重点在设计,而不在内容。
2015.11.21/下午
于自宅
本文译自:http://www.raywenderlich.com/79149/grand-central-dispatch-tutorial-swift-part-1。Github 上有一篇此文 Objective-C 版本的翻译,看完没有什么印象,所以干脆把 Swift 版本的翻译一遍。
尽管 Grand Central Dispatch(或简称 GCD)已经出来好一阵子了,但还是有些开发者没能完全理解 GCD 的原理。这也是可以理解的,并发本来就是开发中比较难懂的部分,GCD 的 API 看起来就像锋利的尖角扎入 Swift 平滑的世界中。
本文将分为两部分,深入浅出地讲解 GCD。第一部分会讲解 GCD 能用来做什么,包括一些基础的用法。第二部分会讲解更多 GCD 的高级用法。
GCD 是 libdispatch 的别称,是 Apple 提供的用于在多核 iOS/OS X 机器上执行并发代码的库。GCD 将带来几个好处:
在了解 GCD 之前,你需要确保完全理解多线程和并发相关的几个概念。这些概念可能比较模糊或者区别不大,容易搞混,所以请花点时间复习一下这几个概念。
这两个词描述的是任务执行时彼此间的关系。串行执行的任务,每次只有一个任务在执行。并发执行的任务则有可能同时执行多个任务。
在本文中你可以把一个任务当作是一个闭包(Closure)。不过实际上在 GCD 里你是可以用函数指针来执行任务的,不过大多数情况下要麻烦的多。直接用闭包就简单多了!
不清楚 Swift 中的闭包是什么?闭包是是指自给的,可以被调用、存储和传递的代码块(Closures are self-contained, callable blocks of code that can be stored and passed around. )。当一个闭包被调用的时候,它们看上去就是个普通的函数,可以传参数进去,也可以有返回值。另外,闭包作用域外的变量如果被闭包使用到了,就会被闭包“捕获”——就是说在闭包内可以看到外部变量并记住外部变量的值。
Swift 的闭包跟 Objective-C 的 block 很像,并且两者是可以互相转换的。唯一的限制就是,ObjC 代码不能使用 Swift 闭包中暴露的 Swift-Only 的特性,比如元组(Tuple)。但是在 Swift 中使用 ObjC 的 block 是没有任何限制的,所以你在本文中看到 ObjC 的 block 的时候,你可以完全可以直接替换成 Swift 闭包。
这两个概念描述的是一个函数何时会把控制权返回(Return)给调用者,当交还的时候,有多少工作已经完成了。
一个同步函数会在它执行的任务完成之后返回。
一个异步函数则不会一直等到任务完成,而是立刻返回,同时执行任务直到结束。因此,异步函数不会阻塞当前线程。
请留意,当你看到同步函数会“阻塞” block 当前线程的时候,请不要和名词 block 混淆。(译者注:中文无此问题,这里省略 100 字…)。
临界区值得是不能被并发执行的代码块,也即不能被两个及以上的线程同时访问。这通常是因为这段代码访问了一份共享资源,而且这个资源在被访问的过程中不能中断。
当软件系统的行为依赖于无法控制的事件的执行顺序时(比如程序并发任务的的执行顺序),我们称这种情况为竞争条件。竞争条件会产生无法预测的结果,通常代码走查也没法发现明显的问题。
如果两个(有时候多个)线程都在等着对方完成任务才能执行自己的任务时,这种情况我们成为死锁。第一个线程要等到第二个线程执行完才能执行,而第二个线程则在等着第一个线程,所以两个都永远无法执行。
线程安全的代码可以被多个线程或者并发任务安全地调用而不会引发任何问题(比如数据损坏,崩溃之类的问题)。没有线程安全的代码同一时间内只能被在一个上下文中运行。举一个线程安全的例子:
这个数组是只读的,所以你可以在多个线程中同时使用而不会有任何问题。相反的,如果你声明一个可变数组:
则这个数组就不是线程安全的,它可以同时被多个线程访问和修改,造成不可预知的后果。可变的变量和数据结构在同一时间只能被一个线程访问。
一次上下文切换是指在一个单核处理器中,保存和恢复不同线程的执行状态的过程。在编写多任务应用的时候,这个切换是很常见的,但是这种切换也会带来额外的开销。
并发和并行经常一起被提及,所以简单解释一下这两者的区别还是很有必要的。
独立的并发代码块是可以被“同时”执行的,但是如何实现“同时”却是由系统决定的——甚至根本就不是“同时”执行也是有可能的。
在多核设备上,多线程可以在多个 CPU 上并行执行;单核设备为了实现并发,就得先运行一个线程,然后做上下文切换(Context Switch),从而实现线程和进程切换。这种切换一般进行得非常快,让用户感觉像是同时在运行多个线程一样。详见下图:
所以,虽然你可以使用 GCD 的接口来编写并发代码,但是 GCD 才是真正决定是否使用并行实现的人。并行要求并发,但是并发并不一定能够保证并行。
更深一层地说,并发设计其实是结构的设计。如果你带着 GCD 的思维去编写代码,你就得小心地设计代码的结构,暴露的接口要考虑可以同时执行和不可以同时执行的代码。如果你想更深入地探究这个课题,你可以参考 Vimeo 上 Rob Pike 的这个演讲。
GCD 提供了多个 dispatch queue (分发队列,由于这里跟代码同名,直接使用英文更容易理解,下文遇到此名词都使用英文) 来处理提交的任务;这些队列负责管理使用 GCD 接口提交的任务,并以先入先出(FIFO)的顺序执行。这就保证了最早加入队列的任务会第一个被执行,第二个添加的则第二个被执行,以此类推。
每一个 dispatch queue 都是线程安全的,也就是说你可以同时在多个线程操作同一个队列。当你理解 dispatch queue 是如何给你自己的代码提供线程安全的时候,GCD 的好处就显而易见了。这里线程安全的关键在于选择正确类型的 dispatch queue,以及分发函数(dispatching function)。
串行队列中的任务每次执行一个,只有等上一个任务执行完了才会开始执行下一个。而且,你并不知道两个任务结束与开始之间的间隔时间你是不知道的,如下图所示:
这些任务什么时候开始执行完全是由 GCD 内部控制的,你唯一能知道的事情就是,GCD 保证了这些任务会按照进队列的顺序执行,而且每次只执行一个。
由于顺序队列里面不可能有两个任务并发执行,所以这个队列的任务就不会有同时访问临界区的风险;这样的实现保证了在这些任务中不会有由于竞争条件产生的临界区问题。所以如果临界区只会被队列中的这些任务访问,你就可以说这个临界区是安全的。
并发队列保证任务开始执行的顺序跟它进入队列的顺序相同……而且,这就是并发队列唯一能保证的事情!所有的任务可以以任意顺序结束执行,而且你完全不知道开始下一个任务之前的时间间隔是多少,甚至不知道任意时刻到底有多少任务在同时运行。所以,这又是一个完全取决于 GCD 的事情。
下图的例子展示了一个由 GCD 执行的有4 个任务的并发队列:
注意到上图中 Task 1 要等到 Task 0 开始执行了好一会儿才开始执行,但是 Task 1, 2 和 3 之间的间隔却很短,一个紧接着另一个。还有,Task 3 在 Task 2 之后才开始执行,但是却比 Task 2 更早结束。
任务什么时候开始执行是完全取决与 GCD 的。当两个任务的执行时间有重叠的时候,GCD 会决定这两个任务是应该分开两个核执行(如果有空闲的 CPU)还是使用上下文切换在一个核中执行两个不同的任务。
有意思的是,GCD 给顺序和并发类型的队列各提供了至少五种特殊的队列供你选择。
首先,系统提供了一个特殊的顺序队列:main queue。跟所有的顺序队列一样,该队列中同一时间只执行一个任务。不同的是这个队列中所有的任务都保证会在主线程中执行,主线程也是唯一一个可以更新 UI 的线程。这个队列也是用来给 UIView 对象发消息(send message,这里的 message 应该理解为 ObjC 的 message),或者发送通知(notifications,这里的通知应该指 NSNotification)。
系统还提供了几个并发队列。这些队列都有他们自己的 QoS 类(Quality of Service)。QoS 类主要用来描述任务的执行目的以便于 GCD 决定这些任务的优先级。以下是 QoS 类:
这里要注意苹果的 API 也会使用这些全局的 dispatch queue,所以你提交的任务并不是这些队列的唯一任务。
最后,你也可以创建你自己的顺序队列和并发队列。也就是说,你至少需要处理五个队列:主队列,其他的四个全局队列,以及你自己创建的自定义队列。
以上就是 dispatch queue 基本的样子。
使用 GCD 的艺术在于如何针对你提交的任务选择合适的队列以及分发函数。而学习这项技能最好的办法就是跟着本教程过一遍接下来的示例项目,我们也会在这个过程中提供一些通用的建议。
由于本教程的目的主要是如何优化以及如何安全地使用 GCD 编写多线程代码,我们的示例教程就由一个现成的项目开始,这个项目叫 GooglyPuff。
GooglyPuff 是一个还没经过优化而且没实现线程安全的应用,这个应用使用 Core Image 的人脸识别 API 把漫画眼睛贴到照片里眼睛的位置上。图片可以从系统相册选择,或者从预设好的 URL 下载。
整个项目可以从这里下载:GooglyPuff_Swift_Start_1
下载解压后,在 Xcode 中打开并运行,你会看到如下界面:
我们注意到点击“Le Intenet”去下载图片的时候,一个 UIAlertController 立刻就弹出一个警告框,后面我们将一起修复这个问题。
这个项目有四个主要的类:
现在让我们回到应用,选择从系统相册或者 Le Internet 下载图片。
留意一下从你在 PhotoCollectionViewController 中点击一个 UICollectionViewCell 到弹出一个新的 PhotoDetailViewController 需要多久;这里我们应该可以注意到有明显的延迟,尤其是当你查看一张很大的图片或者使用的是很慢的机器的时候。
UIViewController 的 viewDidLoad 方法是最容易堆积一大堆代码的地方,经常导致 view controller 需要等很久才能出现。所以我们要尽可能把不重要的任务放到后台去完成。
这听起来是 dispatch_async 可以做的事情!
打开 PhotoDetailViewController,把 viewDidLoad 方法修改成以下实现:
// Resize if neccessary to ensure it's not pixelated
if image.size.height <= photoImageView.bounds.size.height &&
image.size.width <= photoImageView.bounds.size.width {
photoImageView.contentMode = .Center
}
dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0)) { // 1
let overlayImage = self.faceOverlayImageFromImage(self.image)
dispatch_async(dispatch_get_main_queue()) { // 2
self.fadeInNewImage(overlayImage) // 3
}
}
}
[/sourcecode]
上面的代码到底干了什么呢:
这里要注意我们用了 Swift 的尾随闭包语法(Trailing Closure Syntax),给 dispatch_async 方法传参的时候可以在括号后面直接写闭包的代码,这种写法可以让你的代码看上去更简洁一些。
现在重新编译运行这个工程,选择一张图片,你会发现view controller 展示比之前快多了,过了一会才把动画眼睛加上去。这带来一种很好的体验,你可以感受到照片被修改前后的对比带来的冲击。而且,如果你尝试加载一张特别大的图片,应用也不会在加载 view controller 的时候被卡住,这大大增加了应用的扩展性。
我们上面也提到了,dispatch_async 会把闭包里的任务加到队列里面,然后函数立刻返回。GCD 会决定什么时候执行这个任务。所以对于网络请求或者耗CPU 的任务你应该用 dispatch_async,这样才不会卡住当前线程。
以下是几条关于在使用 dispatch_async 函数时应该选择什么类型队列的建议:
你可能会发现每次使用 dispatch_get_global_queue 还得传一个 QoS 类作为参数来获取对应的队列,这种写法有点累赘。这是因为 qos_class_t 被定义成一个结构体,而且 value 属性是 UInt32 类型,传参的时候还得转成 Int 类型。所以通过给 Utils.swift 文件添加几个 helper 变量我们可以更方便地获取这些全局队列:
var GlobalUserInteractiveQueue: dispatch_queue_t {
return dispatch_get_global_queue(Int(QOS_CLASS_USER_INTERACTIVE.value), 0)
}
var GlobalUserInitiatedQueue: dispatch_queue_t {
return dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0)
}
var GlobalUtilityQueue: dispatch_queue_t {
return dispatch_get_global_queue(Int(QOS_CLASS_UTILITY.value), 0)
}
var GlobalBackgroundQueue: dispatch_queue_t {
return dispatch_get_global_queue(Int(QOS_CLASS_BACKGROUND.value), 0)
}
[/sourcecode]
回到 PhotoDetailViewController 类的 viewDidLoad 方法,把 dispatch_get_global_queue 和 dispatch_get_main_queue 换成我们刚加的 helper 变量:
这样修改后的代码可读性更好,更容易看出是使用了什么类型的队列。
让我们回想一下这个 App 的用户体验,有可能用户刚打开这个 App 的时候并不知道该怎么操作对吧?所以,如果 PhotoManager 类里面还没有照片的时候,我们可以先展示一个提示页面。而且这个提示不能展示得太快。
延迟一秒钟再展示这个提示页面应该可以满足我们的需求。
把以下代码添加到 PhotoCollectionViewController.swift 文件中:
当 UICollectionView Reload 的时候,viewDidLoad 方法会被触发,从而调用 showOrHideNavPrompt 方法。
编译运行一下,我们将会看到延迟一下之后这个提示页面就弹出来了。
dispatch_after 方法就是一个可以设置延迟调用的 dispatch_async 方法,你始终无法精确地控制真正的调用时间,dispatch_after 函数返回后你也无法取消这次调用。
那么什么情况下用 dispatch_after 方法比较合适呢?
单例,让人又爱又恨的东西,它们就像网上的猫咪一样充斥整个世界 :]
单例最常令人担心的一点就是:它们经常是非线程安全的。而单例又常常是被多个 controller 同时访问的。PhotoManager 就是一个单例,所以我们还得考虑给它加上线程安全的代码。
这里主要有两个时机是需要我们保证线程安全的,一是单例在初始化的时候,另一个就是对单例进行读写操作的时候。
我们先考虑第一个问题。因为 Swift 在全局作用域中初始化变量时的特性,第一点变得很容易解决。在 Swift 中,全局变量是在第一次被访问的时候进行初始化的,而且是保证初始化过程是原子的。就是说,初始化代码是被当做临界区对待的,知道这段代码执行完了,其他的线程才能访问这个变量。Swift 是怎么做到这一点的呢?在我们看不到的代码里面,Swift 是使用 GCD 的 dispath_once 方法来实现的。有兴趣的同学可以看看这篇博客:https://developer.apple.com/swift/blog/?id=7。
dispatch_once 会以线程安全的方式执行闭包,而且只会执行一次。如果有一个线程正在执行临界区代码——这个任务在 dispatch_once 方法中——那么其他线程就会暂时被 block,直到临界区执行完毕。一旦这个闭包执行完毕,其他线程将不会再次执行这个代码。再加上用 let 把单例的实例变量声明成一个全局常量,我们就可以保证在以后的代码中这个实例不会被修改。从这个角度上看,所有的 Swift 全局常量实际上都是单例,而且自带线程安全的初始化方法。
但是我们还是要考虑读写操作的线程安全。Swift 虽然可以用 dispatch_once 保证初始化代码是线程安全的,但是这个方法没法保证它的成员变量都是线程安全的。举个例子,如果一个全局变量是一个类的实例,当这个类在内部操作这个变量的时候,你还是有可能遇到临界区问题。所以我们需要用别的方法来保证这些操作是线程安全的,比如说同步数据访问,下面几个章节我们将会讲到。
实例的线程安全问题并不是只有单例才需要关心。如果一个单例的属性是一个可变的对象,比如说 PhotoManager 的 photos 数组,那么你就得考虑这个对象本身是否线程安全的。
在 Swift 中,所有用 let 关键字声明的变量都是只读的,而且线程安全的。var 关键字声明的则表示可变而且除非这个数据类型的设计本来就是线程安全的,否则都是非线程安全的。Swift 的集合类型如 Array 和 Dictionary,如果声明是可变的就是非线程安全的。那么基础的容器类型呢?比如说 NSArray 这种类型?他们是线程安全的吗?答案是——“恐怕并不是”!Apple 官方维护了一个线程安全与非线程安全类型的列表大家可以瞧瞧。
虽然说多个线程同时读一个 Array 变量是安全的,但是如果有一个线程正在对它做写操作就悲剧了。现在回到我们的示例工程,这里面我们的单例都还没有做这样的保护。
比如我们来看 PhotoManager.swift 中 addPhoto 方法:
因为这个方法修改了一个可变数组,所以这是一个写方法。
然后我们在看 photos 这个属性:
这个属性的 getter 方法反悔了一个可变数组,所以是一个读方法。调用这个方法的人会得到一个 _photos 数组的拷贝,以防被别人不小心修改了,但是如果有一个线程正在修改这个数组,另一个线程正在读这个数据就悲剧了。
注意:为啥上面这段代码里调用者会得到一个 _photos 数组的拷贝呢?因为在 Swift 里面,函数的返回类型要嘛是一个引用要嘛就是一个数值。返回引用就跟 ObjC 里面返回指针是一样的,你可以对原来的对象做任何操作。但是返回一个数值则会得到一个原对象的拷贝,对这个返回值的修改不会印象到原对象。默认情况下,Swift 的类实例会以引用方式或者结构体的值的方式传递与返回。
Swift 的内置数据类型,比如 Array 和 Dictionary,都是以 Struct 结构体的形式实现的,所以当你在代码里面传递这些值的时候,你传递的是一大堆结构体的拷贝。不过你不需要担心由此引起的内存消耗,Swift 对集合类型做了优化,只有在必要的时候才会真的做拷贝。例如,只有当一个数组被当做参数会返回值传递的过程中,第一次被修改的时候,才会做一次拷贝。
这是在软件开发中一个经典的读者写者问题,GCD 提供了一个优雅的解决方案——使用 dispatch barriers 创建读写锁。
Dispatch barriers 是一组方法,它们的表现就像在并发队列遇到串行队列的性能瓶颈一样。使用 GCD 的 barrier API 可以确保提交进队列的闭包代码在被执行的时候只有一个任务在跑。也就是说,所有比 diaptch barrier 先进队列的任务要优先被执行完,然后再会执行这一个闭包。
轮到这个闭包执行的时候,GCD 会确保在执行过程中有且只有这一个任务在跑,直到它执行结束,才会恢复队列原来的实现。GCD 还提供了同步和异步的 barrier 方法。
下图展示了 barrier 方法在异步队列中的表现:
注意到通常情况下这个队列跟普通的并发队列没有两样,但是当 barrier 代码被执行的时候,这个队列看上去就像一个串行队列。换句话说,barrier 是当下唯一被执行的代码。当这个 barrier 结束了之后,队列就又会回到一个普通的并发队列的执行方式。
那你啥时候改用 barrier 方法,啥时候不该用呢?
看起来上面说的唯一正确的选择是自定义并发队列了,所以我们要创建一个自己的并发队列,用来处理 barrier 方法,从而是读写操作分离。这个并发队列将会允许多个读操作同时执行。
打开 PhotoManager.swift 文件,添加以下属性:
这句代码使用 dispatch_queue_create 把 concurrentPhotoQueue 初始化为一个并发队列。第一个参数是一个反向域名风格的命名,确保这个命名的含义有助于我们以后调试。第二个参数用来表示这个队列是串行的还是并行的。
注意: 如果你在网上搜索 dispatch_queue_create 的示例代码,你经常会看到大家用 0 或者 NULL 作为第二个参数。这实际上是用来创建串行队列的一种过时的方法,更好的做法还是把这个类型写清楚。
找到 addPhoto 方法,替换成以下代码:
这个修改解决了写操作问题,接下来我们来看看读操作的问题。
为了确保读写操作都是线程安全的,我们需要把读操作也放进 concurrentPhotoQueue 这个队列里面。但是因为你需要函数的返回值,所以这个地方我们不能用异步调用的形式来写。在这里我们使用 dispatch_sync 方法。
dispatch_sync 会同步地提交当前的任务并且一直等到这个任务执行完毕才把函数返回。当你需要确保这些任务能够与 dispatch barrier 合作时,或者当你需要等待闭包的处理结果,然后才把函数返回时,你可以用 dispatch_sync。
但是使用这个函数要非常小心。试想你把 dispatch_sync 用在一个并发队列上,当这个队列跑起来的时候你就会遇到死锁问题。因为这个同步调用会一直等到前一个闭包执行结束才会返回,但是当前的queue 却在等待 dispatch_sync 的完成才能执行闭包代码,于是造成死锁。这就要求你一定要清楚地知道你是在哪一个队列发起的调用,同时也要搞清楚你是塞进去了哪一个队列。
以下是 dispatch_sync 使用时的概览:
自定义串行队列 Custom Serial Queue: 在这种队列上使用要非常小心。如果你在同一个队列的任务里面使用 dispatch_sync 到同一个队列,那你绝对会遇到死锁问题。
主队列 Main Queue (Serial): 跟上面那个一样要非常小心,也是很有可能造成死锁。
并发队列 Concurrent Queue: 在这种队列中,如果你想要通过 dispatch barrier 来同步任务,dispatch_sync 是一个不错的选择。
下面我们把 PhotoManager.swift 中的 photos 方法修改一下:
恭喜——你的 PhotoManager 单例现在完全线程安全了。不管你是在何时去读或者写,你都能很有自信地说这些操作都是安全的了。
可能大家还没有 100% 地清楚 GCD 的牛逼之处?首先确保一下你已经能够自如地使用 GCD 的基础API 来实现简单的多线程逻辑,最好多用断点和 NSLog 来确保你清楚正在发生什么。
下面我们提供了两个 GIF 动画来帮助你理解 dispatch_async 和 dispatch_sync。请留意 GIF 展示的每一步断点与各个队列的关系。
dispatch_sync(dispatch_get_global_queue(
Int(QOS_CLASS_USER_INTERACTIVE.value), 0)) {
NSLog("First Log")
}
NSLog("Second Log")
}
[/sourcecode]
dispatch_sync 会把任务加入到队列中并且一直等待直到任务执行结束。dispatch_async 也做了一样的事情,唯一的不同时它不会等待任务结束而是立刻就返回。
dispatch_async(dispatch_get_global_queue(
Int(QOS_CLASS_USER_INTERACTIVE.value), 0)) {
NSLog("First Log")
}
NSLog("Second Log")
}
[/sourcecode]
在这个教程中,你已经学会了如何让你的代码实现线程安全,也知道怎么把 CPU 密集的任务从主线程挪出来。
你可以在这里下载这个项目的代码,这份代码是包含了以上所有的优化的:GooglyPuff Project 。本教程的第二部分将告诉你如何持续优化这个项目。
如果你有计划要优化你自己的应用,你需要学会怎么使用 Instruments 里的Time Profile 来测试你的代码。不过如何使用这个工具就不在本教程的讲述范围内了,你可以参考这篇文章 如何使用 Instrcments。
然后记得要用真实的设备来进行测试,用模拟器测出来的结果与真机相差甚远。
在下一篇教程中你将更加深入地了解 GCD 的API,我们将介绍更为强大的工具。
2015.11.22/夜
于自宅
译者注:由于译者太懒,此文花了许多时间来才翻译完,也许内容有些过时,不过 GCD 提供的 API 至今仍然是 iOS/Mac 上使用多线程的首选。
2022-08-20 原《每周读书》系列更名为《枫影夜读》
开始读《安德的游戏》时感觉告诉我这是一部水平很次的作品。作者一开始就直接表明了主角安德是一个很特殊的人,天才中的天才,进度到 10%+ 更直接说明安德就是他们要培养的未来的最高统帅,是要和虫族打仗拯救人类的人。于是乎,小说前半部分就沦为毫无悬念的铺垫,读之甚是乏味。
悬念是小说的驱动力,没有悬念的小说读者是不会有兴趣的。但是后来我知道这部作品写于 1985 年,于是心理预期稍微降了一点,与此同时故事进入战斗学校部分,安德作为一个天才少年,在太空校园里被刻意安排孤立,被迫进行不公平的比赛,于是前期枯燥的铺垫到了战斗学校之后开始慢慢展开,面对教官严苛的要求,安德是否能够顺利晋级?面对其他同学的孤立与排斥,安德怎样去结交好友突破困境?面对不公平的比赛,安德如何扭转劣势拿下胜利?还有最重要的,面对与日俱增的心理压力,安德能否在精神崩溃前成功毕业?
读者是否有一种似曾相识的感觉?没错,就是少年热血漫画的套路。读者如果一路读到了这一部分,很容易就会被代入,对人物的情感投资在安德一次次拿下胜利时得到回报,又在下一次面对更加苛刻的条件时惴惴不安。到了这种地步,读者已经欲罢不能,小说也就成功了一半。
然而驱使我嚼下枯燥的前半部分的动力却不是安德,反而是安德的哥哥与姐姐。这三个小孩都是天才儿童,哥哥彼得性格残暴,姐姐华伦帝则过于柔弱,只有安德兼具二者优点,所以最终是安德被送进战斗学校。对我来说,我反而更喜欢这两兄妹的组合,深觉这两兄妹加一起要远胜于安德。最让我感到震惊的是两兄妹利用互联网(Nets)隐藏自己的年龄,在网上散步自己的言论,逐步建立起各自的追随者,形成巨大的舆论影响力,最后两人政见合一,把彼得推上地球统治者这一壮举。要知道 1985 年互联网还处于理论研究阶段,公众连想到想不到的事情,更不用说准确预测到今日互联网舆论的影响力以及如何操纵网络言论方向了。可惜的是故事的主角始终是安德,作者没有在这两兄妹身上花费太多笔墨。
说回主线,安德在战斗学校的故事就是一般热血漫画的路线:遇到 BOSS,要死了要死了要死了,完了千方百计打赢了 BOSS,获得新技能和一大帮小弟,然后继续下一个数量级增长的 BOSS,不断循环,直到毕业。这一段作者的布置比较合理,故事发展非常流畅。最后以安德终于精神崩溃为契机,让安德毕业,小说推入最终幕大决战。
由于有了前面战斗学校不公平待遇的铺垫,最终幕的展开很自然,结局的反转也出人意料,是个亮点。由于是热血少年故事,安德最后肯定是大团圆结局打败了虫族,还殖民到虫族的星球上去。在那里他听到了来自虫族的遗言,于是著书《Speaker for the Dead》,中译名为《死者代言人》或《安德的代言人》。我一直觉得结局大可以到虫族消灭就结束了,后半段其实有些累赘,直到我翻到《Speaker for the Dead》的序,才晓得原来作者早期是写了《安德的游戏》的短篇,后来他想写《Speaker for the Dead》了,于是就开始构思,结果就构思出了长篇的《安德的游戏》,所以这后半部分就变得必不可少了。
1985 年《安德的游戏》出版后,第二年《死者代言人》就出版了,两部作品连着拿下了雨果奖和星云奖,作者也成为唯一一个连续两年包揽两座大奖的作家。今天再看《安德的游戏》,我觉得算是一部不错的热血小说,不过毕竟有些年头,写的也是近未来的事情,像互联网这样的想象已经成了现实大家不觉新鲜,而写作技巧上过多第三方角色的全知描述也令人乏味。所以此作可以说是不错的休闲读物吧,谈不上上佳之作。
2015.11.18/中午
于 T.i.T
2022-08-20 原《每周读书》系列更名为《枫影夜读》
一直以来救死扶伤都是医生的天职,我们病了就上医院,医生就会把我们治好,大家都认为这是理所当然的事情。但是我们又都清楚有一些病是治不好的,包括绝症,也包括衰老。
但即使罹患绝症,到了医院也还是以“积极治疗”为默认选项,大家仿佛觉得现代的医学这么发达,有什么是治不好的呢?即使是绝症,大不了化疗,以为能再活个十年,二十年。《Being Mortal》的作者 Atul Gawande 是一名医生,他道出了大家也许不知道也许视而不见的真相:绝症的治疗并不一定能把病治好,有时候能帮你延长性命,但多数时候你不但要承受治疗的痛苦,还很可能恶化你的病情。
作者从医生受教育时被灌输的观念开始说起,仿佛全世界都认为医生就是应该要积极地把病治好,无论可能性有多小,都要去努力,仿佛努力了就是好的,而忽略了努力背后的痛苦。比如说化疗,你要躺在一个完全契合你身体的模子里一动不动,眼睛看不见,耳朵旁边就是轰隆隆的放射机器在旋转,移动的方寸不过几毫米,每天要躺上一个小时。比如说吃药,你需要吃各种各样奇怪的药,药都有副作用,你克制了头痛可能就导致呕吐,你控制了呕吐又可能导致昏昏沉沉。再比如治疗的费用,美国已经是一个医疗非常发达的国家,高额的治疗费还是会让人透不过气来,更不用说我们中国,动不动就是倾家荡产的事情。假使这些都不是问题,还有更严重的,你接受了这些对身体伤害特别大的治疗之后,很可能并没能帮你控制病情,你会继续恶化,而且恶化得更快,你会生活不能自理,无法自己上厕所自己洗澡,你会开始感受到作为一个人的基本的尊严已经丧失殆尽。
所有的人都忽视了一个非常重要的问题:如何面对死亡?
一旦你罹患绝症,你就一定要全身上下插满管子躺在病床上痛苦不堪地走完人生的最后阶段吗?“积极治疗”仅仅是医生提供给病人的一个默认选项,也是大家一上来就知道可以选择的一个选项,但是大家有没有想过这个选项是否一定就是最好的呢?很可能大家仅仅是没有考虑过其他的选项,因为太沉重,根本没法去想。即使在开放的美国,《Being Mortal》提到的“姑息治疗”、“善终服务”也仅是刚刚起步。
这样的服务将对病人的病因不做处理,不会提供痛苦的治疗,只是在病人生命的最后阶段,提供各种必要的生活护理服务,以及最重要的——麻醉药与镇痛药。与其在 ICU 里插满管子痛苦地死去,病人更愿意选择在自己的家里,在自己生命的最后时刻与自己的家人一同度过,做着自己还能做的事情,有尊严地死去。
不仅仅是绝症患者,老年人也会遇到同样的事情。老年人的身体由于各种各样的原因会开始日渐无法自理。在现代医疗尚未普及的时代,我们的生命曲线都是非常陡峭的,老年人能活过 50 岁的很少。但是现代医疗发达了起来,我们的曲线开始缓和延长,每次我们开始走陡峭的下坡路的时候,医院总是可以把我们拉回来,于是我们仅仅是离死亡近了一些,却不再会突然之间死去。老年人的问题于是也成为这个还没有准备好的社会急需解决的一个问题。
经过多年的发展我们产生了疗养院这样的解决方案。但疗养院是一个仿如监狱的地方,统一时间睡觉,统一时间起床,不允许某些病人吃饼干巧克力,不允许吃什么什么,要求病人一定要坐轮椅以防摔倒等等。在疗养院一个人感受不到做人的感觉,感受不到自己的价值。因为疗养院的要求是保证“安全”,除此之外都是次要的。这跟大多数人对绝症患者的要求是一样的:活下去,无论多么痛苦多么没有尊严。
人并不总是以活下去为底线的。人还需要活得有尊严,活得开心。假使我们以第三者的身份去考虑事不关己的病人,放弃积极的治疗,让病人能够有尊严,开心地走完最后的日子可能会很容易接受。但是一旦这种事情发生在自己身上的时候,我们肯定还是会手足无措。
作者采访了很多老人与病人之后,终于他自己也面临了这个艰难的问题:他的父亲罹患绝症,是继续治疗还是选择“善终服务”?
现代医学虽然发达,但是也博大精深,作者自己是医生,父母双亲也都是医生,但是面对父亲的绝症,他们依然手足无措。最后作者问父亲:什么才是最重要的?他的父亲表示:如果要我选择治疗并且瘫痪,我宁愿死。于是在手术的关键时刻出现了复杂的情况,医生问作者是否要继续手术的时候,作者第一句话就是:继续与停止,哪一种对瘫痪的可能性更大?最终选择了更具生命风险但是更不会造成瘫痪的——继续。
所以在这些至关重要的节点上,承受病痛的患者本身当然是主角,但是家人在其中扮演的角色也至关重要。如果中止手术而父亲将瘫痪度日,只怕自尊心强的父亲会觉得生不如死。
今天美国的养老与医疗制度非常发达,我们国内的条件不如美国,但是不代表我们就不应该考虑这些问题。事实上无论条件怎么样,我们都会面临这样的问题,我们总有一天会衰老,我们总有一天会面临无能为力的时刻。
在阅读这本书的过程中我一直心惊肉跳战战兢兢地,我曾有两次严重的胃病发作,病痛体虚之外连精神也变得软弱,累及我的家人朋友辛苦照顾。如果可以我当然不愿意再经历一次,但是谁知道呢?人都会老,终有一死。看着书中详述的种种,映照自己,深感恐慌。我庆幸在还算年轻的时候看到这本书,它让我了解到生命除了默认选项之外,还有别的可能。
等我老了,我希望我不至于手忙脚乱。
15.11.13/中午
于 T.i.T
2022-08-20 原《每周读书》系列更名为《枫影夜读》
有许多朋友一提到“文学”两个字就头疼,这其实源自于对“文学”的不理解,今天“文艺”两个字也被许多一知半解装忧郁的小朋友折腾到臭名昭著的地步,有点可惜,文艺本是中性的,指文学与艺术。欣赏“文艺”需要具备一定的背景知识与审美能力,这种能力以我们目前的学校所教授的课程与教授的方式来说很难培养出来。就好像要欣赏一个开源项目的代码,光会写代码还不足够。
许多人觉得“文艺”令人乏味,可能还是由于没有具备足够的鉴赏能力。比如《诗经》,一直以来教科书必备的四书五经之一,由于年代久远,文体也不够成熟,大家读起来都会感到吃力。除了类似《蒹葭》这样的寥寥数作,我觉得大多数也都挺无趣的。这时候老师的讲解就变得十分重要,师者,传道授业解惑也,然而我回忆自己在课堂上听到的《诗经》的讲解,却并没回忆出多少有趣的片段。其实语文这一门课很特别,它是讲授文学的,文学是没有办法和历史、社会、艺术分割的,但是往往教授语文的老师不会多讲历史,教授历史的老师不会多讲文学,于是我们断章取义了许多年,片面理解诗歌了许多年。后来我读到郑振铎版本的《中国文学史》([每周读书 八十五] 郑振铎——《中国文学史》),总算把历史社会背景与文学作品本身稍微联系上了,但是不够。
本周我们要介绍的是蒋勋老师的《蒋勋说文学:从诗经到陶渊明》,蒋老师在书中以独到的见解,平和的语言,结合历史社会背景以及个人的故事经历,把文艺作品讲述得十分生动。蒋老师摒弃一般人讲诗时做注解的方式,转而以审美的目光来分析,比之于严肃文学的解读,蒋老师的讲解要容易接受得多。蒋老师写过一系列讲解中国文学的书籍,本书为《蒋勋说文学》系列中的上册,下册为《从唐代散文到现代文学》。
无论是《中国文学史》还是《蒋勋说文学》,都是从上古的《诗经》开始说起。这不是偶然,《诗经》以前,我们的文字是记录在龟甲上的,多为祷文,卜文,并没有十分成体系的文学作品,《诗经》算是最早的中国文学作品集。所以《诗经》有它特殊的意义在。但是我们都怕读《诗经》,毕竟是两千年前的文字,晦涩难懂,毕竟是两千年前的文明,难以想象,而且课堂中动不动就是翻译、提炼思想,烦不胜烦。
其实《诗经》是无法翻译的,它是可歌的,是民歌的合集,它就是今天的《浏阳河》,就是《康定情歌》,是古人们情之所动而唱出来的东西。但是自从《诗经》被列入四书五经之中成了经典,她就被过分解读了,就好比今天的《圣经》、《红楼梦》,其实哪来那么多密码可以解读。
老师们在讲解的时候往往会为每句诗做注解,然而诗是“情动于中,而形于言”,情才是诗歌中最重要的东西。我自己也写过诗,写诗的时候你会很注重形式,行文会随着情感的流动而跳跃,所以诗歌会朦胧,会不解,可解的是理性逻辑的部分,不可解的是神秘感性的部分,于是在可解与不可解之间产生了美。如果我们非要把诗歌解成一个个清楚的句子,诗歌就失去了它的魅力。
蒋勋老师在讲解《诗经》的时候就不这样,他试图以一个审美者的角度,向读者讲述什么是美,诗经为什么美,美在哪里,又有哪些地方是不美的。比如蒋老师以《国殇》为例,讲解了诗歌上半部无头亡魂对生命的悲叹,又指出下半部分过于政治严肃而不讨喜。
大家上学的时候都会被要求背诗,我当时就在想,为什么《古诗十九首》没有署名?为什么李商隐李白他们风格差那么远?为什么曹操陶渊明的诗看起来都不够温庭筠的词精致但是又被人推崇?其实这些问题都源于对历史背景的不了解。蒋勋老师在讲述《古诗十九首》也好,讲述曹氏父子的诗歌也好,都会试图通过社会环境对于当时人的思想的影响来讲述,品评一个作品的好坏,是一定要放回当时的历史去看的,你不能拿十几年前的 PC 跟今天的手机做比较,十几年前的技术就应该放在当时的环境来做评价。所以要理解“魏晋风骨”要理解“竹林七贤”你就得理解当时的历史背景。
蒋勋老师在讲解的过程中,除了讲述历史背景之外,还常常结合他自身的故事来做比较。我们说《氓》这首诗里的女子常被解释为弃妇,但是蒋老师就不这么认为。他觉得一个人受伤的时候她不是一整个过程都受伤,他们的爱情也有过甜蜜的时候,受伤的是一个时刻,诗歌反映的是那个时刻的心情。所以《氓》里虽然以女子的角度在吐露自己内心的伤感,但是如果以弃妇幽怨的视角去读这首诗,这首诗就狭窄了,如果把它当做是女子一生的倾诉,那就变成了一个美丽而哀婉的故事。蒋老师提到有朋友夫妻俩吵架了来找他诉苦,说对方怎么怎么不好,其实这都是很常见的情感。诉苦的过程中朋友还会清算自己为对方做了多少事情,像每天洗碗,扫地,做家务,指责对方什么都没做。其实是不是这样呢?《氓》里面写到女子每天勤勤勉勉做了很多事情,其实跟今天我们的想法是没有什么两样的。
以这样的方式来讲述《诗经》,是不是比我们刻苦地去背诵每一个艰涩的单字要容易得多了呢?我们说文学体裁是会变化的,词汇语法是会变化的,但是人的情感是永恒的。(至于农业社会的情感基础与现代社会的差别我们暂且不论。)当我们回过头去解读古代文学的时候,我们一定不能以纯粹理性的视角,去为每一个字做注解,我们要做的反而是以轻松的姿态,以审美的角度,去试图理解这些字句之间的美。只有当你理解这些文字的美了,才不会对“文学”二字有畏惧之心。
我们的恐惧来自于未知,但凡因未知而产生的烦忧,我们都可以先静下心来,好好理解清楚问题是什么,理解清楚了问题,我们总有对策。
2015.11.05 / 中午
于 T.i.T
过去八期“每周读书”介绍的书目以小说为主,这堆作品里面东野的《恶意》与马里奥的《教父》比较经典,《人间失格》则相对另类,《吴哥之美》让我第一次认识到蒋勋老师的文笔,不过吴哥真正的美却不在书里,还得亲自去一趟才能体会。
[每周读书 八十九] 东野圭吾——《虚无的十字架》
要求杀人凶手自我惩戒,根本就是虚无的十字架。然而,即使是这种虚无的十字架,也必须让凶手在监狱中背负着。
[每周读书 九十] 东野圭吾——《恶意》
《恶意》以其机巧的反转设计,特别的叙事结构,多元的人物塑造,以及时不时穿插的揶揄讽刺,深深地吸引了读者。从此作我们可以看出东野已跳脱本格派推理的“凶手是谁”的悬念,转而在凶手动机的追查上巧设机簧。
[每周读书 九十一] 伍绮诗——《无声告白》
前半部分很拖沓后半部分很精彩。虽然中国人看来可能就一普通的中国家庭的故事(当然除去严重事件)但美国人应该会为种族歧视、性别歧视等话题感到兴奋吧。还有普通的中国小孩是被寄予全家希望的这种事情。
[每周读书 九十二] Daniel Keyes——《24个比利》
1977 年,比利·米利根美国俄亥俄州立大学发生了三起抢劫强奸案,却被诊断为患有多重人格分裂症而获无罪释放。读完这本书,我感受到了深刻的震撼,不是因为作者的写作技巧与故事情节,而是这个真实的事件令人瞠目结舌。
[每周读书 九十三] Christina Baker Kline——《孤儿列车》
《孤儿列车》是和《无声告白》、《24个比利》一起看的,一口气读了这么多畅销书,深刻地感受到这些套路的定式,不过我还是很喜欢《孤儿列车》里讲故事的老婆婆薇薇安这个角色,同时这部作品的写作技巧也是三部之中最为娴熟的一部。
[每周读书 九十四] Mario Puzo——《教父》
小说中权势斗争的你来我往,人物内心的微妙变化,以及作家时不时冒出来的一两句警语,教父的语录都令读者兴奋不已。
[每周读书 九十五] 太宰治——《人间失格》
读这部小说,最令人震撼的不是主人公诡谲的视角抑或令人切齿的软弱,而是看似不可思议实则被我们熟视无睹的现实,其洞穿世事的目光有如利剑,深深扎进读者胸膛。
[每周读书 九十六] 蒋勋——《吴哥之美》
读《吴哥之美》,我们可以在曾几璀璨的文明与今日废墟的原始之间感受文化冲击的美,也可以跟随蒋老师的文笔去思考生命与时间的意义,去思考一个人的成、住、坏、空,去思考这个千百年前的古老文明在时间长河中的今时往日。感谢蒋老师,给我们带来如此美的体验
2022-08-20 原《每周读书》系列更名为《枫影夜读》
因为各种各样的原因,在国内并没有太多人了解吴哥。这几年随着吴哥旅游的日益发展,越来越多的游客涌入当地,去感受这座千年废墟的美。这是一件很值得高兴的事情,有更多的人去关注她,就意味着有更多的学者去研究她,修复她,人类历史上一个曾经耀眼的文明不至于沉埋在荒烟蔓草之里。
国内对于吴哥王朝的资料不多,其中来自台湾的艺术工作者蒋勋蒋老师的介绍应当是最有名的。他曾十四次造访吴哥,并把自己当时的书信集整理成书,是为《吴哥之美》。蒋老师还在台湾大爱电视台做了一系列介绍吴哥的节目,节目的名字也叫《吴哥之美》。
蒋老师曾经学过一点声乐,他讲话的声音非常好听,亲切而柔和。他讲过美术史,讲过文学,也讲过建筑,他把这些东西揉合在一起,为我们介绍了一个非常全面的吴哥。蒋老师身上还有一种非常难得的谦和,一个人的学识到了他这样的境界还保持着谦逊的态度是很难得的,他讲话的时候是在跟观众、跟读者、跟学生交谈,你完全感受不到来自“授课”的压力,他的谈吐仿佛一股暖风,款款拂入你的胸膛。
关于《吴哥之美》这本书,大家能够阅读的部分也不过纸上的字句,所以我们本周要介绍的重点其实在文字之外,在遥远的吴哥文明里。《吴哥之美》是根据蒋勋在吴哥旅行期间与台湾编舞家林怀民的书信整理而成,他们二位是伴侣的关系,书中没有明确点破这点,所以我开始看的时候还有点困惑。这些书信是写给爱人的,读起来非常温暖平静,蒋老师在书信中给当时在柬埔寨金边教小孩舞蹈的林怀民介绍了吴哥的历史文化,以及吴哥建筑的美丽所在,同时也谈到了个人的体悟与思考。
蒋老师对于许多文艺作品都有自己独到的理解,他在谈《诗经》、《楚辞》的时候就提出过自己的见解,深入人心,同时林怀民也是一位很厉害的艺术家,所以蒋老师可以用高雅的文字书写壮美的风景,镌刻废墟的宁静,舒展心中的感悟,畅谈深奥的哲理,这种精神层面的交流令人无比艳羡。
读《吴哥之美》,我们可以在曾几璀璨的文明与今日废墟的原始之间感受文化冲击的美,也可以跟随蒋老师的文笔去思考生命与时间的意义,去思考一个人的成、住、坏、空,去思考这个千百年前的古老文明在时间长河中的今时往日。感谢蒋老师,给我们带来如此美的体验。
然而有些事情不身临其境是无法体会的。
我们看照片只能看到冰山一角,体会不到吴哥强盛的王朝气度;
我们听故事只能听到只言片语,领悟不到吴哥虔诚的宗教信仰;
我们读文字只能读到井中天地,感受不到吴哥颓美的断壁残垣。
只有当我们真正地走进吴哥,在荷池前静坐等待黎明,在壁画前驻足直到斜阳,在塔顶上俯瞰一览天下,在石寺中静心感受微笑,我们会听到丛林中未名的鸟鸣,看到乡路间好奇的猴子,吹着从赤道来鼓鼓的热风,只有在这种时候,我们的五官全开,我们攀爬陡峻的吴哥寺的高塔,踩上窄窄的石阶战战兢兢,只有在这种时候,我们的心中充满敬畏,只有真正踏上吴哥的土地,我们才真正靠近这个失落了千年的文明。
所以在读《吴哥之美》以外,在看蒋勋老师的电视节目以外,我们还很有必要亲自去一趟柬埔寨,去走一回吴哥,去看看这座千年前金碧辉煌今日已巨木丛生的废墟,王朝有王朝的气度,废墟有废墟的颓美,即使是被世人遗忘多年的破落旧城,在今天看来依然有其雄伟,有其端庄。
如果要在吴哥窟众多建筑之中选择一座令人感受最深的一座,我想还应该是有“高棉的微笑”之称的巴扬寺。
到吴哥旅行的人一定会去的地方有两个,一个是最有名最具代表性的建筑吴哥寺,也称小吴哥,小吴哥荷花池前的日出亦幻亦真,令人迷醉,小吴哥的浮雕壁画体量巨大,令人惊叹,小吴哥的高塔陡峻异常,令人望而生畏。现在你只要在网上搜索吴哥,十有八九都是吴哥的日出。
但是因为她太有名,我反而不太想去谈她,当我徜徉在小吴哥的回廊中,当我凝望着五塔上冉冉的红日,当我一次又一次路过映照蓝天白云的护城河,小吴哥给我的感受是祥和。而拥有 54 座佛塔,216 个巨佛微笑的巴扬寺,却更容易穿越时空投影在游人的心底。
巴扬寺是阇耶跋摩七世修建的,他是一个挺特别的国王,他做的最大的一件事情就是让吴哥从以前的印度教改信了大乘佛教。所以在他之前吴哥的建筑都是印度教建筑,在他之后才是佛教建筑,也是他增修了吴哥城几个城楼上的四面佛像。同时在阇耶跋摩七世在世期间,吴哥王朝的国势也达到了巅峰,往后吴哥就开始衰落,最终灭于暹罗人(泰国人)的入侵,被迫迁徙到今日柬埔寨的首都金边。吴哥城也由此沉埋了几百年直到后来被法国人发现。
站在巴扬寺,面对一座座巨佛的神秘的微笑,那种感觉是很特别的。你知道在几百年前这座石塔被称为“金塔”(记于元朝使者周达观的《真腊风土记》,真腊即吴哥,是现存最完整的吴哥王朝的资料),它的墙壁很可能是铺上了一层金箔的,金碧辉煌,构成佛像的巨石也都是严丝合缝的。但是今天金箔早已不在,石头也都裂开了。完璧有完璧的美,废墟有废墟的美。这些歪斜的石头反而给了微笑各不相同的角度,这些裸露的岩石反而给了佛像原始的质感。
我觉得巴扬寺最美的地方在于,他大胆地采用了佛像的脸这样的形式,来表达佛教的思想。我们说金碧辉煌会褪去,石塔也会倒塌,但是佛像的微笑留下的神秘的感觉,似蒙娜丽莎,它所传达给人类的情感体验是超越时间的。几百年前她以金身俯瞰众生,几百年后她以石面笑对世人。存在只是一种形式,高棉的微笑只是走过了一个轮回,以不同的形式面对同样的世界。
吴哥有太多太多值得书写的东西,它的曾经强盛的历史,它的美的高度,它的今昔分明的冲击,无不萦绕在耳畔久久呢喃。但是这些故事也好,这些品评也好,都不如亲自走一趟吴哥,亲自去看一眼荷池前亦幻亦真的日出,亲自去仰望佛塔上祥和的微笑,我觉得这些亲自的体验比起它人絮絮叨叨的描述要深刻得多。
最后援引蒋老师的话,结束这一期感叹比书写要多的每周读书。
美无法掠夺,美无法霸占,美只是愈来愈淡的夕阳余光里一片历史的废墟。帝国和我们自己,有一天都一样要成为废墟,吴哥使每一个人走到废墟的现场,看到了存在的荒谬。
15.10.28 / 夜
于自宅
2022-08-20 原《每周读书》系列更名为《枫影夜读》
二战对于整个世界文化的影响甚为深远,这场残酷的战争促使日本诞生了许多文艺大师,同时也让这些生而敏感的人相继自戕于生命最绚烂的时刻。这其中包括了我们之前介绍过的三岛由纪夫、川端康成,以及本周读书的太宰治。
太宰治在战后的日本文坛名震一时,《人间失格》是其最具影响力的作品,很多读者即使没读过也有所耳闻,在日语中人间失格即是失去做人的资格的意思。1948 年5 月《人间失格》连载结束,同年 6 月作家携一女读者投水自杀。这部作品极尽阴郁之能事,以第一人称视角给我们展示了一个幽暗可怖的世界。
读这部小说,最令人震撼的不是主人公诡谲的视角抑或令人切齿的软弱,而是看似不可思议实则被我们熟视无睹的现实,其洞穿世事的目光如利剑,深深扎入读者的胸膛。我们所忽略的一切在主人公眼里是那样扭曲,他所做的浮想,所发出的疑问我相信大多数人也都曾想到过,但是要清晰地捕捉这些记忆,把为世人不耻的事情用文字书写下来,不具备过人的勇气,不处于非常的心境是做不到的。
即便是作家自己,也还是在结尾画蛇添足地写上一篇后记,声称小说的三篇手札是自己于某酒馆老板处所得,然而今天我们看太宰治一生的经历,已经可以很清晰地看到主角叶藏就是太宰治自己,叶藏的故事也就是太宰治的生平。小说从主人公青少年时期一直讲述到中年,他酗酒、沉迷女色、参加非法集团、多次自杀未遂,最终被送入精神病院。主人公年少便终日惶惶不安,惧怕世人,靠演戏搞笑来应付人生。“每周读书”在介绍《金阁寺》时曾比喻艺术家能接收到普通人忽略了的信息,于是成就艺术。《人间失格》中给我们的信息就是大量的被我们忽略的苦难。主角年幼时被家里的庸人侵犯的苦难,在大家庭中处于幼子渴望得到父爱的苦难,自闭不敢与任何人交谈的苦难,看到太多“正常人”看不到的信息而惧怕与常人交流的苦难,这些“正常人”根本不会碰到的问题到了主人公那里就是一股洪流,他的一生都在逆流挣扎,在波涛中飘荡。
这就好比正常人只能看到可见光而作家可以看到红外紫外的光线,也因此本书中有很多非常独特而精彩的评论,比如主角参加左翼集团的集会,仅仅是因为其“非法”的性质(“因为世上合法的东西反而可怕”)而不是其理论有多么崇高。“不过在我看来,他讲的那些都是再简单不过的东西,理论诚然不假,人类的内心却比理论复杂、恐怖得多。谓之贪欲,则不足够,谓之虚荣,亦不贴切。将色与欲两者并列再一起,亦不符实。我隐约觉得人世深处,不是只有经济方面的事物,还有鬼怪、奇诡的事物存在。”
又比如作者对世人圆滑处世的批判:“圆滑处世的才能?我简直哭笑不得。我有什么圆滑处世的才能!不过,像我这种恐惧人类、逃避人世,总是敷衍了事的人,是否无意间契合了那些奉行‘明哲保身’之道的精神狡猾之徒的处世论呢?人啊,明明一点也不了解对方,错看对方,却视彼此位独一无二的挚友,一生不解对方的真性情,待一方撒手西去,还要为其哭泣,念诵悼词。”
这些辛辣的文笔总让我想起三岛由纪夫《假面的自白》(每周读书 七十五),尽管三岛在《太阳与铁》中表示自己并不喜欢太宰治的作品,但是很难想象此作完全没有受到太宰治的影响。相较之下,《人间失格》更具故事性,而《假面自白》则自传性质更强,但两部作品都是从我们习以为常的波段中拣出可怕的事实,咯出血一般的疼痛。
15.10.20 / 中午
于 T.i.T
2022-08-20 原《每周读书》系列更名为《枫影夜读》
假期结束了,各位读者假期过得好吗?枫影在假期间又找到可以读的好书了,本来假期前已经写好两篇书评了,但是放假玩到没时间更新了 XD,本周开始陆续补上。
工作后深感自己生活圈子的窄小,每日所见以为是整个世界,其实世界大得很。即连互联网这样的小圈子,也有广袤的深网(Dark Web)领域不为世人所知,何况俗世。1969 年作家马里奥的《教父》写的就是鲜为人知的黑手党世界。此作让作家一举成名,他改编的同名电影亦获奖无数,被世人奉为经典。
《教父》在大框架上围绕核心人物“教父”的几个重要事件展开。要塑造一个具有信服力的人物形象,一定不要让人物亲口说出他有多伟大,作家一开始就使用几个不同的小人物求助教父事件,借配角之口把教父伟岸的形象打造得有血有肉,教父从不废话,只做应该做的事,配角人物的神色与心理让教父的形象更深入人心。
在建立了教父形象之后,作家立刻安排教父遇刺事件把故事推入紧张的第二幕,以家族事业面临倾覆及自身生命遭到威胁推动每一个人物挣扎着向前奔跑,最终更以教父之死为契机发动最终幕的大决战,故事驱动力强劲,高潮迭起。
全书最为读者称道的是作家对黑手党家族权势斗争的描写,作家构建了一个庞大的暗世界,这个世界的基石是意大利人的“缄默规则”(美国法律规定嫌疑人可以保持沉默,如此即使有人被捕也不会供出家族的其他成员,家族会负责入狱者的家庭与出狱后的生活。),这个世界的统治者就是“教父”。作家在写作过程中频频发出警语,刚开始看的时候有种读古龙小说的感觉,两者都擅长人物塑造,都擅长概念上的斗争而不是具体的火拼,往往决战时刻总是一击必杀。为了让这一击有足够的冲击力与信服力,作家需要在决战前做足铺垫,着力于决战双方实力的权衡,让读者为悬念揪心不已,最后在击杀的时刻陡然反转,令人惊呼。
在战斗的描写上,马里奥要比古龙逊色不少,但是马里奥在权势斗争上的写作则比古龙要更合理更具说服力。比如教父白手起家的背景描述,比如教父遇刺后作家能提出“这只是生意上的手段,无关个人恩怨”这样的观点。现实生活中我们都知道法律与政府并不能解决所有的问题,我们的世界很大,通行的法则很多,明面上的法则仅仅是其中一种。教父的法则就是千万看不见的法则之一,它与光明世界的法则是并行的关系,不是非此即彼的关系。但他也得生活在光明世界里,所以教父在非法的赌博生意之外也有正当橄榄油生意,教父的顾问除了协助非法的事务外也是一个正当的律师。可以说《教父》描述的世界如此合理,读到教父如何帮助小人物解决法律无法解决的问题,如何以非法手段威慑权倾好莱坞的大导演而对方不敢骂教父一声的时候,多少读者对教父产生崇拜之情啊!
但是《教父》一作毕竟是黑帮小说,有黑帮就一定有暴力,而此作的遗憾正在于暴力的描写。《教父》里有好几场刺杀与决战场面,对于故事情节的推动至关重要,但是读来总是有一种——“太简单了吧”——的感觉,原因就在于铺垫的不足。比如说开篇一直在极力渲染凶猛过人的打手卢卡布拉齐有多么多么厉害,一个人顶十几个人这样,但是这人最后怎么了呢?被两个敌人骗过去稀里糊涂就被暗算挂了?我去,这么牛逼的人物,放武侠小说里分分钟秒杀一个军队啊。当然卢卡是被暗算加二打一整趴下的,现实世界里再牛逼的人也会趴下,但是这是小说啊!
卢卡布拉齐还好,算是个次要人物,那教父呢?教父可是个山一般的人物啊,说遇刺就遇刺了,还一连被人打了好几枪,虽然说保镖不在身边是吧,但是怎么说也是个教父啊,只有一个保镖怎么够啊?好吧后面的部分作家解释说是因为近几年顺风顺水就疏忽了,但是遇刺前你怎么也得交代一下是吧,真是走在路上突然跑出来俩杀手稀里糊涂就把教父杀得趴医院半年不得动弹。
再往后一点,就是主角,教父之子迈克尔刺杀两个敌人,这里写得还相对比较有悬念,还渲染了非常紧张的气氛,如果失败了怎么办?读者还捏了一把冷汗。但是,但是,真的迈克尔走过去两枪就干掉敌人了啊,敌人可以连最凶猛的打手卢卡布拉齐都干掉的人啊!这么简单就挂掉了?好歹也挣扎一下反抗一下,打他个十来二十分钟嘛?
最值得吐槽的还得是最后一场大决战,随便派了几个小弟就把四大家族干趴下了。我想说,如果四大家族这么容易干趴那早干嘛去了?早点把这些黑帮大佬都干趴下不就完了。这里还是属于铺垫不足,好歹也解释一下教父退隐的几年都准备了些什么,要解释一下这些大佬以前有多么多么牛逼,现在有多么松懈,要解释一下为什么之前不能轻易收拾掉,现在教父一死就随便怎么收拾都没问题了。这些东西基本都是一笔带过,很少给出解释,这样稀里糊涂的战斗就结束了。
虽然吐槽了战斗部分,但《教父》还是看得非常过瘾的一部小说,瑕不掩瑜。其实读者为之兴奋的并不是暴力打斗的描写,这些都不重要,重要的是小说中权势斗争的你来我往,人物内心的微妙变化,以及作家时不时冒出来的一两句警语,教父的语录。光是这些已经足以让这部作品大放异彩,至于对打斗什么的有高要求的读者,嗯,还是看金庸吧,打个过瘾。
P.S. 金庸后期的作品其实也慢慢走向无招胜有招的境界,最后封笔之作《鹿鼎记》因为描写权势斗争比较多,其实也不怎么侧重打斗场面了,韦小宝在这部作品里只会脚底抹油的招式。
2015.09.25/中午
于 T.i.T
2022-08-20 原《每周读书》系列更名为《枫影夜读》
《孤儿列车》是和《无声告白》、《24个比利》一起看的,一口气读了这么多畅销书,深刻地感受到这些套路的定式,以及定式带来的快餐式的空虚。不过我还是很喜欢《孤儿列车》里讲故事的老婆婆薇薇安这个角色,同时这部作品的写作技巧也是三部之中最为娴熟的一部。
1800 年代,美国街头有大量的流浪儿童沦为乞丐,当时年仅 26 岁的美国人 Charles Loring Brace 成立 Children’s Aid Society 组织,并组建了有名的“孤儿列车”(Orphan Train)。Charles 认为只有正当的工作与良好的教育才能使这些流落街头的小孩成长为一个能够自力更生的美国公民。“孤儿列车”就是为了把东部大城市的流浪儿童运送到地广人稀的西部,帮助小孩找到寄养家庭而出现的。
尽管孤儿列车的初衷是以慈善为宗旨,但世事不如意者十有八九,不是每一个寄养家庭都有能力可以负担多一份口粮,也不是每个家庭都能善待小孩。当时有不少小孩在这些家庭受到虐待,家长忽视规定没有送小孩去念书,小孩被迫干苦力活,甚至住在猪圈和马厩,?很难说小孩在寄养家庭就一定比流浪生活过得更好。在 1929 年美国经济大萧条之后,运作了 75 年的“孤儿列车”终告停止。尽管“孤儿列车”一直饱受争议,但是 Charles 仍是无可置疑的慈善先锋,他的孤儿列车直接催生了美国现代的儿童保障制度。
美国现行的儿童保障制度由慈善机构担保每个寄养家庭的资格认证,每个月慈善机构会给寄养家庭一笔钱用于支付寄养儿童的各项开销,现在的制度无疑比起 100 多年前要科学得多。但是是否现行的制度就完美无缺了呢?
英国作家 Christina Baker Kline 挑选了现代儿童保障制度下的不良少女莫莉,与曾经坐过孤儿列车的老婆婆薇薇安这两个人物,通过人物的碰撞为我们讲述了两代孤儿的故事。
莫莉作为故事的引子,因缘际会来到薇薇安家做社区服务以免去因偷书带来的感化院惩罚,从而牵出薇薇安幼时在孤儿列车上的经历。薇薇安来自移民家庭,在一场大火中成为孤儿,从而辗转上了孤儿列车,遭遇了各种悲惨的故事。故事总是一章以明亮幽默的色彩讲述莫莉的故事,下一章则回到黑暗的20 世纪,在阅读的过程中我非常喜欢老年的薇薇安以全知全能的视角,幽默地应对生活的态度,而对进入黑暗世纪的故事感到焦虑。这正是本作精妙之处。
明暗的强烈对比令读者感到深刻的冲击,但是就故事本身来说,由于没有接触过这段历史背景,并没有很强的代入感,主角所遭遇的不幸也是现如今很多影视作品都用滥的桥段,基本上看了开头就能猜到后面会有什么事情发生,而且薇薇安后来终于遇到好人家之后就一路顺风顺水,也有点缺乏波澜。总的来说,《无声告白》与《孤儿列车》都是一个套路,抓住比较符合读者关注点的情感切入点,以常人不曾经历的情感体验来打动读者。但是这两部作品的结尾都比较普通,中后期悬念不足导致结尾无力,比如《孤儿列车》后期过于平稳,《无声告白》则中后期直接阐明了孩子自杀的终极悬念,已经没什么悬念可以再布置了。
三部作品之中应该《24个比利》的故事最好做铺垫,悬念可以轻易就推到顶点——毕竟精神病可以是极不稳定的状态——但是作者为了纪实就放弃了技巧的应用,有点可惜。
15.09.24/中午
于 T.i.T
2022-08-20 原《每周读书》系列更名为《枫影夜读》
1977 年,比利·米利根(原名:William Stanley Milligan)美国俄亥俄州立大学发生了三起抢劫强奸案,却被诊断为患有多重人格分裂症而获无罪释放。这件事情在当时引发群众激烈的争议,有人认为他是演技超凡的罪犯,甚至有人企图谋杀当时还在精神病院接受治疗的比利。事情的真相到底如何呢?作家 Daniel Keyes 与比利经过数百次的谈话,采访了 62 位与比利相关的医生、护士以及亲人朋友,于 1981 年出版《The Minds of Billy Milligan》一书,揭露比利悲惨的一生,试图为比利正名。
2014 年 6 月,作家 Daniel 逝世,同年 12 月,比利因癌症逝世。我想这可能是最近这本书又热门起来的原因。读完这本书,我感受到了深刻的震撼,不是因为作者的写作技巧与故事情节,而是这个真实的事件令人瞠目结舌。比利的一生过得太坎坷,太悲惨,人们的不信任与攻击太冷漠,太残酷。
我们普通人也会有类似多重人格出现的时候,比如情绪低落的时候,比如有反社会情绪的时候,但是普通人与病人的区别就在于:分裂症患者在人格转换的时候并不共享记忆,其中一个人格无法记住另一个人格做过的事情,而且每个独立的人格有自己的名字和生活背景。这一点应当是出于自我保护而演变出来的,因为多重人格分裂的病人大都受到过巨大的心灵无法承受的打击,才分裂出一个用于承受痛苦的人格,而自己的核心人格则可以眼睛一闭忘记痛苦。
比利就是在年幼的时候,遭遇继父的虐待,才分裂出用于承受痛苦的丹尼与戴维两个人格。比利的核心人格的感受就是,一旦继父要虐待他了,他就把眼睛闭起来,等到睁开眼睛的时候,他不知道怎么就到了另一个地方,时间也不对了,但是所有的痛苦就好像没有发生过一样。
什么样的痛苦能够让一个人非得分裂出一个独立的人格来承受呢?比利的继父不仅殴打他,辱骂他,还鸡奸了他,甚至曾经活埋过他,并告诉他如果他跟母亲说起这件事情就会把他杀掉然后跟母亲说他自己跑掉了。继父对比利地狱般的虐待正是比利的心智崩溃的开始。
他早期分裂出的人格是用于承受痛苦的,后来他又相继分裂出许多其他的人格。在医生的帮助下,主要人格都陆续出来与医生交谈,经过长时间耐心的治疗,比利终于开始以核心人格为基础融合其他的人格。当大多数人格成功融合的时候,一个全新的人格“老师”出现了。医生问他除了画画(比利有好几个人格都擅长绘画,曾以卖画维生)还希望做什么,最后他选择让医生认识的作家把他的故事写出来,让更多的人知道虐待儿童的事情。于是有了这部《24 个比利》,大多数完整的记忆与有逻辑的叙述,都是由这个融合的人格“老师”对作家讲述的。
但是事情并不总是美好的。比利虽然被判无罪却需要一直呆在精神病院里接受治疗。一开始他呆的医院都是有学术界权威的医生在主导,大家很快就相信比利确实是人格分裂而不是装出来的,都尽心尽力想要帮助比利康复。但是随着比利可以假释的期限临近,外界的报刊舆论对比利的声讨越来越激烈,什么“强奸犯很快就可以自由出入我市”之类的报道每天都上头条。刚刚才能融合的比利看到这些报道后承受了相当的打击,人格又开始分裂。由于分裂的人格无法记得上一个人格的记忆,他有时候醒来发现自己被人抓住,就开始反抗,造成了医护人员的伤害。这正好应了外界的批评,比利再次接收法院的审判。
最后他被判送入以收治精神病犯人而臭名昭著的利马医院,传说进入这家医院就相当于判了死刑。比利在这家医院遭受了毒打,注射了过量镇静剂(镇静剂不利于多重人格分裂症,会恶化病情),比利在利玛医院期间 Daniel 还与他一直联系,后来把他的抗争的故事写成了本书的续集《比利战争(The Milligan Wars)》。由于各种原因,这本书于 1994 年在日本出版,2000 年于台湾出版,却始终无法在美国出版。
从《24个比利》这本书,我们看不到作者刻意埋伏的悬念与注重情节的轻重安排,分明这是一个非常好的故事题材,只要稍加修剪就能成为一本极好的犯罪小说,但是作者不。从一开始作者就阐明了比利的全部 24 个人格,然后从比利被捕开始,到比利的多重人格被发现,到比利融合开始回忆自己悲惨的一生,到比利被关进利马医院遭受非人的待遇再也找不回融合的人格。作者写这本书以尽量纪实的视角去写,他是为了帮比利发出控诉而写,不是为了写小说而写。说实话,以一部文学作品的视角,书中很多铺陈比利人格切换的故事的地方都可以省略,以使情节更加紧凑,这部作品在写作技巧上可谓平平无奇,但是他道出的故事却惊天动地。
2015.09.05/下午
于自宅
2022-08-20 原《每周读书》系列更名为《枫影夜读》
2014 年 6 月 美籍华裔女作家伍绮诗(Celeste Ng)的首部小说 Everything I Never Told You 在美国出版,迅速受到美国读者关注,成为 Amazon 2014 年最畅销小说。今年(2015年)7 月简体中文版正式登陆中国,于是出版社与各大媒体争相造势,什么“中国女作家跻身美国文坛”、“打败斯蒂芬金成为 2014 年亚马逊最畅销小说第一名”之类的新闻比比皆是。
这些媒体不要脸的吹捧我们且抛下不理,单就《无声告白》一书来说,作者的写作技巧非常成熟,擅长人物塑造与情感描写,通过 6 个各不相同的主要人物把异类、歧视、压力等话题发挥得淋漓尽致。尽管此书水平不错,但是单就一次 Bestseller 并不能代表作者就真的在美国文坛占有地位了,我们拿之前 The Martian (每周读书 七十一 Andy Weir《The Martian》)在 GoodReads 上的数据对比,The Martian 有 176,258 ratings,28,212 reviews 而 Everything I Never Told You 只有 55,435 ratings,6,812 reviews(截至9/3/2015)。已经算很多人关注的小说,但并没到疯狂的地步。
回过来看作品本身。小说第一章展示了一个美好的美国混血家庭,以找不到女儿 Lydia 为契机,使第一章处于纷乱与麻烦之中,最终以警察抽干湖水发现 Lydia 的尸体结束本章,情节非常紧凑,轻描淡写之间描述了由白人母亲与中国父亲结合的家庭,以及家里 Lydia 集所有聚光灯于一身的地位。不得不说,这个开头非常漂亮!
带着“Lydia 死因未明”的主题悬念,作者开始为我们展示父亲 James 的家庭背景:上世纪 60 年代年幼的他随着偷渡打工的父母亲到美国,从小在学校就被视为异类,一直渴望却永远无法融入大家。以及母亲 Marilyn 的家庭:她有位传统的母亲,她自己一直渴望过得与母亲不同,却因为是女性的身份而郁郁不得志。
这些背景故事单独拆分都可以写出不错的情感故事,但是作者拖着“Lydia 死因”这个悬念却一直在讲述她父母亲的故事,回忆的部分太啰嗦,令人感觉情节拖沓,类似火影的“回忆杀”。但是这一部分又是后面情节发展的必要铺垫,不可或缺,如果作者处理得好应该可以更简洁一点,或者处理得更起伏得当一点,就是说:你可以做背景描述,但是不要描述得太无聊。我觉得这一部分当是全书写得最差的地方。
作者为每一个主要人物都准备了大量素材,用于表现他们在社会群体中被排挤,被欺负,被歧视等苦痛,但是过于细碎,作者擅长细节描写,尤其是以小女儿 Hannah 童稚的视角看到的世界,令人叹服,却不怎么擅长组织起所有的细碎的材料,在表现 James 与 Nath 相关背景故事上堆积了诸如泳池、运动会等故事,却没有层次感与递进感,与其堆砌所有的材料,还不如只选择最具有表现力的几个场景。这种琐碎的分散感还体现在几个主要人物的份量上,从故事上来看 Lydia 无疑“应该”是最重的主角,因为她是这部小说的开篇,她的死因是整部小说的主线悬念。但是她的死因与家庭的每个人都有关联,于是作者又花费了大量的笔墨在父母亲与哥哥 Nath 身上,一旦写到父母亲就必须写父母亲各自的家庭,很容易就分不清轻重。如果每个人物都是主角,这本书就没有主角。
而说到本书情节最紧凑,情感起伏最大,每一个人物的表现都有血有肉又哭又笑生动活现的部分,应当是 Marilyn 离家出走去实现自己读完大学成为一生的梦想,但发现自己又有了第三个孩子不得已回归家庭的那一刻。在这个支线中,每个人物的性格、地位与内心的渴望都得到淋漓尽致地表现。
Marilyn 渴望摆脱母亲的命运,渴望与众不同,渴望成为医生,但是与此同时,又与其他普通人一样在医院里看到女医生会觉得奇怪,这种矛盾的心理赋予了 Marilyn 鲜活的人性。
James 则渴望融入社会,渴望别人接纳自己,一生生活在自己受尽排斥的阴霾之中,看到儿子 Nath 逐渐成为自己当年的影子他开始疏离儿子,而妻子 Marilyn 无故地离家出走又让他觉得果然白人是看不起中国人的,跟他结婚就是不应该的,多年的疮疤再度被揭开。
还有女儿 Lydia,脆弱的内心一直单纯地祈祷让母亲回家,只要母亲回来就好,于是这种渴望在母亲回家后成为 Lydia 内心最大的负担。好在有哥哥 Nath,这个习惯了被父母忽视的男生,自立自强,一直坚信有一天能够离开这个令人不开心的家庭,找到自己的自由。
我觉得这一段真是全书写得最精彩的一段,每一个人物都各有牵绊,各有自己的打算,各有自己的悲伤。而 Marilyn 的离家出走以及回归,则使各个人物后面的心理发展成为自然。情感的澎湃在孩子们呆视母亲仿如陌生人,又肆泪拥抱母亲的那一刻达到顶点。
这一段大约在全书 50% 的位置,这个位置是个分水岭,前半部分除了开头之后情节拖沓,但是交代的背景又不可或缺,后半部分有了前面的铺垫,展开来顺风顺水,自然得多,只是还稍微嫌有点太长了。
最后故事的结尾在 Nath 和 Jack 在湖边的打架结束,Nath 沉入湖底,感受了妹妹当时的感受,随后又浮出水面,“太晚了。他已经学会了怎样不被淹死。”
我觉得故事的结尾有些过于平淡。按照作者开篇的悬念来写,如果把 Lydia 的死因放在最后揭示会更令人感动。作者在书中把 Lydia 深夜划小船到湖中央的原因处理成是给自己一个借口,从来不会游泳的她如果能够游到岸边就重新开始新的生活,否则就让一切都结束吧。这种解释始终有点牵强,毕竟带有的乐观成分太高,而 Lydia 给人的感觉是她已经受够了这个高压炉了,她已经完全受不了了。
一个好的开头可以让这本书卖得不错,一个好的结尾可以让你的下一本书卖得不错。这本书的开头不错,中间部分有点拖沓但很令人感动,如果结尾能够再掀高潮就更好了。
15.09.03/夜
于自宅
2022-08-20 原《每周读书》系列更名为《枫影夜读》
自 1985 年出道以来,东野圭吾每年都能保持 3—5 本作品的发行,真不愧是名副其实的高产作家。这本《恶意》是东野 1996 年发行的 5 部作品之一,同年的作品我只读过短篇集《毒笑小说》,那部作品差强人意,并不怎么有趣。
然而《恶意》却以其机巧的反转设计,特别的叙事结构,多元的人物塑造,以及时不时穿插的揶揄讽刺,深深地吸引了读者。从此作我们可以看出东野已跳脱本格派推理的“凶手是谁”的悬念,转而在凶手动机的追查上巧设机簧。
《恶意》一书围绕“校园暴力”的主题展开,这是一个大多数人都非常熟悉的话题,经历过校园暴力的人,无论是欺负者还是被欺负者,都很难忘记那段经历,于是这本书就很容易引起读者的内心共鸣。虽然现实生活中大多数校园暴力并没有小说作品中的严重,但是类似事件还是会给年少的内心留下深刻的阴影。(比如枫影现在还会很清晰地记得中学时被人欺负的场景,泪目。)《恶意》抓住这个特别残忍却又容易被世人忽略的话题,制造了一起极端的事件,发人深省,读罢全书,令我印象最深的不是东野炉火纯青的写作技巧和一波三折的反转,而是这个司空见惯的话题下世人习以为常的冷漠,东野抓住了这个病态的“日常”,笔锋犀利,入木三分。
枫影非常喜欢技巧漂亮的作品,比如独倚望江楼的周邦彦,比如马蹄声洒落在街上如白色小花的何其芳,东野的作品同样漂亮,不在辞藻的雕琢,在故事的结构。
《恶意》九章,各以不同人物自己的手记、回忆、自白来写,翻开此书的第一页我就想起阿加莎的《罗杰疑案》,这部作品也是比较特别的以凶手的第一人称视角来写的,所以看到本书的第一段就已经知道凶手是谁了,好在这本书凶手是谁并不重要(笑)。这样的写法好处非常明显:因为是第一人称视角的手记,可以随意布置盲点?(反正是从我嘴里说出来的,从我的笔下写出来的,做不得真)。基于这一点,作者才得以在本作中自由反转,一层又一层,给读者带来畅快的情感体验。
为了实现多人视角的叙事结构,作者需要倾注相当的精力。虽然凶手与被害人只有那两个固定的名字,但是反转的故事一定有对立的人格,每一个人格都需要相当的思虑与设计,才能成为一个血肉丰满的人物,否则就是空洞的白纸,所以作者至少要设计两个对立性格的凶手,以及两个截然不同的被害人。除了警官加贺恭一郎的性格可以不变外,这本书的三个主要角色就得有五个性格。再加上配角们,加上第七章加贺去调查当事人周边的人的访谈。每一篇简短的访谈都是一个个性鲜明的人物,仅仅从谈话的语气就需要分辨出这是个什么样的人物,虽然相对于长期存在的配角来说,这样的人物只要访谈一结束就可以消失了,但是塑造这些谈话还是需要一定的精力。这是视角切换带来的缺点,作家需要设计的人物变多了,但是可以看到作家在此作中可谓游刃有余,这就需要作家平时有一定的积累。这让我想起《毒笑小说》这本短篇集,当时给我的感觉就是:这大概是作家平时积累的写作素材拿出来热一热就发表了的吧。
除了人物之外,《恶意》中还出现了几处“故事中的故事”这样的设定。由于本作的主要事件与小说作家的作品相关,难免会描述几个作品的内容,这里虽然只是提到故事梗概,但每个故事都十分完整,足见作家平日的构思,尤其是核心作品《禁猎地》,把“校园暴力”的故事以被害人作品这样的形式写出来,比起直接叙述被害人的经历要更令人信服。还有本作中穿插的对教育界的揶揄讽刺也是景上添花的闪光点,比如“老师和学生的关系建立在一种错觉上,但是维持这种错觉对双方而言都是幸福的事情”,类似这样的论点在书中有几处,文笔非常犀利。
自此,我们可以说《恶意》是一部技巧成熟,立意高远的作品,然而,就如书中加贺警官所说:
解释得通和百分百信服是两码事。
推理小说如果逻辑不够缜密则容易给读者留下无法信服的印象。有的读者喜欢追查推理小说的蛛丝马迹找出逻辑漏洞,我对这方面兴趣不大,但是有一点始终觉得不太舒服:就是凶手野野口修的真正动机。
他背负着少年时期“校园暴力”受害者的包袱,又经历过“被迫成为协助强暴同学”的帮凶,这段经历确实足以成为他内心的阴影,再加上被害者日高以德报怨的帮助,他自身的妒忌、癌症等多方面因素的侵扰下,野野口成为真凶的动机可以说是很成熟的。但是,作者刻意采用的多人第一人称视角切换的写法,却恰恰漏了“真实的野野口”这一视角。读完全书,我依然非常好奇真实的野野口修到底是什么样的人物,他的性格应该十分阴沉,善于演技,而且善于写作,而且内心的扭曲应该是世人无法想象的,我们能想象的是,他一定有一套自己发展出来的扭曲但是坚实的三观。这一个视角如果写得好的话,我认为比起以加贺的角度去解读野野口的心理,要更加令人震撼。
但是很可惜作者并没有写下“真实的野野口”这样的视角,连一次以这样身份的对话都没有,说得好听叫“留下悬念”,说得不好听就是“结尾太仓促了”。
最后我想说瑕不掩瑜,这部《恶意》依然是东野圭吾非常优秀的作品,即使带着“没有真实的野野口的叙述”这样的遗憾,也不妨碍它成为与《白夜行》并列的好作品。
15.08.30/下午
于自宅
2022-08-20 原《每周读书》系列更名为《枫影夜读》
我们说东野的作品最大的亮点在于社会问题与人性的探讨,但是他并不是从一开始就写这些话题的。出道作《放学后》就是经典的推理小说,重点在“凶手是谁”这件事情上,到了后来小说《宿命》被称为是创作风格的分水岭,从此以后,凶手不再是小说的主题,“凶手的动机”成为他作品中的主题悬念。以此为契机,东野创作了《白夜行》、《幻夜》、《秘密》、《嫌疑人x的献身》等作品,这一时期的东野可谓是人生巅峰。
这本 2014 年的作品《虚无的十字架》秉承了东野一贯的做法,在推理的形式上,探讨了一个很大的社会话题——死刑。
死刑是古已有之的最高刑罚,在几乎所有的人类社会里都有死刑这种刑罚。近年来废止死刑作为社会话题一直被人反复探讨,并随着各种严重刑事案件的出现成为一时话题,比如药家鑫案就曾引发人们对废止死刑的热烈讨论。其实废止与支持死刑就像一场辩论比赛,正反双方各有道理,没人能说出绝对的黑与白。
东野在《虚无的十字架》这部作品里,从遗族(受害人家属)的角度出发,进行了一系列探讨。探讨的话题也离不开正反双方集中讨论的几个论点:
支持死刑的人认为杀人偿命,天经地义,对于杀人犯来说,死刑是最符合善恶报应的结果。反对者则认为无期徒刑的惩罚性比死刑要高,而且政府本身没有权力剥夺人的生命,法律也不是作为报复的手段,监禁教化犯人是比简单粗暴地死刑更好。
知道罪犯被执行死刑,对于受害人的遗族可以有一定的心理安慰。但是反对者认为死刑事实上并没有实质性的帮助,死者不能复生,把罪犯处死了受害者也没能活过来。
支持者认为死刑可以彻底隔离罪犯,反对者则认为无期徒刑加上不得假释也可以隔离罪犯。
支持者认为如果司法公正严谨,则极少可能会产生误判,反对死刑者认为无法完全避免误判,而一旦冤杀则永远无法补救了。
《虚无的十字架》从遗族的内心出发,作为失去独生女儿的父母,当然希望罪犯接受死刑:
要求杀人凶手自我惩戒,根本就是虚无的十字架。然而,即使是这种虚无的十字架,也必须让凶手在监狱中背负着。
但随着故事的发展,这位坚决的母亲在态度上发生了转变,事实上也就是支持派与反对派的斗争。小说各自挑了一个对支持派与反对派有利的案例来展开,在“是否应该废止死刑”这样一个根本没有答案的话题上,作者非常鸡贼地把诠释地交给主角,以主角的角度含糊地带过。所以是“死刑话题”赋予了东野这部小说不错的思想内涵,同时也是这个话题的无法解答使得这部小说不够深入。作为一个文学作品,不管是正方也好反方也好,只要作者的信念足够坚定,作者本身相信了这个观点,就能灌注给这部作品相当的活力与深度,但是由于作者本身的犹豫导致主角的犹豫,由于主角的犹豫导致作品流于表面。
从《白夜行》探讨孤儿、恋童癖与社会不平等问题,到《红手指》探讨老人赡养问题,到《秘密》探讨性倒错问题,作者在这几个话题上都有明确的个人立场,所以这几部作品给人气场很强,坚不可摧之感,但是《虚无的十字架》由于作者自己也给不出明确的答案,我只能说,故事讲的不错,有东野一贯的水平,但是过几天我肯定会忘了。
15.08.23/下午
于时光 Cafe