
枫影有过几次自行车旅行,旅途中遇到了些有意思的人,听到了些奇怪的故事。我发现当一个人与自己熟悉的生活疏离,成为一个渺小的过客,旅途中陌生的一花一草仿佛都有了新的意义。一个人的旅途是如此简单,所做的事情不过是把一只脚抬起来,另一只脚踩下去,一直骑下去。有时候遇到陡坡与狂风会困苦,会疲累,这时候路人善意的大拇指与小孩天真的笑容能让你再度充满动力,艰难的旅途总是容易感动,这种陌生人间的简单正是旅行的魅力所在。
可能有些读者会觉得骑自行车长途旅行是一件很困难的事情,但其实只要会骑自行车就能走完全程。这种看似艰苦的旅程其实困难的只有一点,就是出发。2012 年英国前 BBC 广播编剧 Rachel Joyce 在退休后出版了自己的第一部小说《一个人的朝圣》(The Unlikely Pilgrimage of Harold Fry),这本书讲的就是退休老人哈罗德如何踏上徒步穿越英格兰去看望罹患癌症的朋友的故事。
故事开始于一封来自多年不见的朋友奎妮的来信,信中告诉哈罗德奎妮得了癌症,以此信告别。哈罗德大感震惊,他走在去寄回信的路上,一边犹豫一边错过了一个个邮筒,最后他终于下定决心,打了个电话给疗养院,要奎妮等着自己,他要徒步穿越英格兰去见她。
这是一部情感类小说,作者 Rachel 还在 BBC 工作的时候写过短篇广播剧 To Be a Pilgrim(2007),退休后以此剧为基础写成了长篇小说。这部广播剧是 Rachel 献给当时在跟癌症搏斗的父亲的,很可惜父亲没能撑到作品问世的时候。
由于故事的内容是哈罗德徒步穿越英格兰去见昔日朋友奎妮,所以主要的看点就有两个:
Rachel 的文笔很好,常常把人物的细腻情感与美丽的风景天衣无缝地揉和在一起,比如哈罗德致电疗养院希望跟奎妮谈话的时候,接电话的女人一声长叹,哈罗德心中顿生寒意:太晚了,奎妮死了。这时,
那个声音说:“恐怕轩尼斯小姐正在睡觉。我可以帮您传个口信吗?”
小朵的云在地上投下影子,走得飞快。远山的光影一片雾蒙蒙,不是因为薄暮,而是因为山前蔓延的大片空地。他思量着现在的情景:奎妮远在英格兰的那一头小睡,而她站在这一头的小电话亭里,两人之间隔着他好不了解、只能想象的千山万水:道路、农田、森林、河流、旷野、荒原、高峰、深谷,还有数不清的人。他要去认识它们,传过它们——没有深思熟虑,也无须理智思考,这个念头一出现,他就决定了。哈罗德不仅因为这种简单笑了。
枫影读的是北京联合出版公司出版的,由黄妙瑜翻译的版本,译文仿佛有些何其芳的影子,优雅晓畅,读起来非常舒服。全书 32 小节,除去开头和结尾,有 26 个小节是在路上发生的故事。这里面的内容有一部分是旅途中发生的事情,另一部分就是“回忆杀”。
回忆杀在这部作品中是必不可少的,因为哈罗德走得过于匆忙,需要对背后的动机作出解释,另一方面回忆也是一个平行故事。回忆杀如果用得好是锦上添花,用的不好就啰嗦拖沓了。看过《火影忍者》的读者,想来还对“回忆杀”心有余悸吧。这部小说的回忆部分只能说差强人意,不算啰嗦但也不够简洁。只有到了全书结尾,支线故事回归到主线,作者把留好的大招一并放了,推向全书高潮,才算精彩,其他的回忆则有些累赘。作家在决定下笔写书的时候曾和她的经纪人见过面,经纪人问她你现在手头有多少字了?她说 35,000 字。但是回家一看只有 8,000,现在看来作家急于扩充字数可能也有影响。
他们顺着蓝色的地毯往前走,一点声音都没有。没有掌声,没有笑着的护士,也没有欢呼的病人。只有一个哈罗德,跟在一个修女松散的剪影后,走过一条空荡荡的、干净的走廊。
作家非常擅长这种通过环境来突显人物心理的手法,相比之下,旅途前期遇到的人与事就是画蛇添足了。哈罗德曾遇到奇臭的流浪汉给予拥抱,时髦的绅士向他吐露自己是同性恋的苦闷,也有遇到骑自行车穿越英格兰的一群疯狂的女人。但是这些分支都对故事主线没有什么帮助,仿佛作者就是想要营造“一个人的旅行应该会有的那些事情”的感觉。这些独立的小故事如果对主线没有作用,读者是提不起兴趣的,反而会觉得被分散了注意力,还得在主线和支线间来回切换,有点懊恼。这点到了故事后期有所改善,哈罗德“朝圣式”的徒步开始获得公众的关注,大家对他的看法不一样了,开始有些奇怪的人要求加入朝圣队伍。这时候发生的故事对主线就很有帮助了。
在这些支线情节中,作者都刻意要讽刺现实针砭时弊,试图以此与哈罗德徒步旅行的简单朴实作比,但是下笔不够犀利,柔和的文风没有挖掘出人性的深层,所揭露的事情流于表面,不够过瘾。
比如对那个在火车站吐露自己是基佬的绅士,作者只是做了几句不软不硬的点评:
全英格兰的绅士都是这样的,一个个买着牛奶,给自己的汽车加着油,或者正在寄一封信,但没人知道他们内心深处背着的包袱。有时他们需要付出简直不为人道的努力来扮演“正常”,每天都要装,还要装得稀松平常。那种不为人道的孤独感。
把这些大家都知道的事情复述一遍又有什么意义呢?既不能唤起读者的同情,也对主角没有什么深刻的影响。从这个角度讲,26 小节的旅途大约有三分之一都是平平无奇的。
所以枫影对此书感兴趣主要还是由于哈罗德一个人的旅程。他是一时兴起出发的,没有受过专业训练,没有良好的装备,也没带换洗衣服,甚至手机都忘在家里。这让我想起以前环青海湖骑行的时候遇上一对从来没有骑过长途的情侣,他们骑得很辛苦,但最终还是完成了旅程。哈罗德做的是徒步旅行,比自行车要更艰难,所以作家安排他在旅途中遇上好人,帮他解决了脚上的水泡问题,还送了一身装备。
旅途中的陌生人互不相识,也不了解对方的过去,但是有什么所谓呢?对陌生人你可以表现出不是自己的那一面,甚至成为一个自己“想成为的人”,这些现实生活中想做而做不到的事在陌生人面前是如此简单,这就是旅行的魅力啊!
我回想起在旅途中遇到的小伙伴们,旅途结束后他们回到自己的生活中,照样过着平凡的生活。但是他们的故事已经成为你回忆的一部分,你也已经成为别人回忆的一部分,这些故事是真是假是云是雾都不重要,重要的是旅途的美好,你业已体会,旅途的记忆,已成为是你的记忆。
2016.01.02/下午
于自居

每周读书 #53 曾介绍过石田裕辅的《不去会死!》一书,这位来自日本的自行车骑士花了 7 年时间用自行车环游世界,这本书写了作者环游世界的种种故事,是一本很燃很有意思的书。也是这本书让枫影明白什么才是真正的旅行。关于旅行的书,每周读书还介绍过孙东纯的《迟到的间隔年》(每周读书 #56)以及《间隔年之后》(每周读书 #57),都是不错的旅行主题的书。这些书不同于攻略与 Lonely Planet,更多的是作者的身心体会,读来仿佛随着作者一同游历世界,都是很有诚意的文字。

广义上“乌托邦(utopia)”可以指幻想出来的无法实现的的美好世界。这个词最早来自 1516 年英国托马斯·莫尔爵士写的《乌托邦》一书,这本书通常也被认为是空想社会主义主义的先驱。而其实“乌托邦”的思想由来已久,可以上溯到柏拉图的《理想国》。在莫尔这部作品出来之后,乌托邦的概念曾盛极一时,直到 1890 年还有《乌有乡消息》(News from Nowhere)这样的作品出现。
但是乌托邦盛行的后期,人们发现这种过于美好的幻想根本无法付诸实践,比如《理想国》与《乌托邦》这两部作品中所定义理的想社会,涉及人们生活的方方面面,这种事无巨细的精细规划事实上约束了人们的自由,反而削弱了乌托邦的美好。
于是 1920 到 1948,反乌托邦三部曲诞生了:尤金·扎米亚金的《我们》、赫胥黎的《美丽新世界》以及乔治奥威尔的《1984》。三部曲每周读书介绍过后两部,《1984》的“Big Brother is Watching You”至今还在我们的生活中每日上演,《美丽新世界》则以科幻的视角去讲述一个毫无个性的社会,二者都涉及极权统治与对自由、知识的约束。
反乌托邦(dystopia)所幻想的世界则主要聚焦于对未来的糟糕的忧虑。艺术也好,文学也好,思想总是新一波浪潮推翻前一波,反乌托邦取代乌托邦思想直到今天都还是主流。比如动漫作品的《进击的巨人》,游戏作品的“地铁系列”、“Fallout 系列”,以及本周读书要介绍的主角——《羊毛战记》。
《羊毛战记》的英文书名为 WOOL,作者一共分开写了五部,枫影读的是湖南人民出版社出版的合集版本。这本书的出版有点意思,作者休·豪伊(Hugh Howey)早期只是写了《羊毛战记》的第一部,篇幅也就一个中短篇小说的样子,大出版社对他没什么兴趣,后来他发现了 Amazon.com 的 Kindle 自出版系统,于是就把这个短篇发到上面试试,没想到受到读者的热烈欢迎(这让我想起《火星救援》放到 Kindle 上然后成为 2014 年最畅销科幻小说的故事)。于是作者受到鼓舞,接着又写了后面四部,把这部短篇扩充成大长篇,后来又把五部小说合并出版了 Omnibus 版本,这是大概 2011 年到 2012 年初的事情。
写完《羊毛战记》后作者仍不停笔,继续以类似的做法写了续集 Shift 系列和最终篇 Dust。这三部完整的作品构成了“地堡系列”(Silo Series),本周我们只介绍地堡系列第一部。
《羊毛战记》的背景是在近未来年代,由于核爆战争的原因,地面空气已无法适应人类的生存,于是大家都生活在地堡底下。地堡是长条圆柱状往地底延伸的封闭空间,中间有一个巨大的螺旋楼梯,地堡的设计与居民的分布大致为上中下层,与政治、社会地位挂钩。

这样一个地堡就是一个缩微的社会,前面我们介绍到反乌托邦作品大多涉及极权统治,地堡社会也是一样,上层的小部分人统治了底下的绝大多数人,所以思想控制是维持地堡社会稳定的一个重要手段。而思想控制意味着个性的抹灭与自由的丧失,居住在地堡里面,人身自由早已所剩无几,再加上严格的言论控制,地堡就仿佛一个高压锅。为了缓解地堡的紧张的压力,与地面对接的最顶层部署了巨大的屏幕,可以透过地堡周围的摄像头看到地堡外的世界——无边无垠的沙丘。
由于酸性的腐蚀与沙尘暴的袭击,摄像头不可避免的会日渐模糊,于是地堡的社会产生了一种独特的死刑:送罪犯出去清洗镜头。每次镜头清洗任务完成之后地堡里的人就相当于释放了一次压力,人们总会忘记被送出去的人的牺牲。
小说从清洗镜头这件事情作为切入点,有高压就会有冲突,有冲突就会有故事,有故事就可以设悬念,有悬念就能驱动读者继续读下去。作者在布置悬念这块可谓得心应手。第一部短篇,寥寥数笔就给读者展示了一个荒凉的末日沙丘世界,最后人物踏出地堡去清洗镜头那一段更是深深抓住了读者的内心,是一个极好的开头。
如果有人在地堡里看,他们会看到什么?
荒凉死寂的土黄色沙丘,一道黑暗的沟槽,一具即将死亡的蜷曲的人体。远处那日渐腐朽破败的城市高高送礼,俯视着他。
如果地堡里有人在看,他会看到什么?
从这段简短的书摘我们可以看到作者的功力以及译者流畅的文笔。但是我们前面也说了,这部小说作者是分了好几部分写的。这就导致了一个问题:第一部和第二部的人物衔接不上。简单的说就是出场的人物很快就死了,读者忽然一愣,靠,老子追随了这么长时间的人物就这么轻易地挂了?(《冰与火之歌》的作者笑了)好在后面三部作者把主角交给了不死的朱丽叶,这个强悍的女主角终于套上主角光环,一直到“地堡系列”结束都不死。
分开写的第二个问题是,每个独立的部分都具有完整性,简单地说就是:啰嗦。作者非常不擅长写男女之间的情感,毫无细腻可言,相比起地堡社会的设计、悬念的铺设,情感描写简直就是幼稚园的手笔。第一部的人物是夫妻之间,设计还算合理,唯一不合理的就是妻子主动要求出去洗镜头送死这件事情,事先完全没有跟丈夫商量的余地。第二部开始就天方夜谭了,两个加起来一百岁的老人家,为了寻找保安官候选人(原先那个在第一部挂了),从顶楼走到对底层,过程中旧情复燃。按理说复燃就复燃吧,爱情本来就不关乎年龄,但是能不能不要每翻一页就说拿水壶的时候手碰了一下就脸红了,喝了你的水壶就脸红了,走路的时候不小心靠在一起就脸红了,脸红泥煤啊!俩老人家这么多年了,什么大风大浪没见过,这种描写应该放在两小无猜的豆蔻小儿那里去啊,放这俩老人身上看得我心里直发毛,每次一看到这种描写就赶紧略过。而且这种暗示写个一次两次也就够了,他居然把第二部的全篇都写满了这种暗示……
再往后面不死主角朱丽叶出来了之后,她在黑暗中遇到了一个程序员小哥,两人连面都没有仔细瞧过,就莫名其妙互相爱上了……
小说,就是把看似巧合的事情以合理的方式说出来,如果实在想不到什么合理的手法,就说他爱上她就好了,爱情嘛,最难琢磨了。《羊毛战记》里面可以说所有主要人物以及死亡事件的主要动机,就是爱情。无可否认爱情是一个很好的借口,但是生搬硬套的所谓爱情,就真的是为了找借口而写借口了。
《羊毛战记》推出后受到很多五星好评,我个人觉得也许跟作者自出版这件事加上连载的形式有关,他的这项举动也算一种创新之举,在崇尚个人主义的美国文化中,相当于一个不受重视的小虾米给了出版社大佬们当头一棒。而且作者还推掉了出版社 7 位数的合约以保留电子版的权利。作者在写作前曾做过屋顶工,帆船长等工作,现在光是《羊毛战记》一书的出版就已经收入不菲,这本书还签给了 20th Century Fox 准备拍电影,相信这个屌丝逆袭的故事也对好评率有一定的助力。
客观地说,《羊毛战记》的背景设定,社会架构设定,冲突设定以及剧情的推进都是非常不错的,虽然人物情感描写比较糟糕,而且由于形式的问题导致篇幅有些啰嗦冗长。至于情节设定方面到了朱丽叶反抗开始就没什么突破了,地堡的世界比较小,来来去去都是上中下楼层,如果能够把故事扩展到地堡外面的世界也许会有更多的可能。
《羊毛战记》还有一个可以吐槽点,就是书名,其实全书跟羊毛一点关系都没有。英文的书名里面,子标题 Proper Gauge(指选择合适口径的毛衣针), Casting Off(收针), The Unraveling(拆解) 和 The Stranded (间色编织) 都是织毛衣相关的术语,但是全书跟羊毛没有半点关系。╮(╯_╰)╭
2015.12.30/中午
于 T.i.T

从 11 月到 12 月,从《蒋勋说文学》到《月亮与六便士》,又到了“枫言枫语∙每周读书”的书单时间了。过去两个月里我们给大家介绍了 8 本书,其中有几本枫影印象比较深刻的。
《Being Mortal》(中译本《最好的告别》)唤起了读者对死亡的恐惧,惊觉我们对死亡与衰老知之甚少。《启示录:打造用户喜爱的产品》是关于互联网行业的书,它道出了一个普通员工在大公司里会面临的问题,是非常实在的指南。《增长黑客》则介绍了一个比较前沿的概念: Growth Hacker,概念与故事比较有意思,除此之外的干货含量则见仁见智了。
以下是过去 8 期介绍的书目:

蒋老师在书中以独到的见解,平和的语言,结合历史社会背景以及个人的故事经历,把文艺作品讲述得十分生动。蒋老师摒弃一般人讲诗时做注解的方式,转而以审美的目光来分析,比之于严肃文学的解读,蒋老师的讲解要容易接受得多。
每周读书#98 Atul Gawande——《Being Mortal》

2015-11-14
《Being Mortal》(中译本《最好的告别》)唤起了病痛的回忆,也唤起了死亡的恐惧。我们自以为理解这个世界,事实上不仅不了解的事情很多,甚至对自己本身都知之甚少。《最好的告别》告诉我们死亡与病痛的可怕,告诉我们其实我们完全不了解应该如何去面对死亡。
每周读书#99 Orson Scott Card——《安德的游戏》

2015-11-19
这是安德系列的第一部,作者早期写了《安德的游戏》短篇版,后来想写第二部《死者代言人》的时候,考虑把第一部的主角拿过来用,所以需要一个过渡的故事,最后他决定把短篇扩展成长篇,才有了这部中间故事精彩(原来的短篇部分),前后部分牵强的获奖作品。
每周读书#100 封面设计师的阅读之道——《当我们阅读时我们看见了什么》

2015-11-21
Mendelsund 并不是科班出身的设计师,他本是一名钢琴演奏家,后来他因缘际会受到企鹅出版社的封面设计师 Chip Kidd 的赏识,于是他就忽然从一个音乐家转行成为设计师了。
每周读书#101 先有续作再有原作——《死者代言人》

2015-12-03
现实是局限的,现实是孤独而平凡的。我们有一颗不甘于平凡的心,却身处于这个平凡的世界。所以我们阅读,我们在阅读中体验到灿烂的幻想与精彩。科幻小说是基于科学的幻想,也是我们基于现实的梦。
每周读书#102 用户增长黑科技——《增长黑客》

2015-12-09
作者范冰写过代码做过运营,各方面涉猎挺广,积累了不少互联网故事,于是作者在这本书里面堆砌了大量的案例,从国外的 Hotmail, Twitter, Airbnb, 到国内的微信,美图秀秀,唱吧等应用,这里有许多非常有趣的故事,令人深受启发。
每周读书#103 牛逼的产品经理是怎样的——《启示录》

2015-12-17
人们在大公司里的工作状态: “大部分人游荡在黑暗里,他们只知道抱怨,却从不想办法寻找电灯开关。”
每周读书#104 美的狂热的追求者——《月亮与六便士》

2015-12-24
大多数人都是忙碌社会中沉浮漂游的一部分,就像始发站到终点站的有轨列车,每天来来去去,一成不变,连车上乘客的数目也能猜个八九不离十。这种生活秩序得可怕。艺术家大抵是最能义无反顾地闯入迷雾的一群人。
15.12.27/夜
于自居

大多数人都是忙碌社会中沉浮漂游的一部分,就像始发站到终点站的有轨列车,每天来来去去,一成不变,连车上乘客的数目也能猜个八九不离十。这种生活秩序得可怕。但是大多数人更怕改变,更怕选择,更怕未知,探索未知需要勇气,而这恰恰是大多数人所缺乏的。
艺术家大抵是最能义无反顾地闯入迷雾的一群人。他们凭着对美的狂热的追求,一头扎进常人所无法理解的世界里,去流浪,去创造,去宣泄自己心中澎湃的热情。有时候他们也说不上为什么要这么做,就像一个人被扔进水里,他只能不停地游,否则就会死去。画家高更的名字想来大家都耳熟能详,他原是一名法国证券交易所经纪人,股市狂跌之后,他下决心投身艺术。后来由于各种原因离开了妻子,开始全身心投入艺术领域里探索,最终在荒蛮原始的大溪地(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/下午
于自宅
