Just For Fun

任何理解之前,先有表达    表达产生于对重要性的感受

2012北京迷笛音乐节

来京三年有余,每年五一都因各种缘由没留在帝都界内,学生时代就听闻其名,向往不已的北京迷笛音乐节一直未能亲身体验。今年因工作上掺和的项目正处攻坚阶段,不能远行。正好留京赶赴中国摇滚音乐第一节迷笛2012

今年的迷笛本来计划放在城内的海淀公园,临近举办日期却因“附近居民抗议”而改迁至郊县顺义的奥林匹克水上公园。我对京北几个郊县(昌平,密云,怀柔…)和冠以奥林匹克命名的公园都有着很好的印象,最近不断转暖的天气和户外越来越多的绿色也一直召唤骑行季的到来。越美好的体验越该以艰难的方式到达,假期第一天大早,搬出尘封半年的公路车,为链条和飞轮擦去灰尘,上好机油,戴上头盔和墨镜,奔着演出舞台,一路向北,出发了。

出城区后伴着京密路上的假期出游车队和纷飞的杨絮,骑车驶入了顺义境内。相比之前到过几个京北郊县群山环绕的崎岖地貌,顺义的土地相当的平整。去年底开通的城铁15号线,把顺义离望京的距离拉到回龙观离中关村一样远,由此带来的价值提升直接反应在沿线正大规模兴建的各种大小住宅项目上,从而让顺义给了我一个尘土飞扬的第一印象。地铁开通带来的巨大商机让城内也俨然一个建筑工地,但似乎早几年的规划者没有意料到这发展速度,道路和布局的开阔度上相比昌平逊色不少。找到之前订好的酒店稍事安顿,我和友人既匆忙赶赴音乐界现场,希望能尽量多看一支乐队的表演。

到达奥林匹克水上公园后,当日的演出已进行过半,可门口排队买票的队伍仍然很长。问过队伍前面的姐们后得知,原来票务方在公园内电吉他声仍响彻全场的情况下,竟以停电出不了票为由停止售票了近半小时。等待买票入场的队伍中既有皮夹克,莫西干头扮像的应景潮人,也有带着老婆小孩赶赴假日大趴的亲子团,大家三三两两的聊着天,偶尔抱怨两句。借此机会早已高价倒光手中余票的黄牛,正焦急的在队伍旁打着电话,听起来像是在联系内线争取再多搞几张。又等了近半个小时后,在队伍已经衍生到公路上后。票务棚中打牌的工作人员终于开始恢复了售票。

买到票入场后正值演出间隙,主舞台”唐”下一支登场的乐队是自己喜欢的”扭曲的机器“,这只金属说唱乐队既有能被充分表达的愤怒,又能制造足够刺激的节奏,还创作出了悦耳,舒缓,充分体现铁汉柔情,甚至不输Guns N’ Roses”November Rain”的”镜子中“这样的经典慢歌。在我心目中完美的流行摇滚作品就该像”镜子中”这样有个温柔舒缓的前奏,歌词不需华丽但别空洞;进入高潮时决不拖泥带水,不管是飚SOLO还是撕喊用尽全力无保留,时间要长;由一个没有媚俗经历的金属乐队演奏。扭机的歌很适合POGO,在”别惹我”的音乐声中我挤入舞台前玩了当天唯一一次POGO,前几个月的力量练习让这次POGO身体基本没做太多被动运动。随后主唱梁良发表了一番过了而立之年后的感慨,表达了将会继续RockRoll的决心,这让场下一干刚刚躁动玩的乐迷感动不已。感谢这些老炮们的坚持,有和自己一起慢慢变老,但一直在路上的的摇滚乐队是件非常幸福的事。扭机最后演唱“镜子中”时天色终于暗了下来,在全场渐渐璀璨的灯光中静静听完这首歌,之前所有的不愉快和疲惫被蒸发得一干二净,不留痕迹。

扭机之后,我和友人移步宋舞台,死亡金属乐队”窒息“正在这里演出。这支乐队我之前没有接触过,死亡金属平日听的也不多。但在现场,自己还是很快被他们的强烈的台风所抓住,在那一瞬,他们用手中的乐器,用嘶喊,用目空一切的眼神让这舞台成为宇宙中心,我没听清一句主唱的歌词,但也没有必要。让现场包裹一切的音场把自己的思维压缩到当下从而摆脱对过去,未来的束缚,这就足够了。

迷笛第一天的表演由崔健压轴。关于老崔,无论圈内圈外如今都把他奉为”中国摇滚教父”,但这个称号仿佛把崔健放入了高远的神龛中,让乐迷往往忽略掉他在成名后持续先锋的一面。演出最后的返场间隙期,”点歌”呼声最大的还是他近三十年前的成名曲”一无所有”,当然这可以反映这首作品巨大的影响力和好音乐超越时间的一面,但从另一个角度来看。像崔健这样中国流行音乐界的顶级艺术家,在获得承认,并持续创作数十年之后,最出名的作品仍然是最早期的作品,这莫不是崔健的悲哀,也是中国流行音乐环境的悲哀。除此之外,虽然贵为”教父”,崔健作品中的重要特点”政治隐喻”在他之后,少有乐队继承,而这点是”摇滚”作为一个概念而不仅仅是一种音乐演奏方法时重要的一面。当然,这问题如果展开来探讨,一定会归结到我们所有人都处于其中的时代背景。从这个角度来看,崔健相对现在的摇滚乐手们又是极为幸福的。当晚的演出,崔健和乐队的表现无可挑剔,外围的混响,灯光,适时点燃的红色烟雾灯,背景幕墙上的迷幻动画也达到了当日的最高水平。把演出当一个项目来看,方可见崔健团队的成熟和强大,虽然还是出现了两次麦克风短暂失音的小BUG,但我已经等不急期待他们的下一次出击了。当晚的表演曲目中”红旗下的蛋”,”盒子”,”新长征路上的摇滚”都是我很喜欢并熟悉的作品,听得自然全身通透。但最令我兴奋的是之前不太熟悉的”蓝色的骨头“,从顺义回来这几天,这首歌不知反复听了多少遍。老崔在这首歌里描写了一个”我的工作就是一个写字的,只要我有笔谁都拦不住我”的文字青年探索生活意义的过程,歌曲的前半部分描写了这”春天的花朵”对事业,身体,爱情这支撑生活三条腿的追寻。 歌词的后半段风格一转,不再平铺直叙,而是转为抽象代表人心灵,身体和智慧的红,黄,蓝三色在当今社会大酱缸中的无奈沉浮,在结尾的标志性小号声中,老崔实现了对歌曲前段人生导师形象的扬弃。

这次2012北京迷笛音乐节的主题是”PM2.5″,这名词去年底开始传播时,我和几个朋友像当天音乐节上很多哥们姐们一样找来专业防护口罩带起拍了张有意思的照片,当时我为那张照片写的微博文字是:

不要用CCAV,励志书,小概率成功机会来构造渺茫和虚假的希望。地沟油,PM2.5,车房限购才是真实的生活,也是我们的清醒剂。“世界上只有一种英雄主义,就是发现了生活的真相依然热爱它。”

我想,这也是摇滚的精神。













编写可复用的组件库

不知从去年什么时候,连续从身边好几个同事朋友那听到”我们一起来写套组件库吧”的倡议。由于忙于琐事,没有立即着手,但受此刺激自己也开始思考一套好的组件库将是什么样子。

今年开始做新项目后,发现自己开始在做一些之前做过的事情,程序员最讨厌重复,加上话新思旧时自然会产生的反思,对上一个投入这么长时间和精力的项目,觉得自己积累出的成果实在太少了,心有不甘。和项目组里哥们姐们合计后,决定行动起来,打造一套不光对当前项目有帮助,还能争取在公司越来越多的同类项目中发挥作用的通用组件库。

自己没有学过科班的软件工程,对”可复用”,”组件”,”框架”等概念的理解小半来自平时看的文章和讨论,大半来自之前接触的各种从后端到前端,从Web服务器到自然语言处理工具包,从业界知名的开源框架到公司内部的”核心资产”等各种”软件可复用”成果。这些大大小小的作品不光让我深刻体会到”站在巨人肩膀上”的幸福,还能不时带来童年把玩积木和组装玩具那样单纯的快乐。

框架或组件库最直接的作用是可复用,最重要的作用是对复杂度的控制,在软件编写过程中,我们耳熟能详的概念”模块化”,”高内聚”,”松耦合”,”内部信息隐藏”,”关切点隔离”基本上都是为这两个目标服务的。

如果你的目标是做个优秀的程序员,这些概念你应该每天都在实践。除此之外,为了写出优秀的组件作品我们还需要做到以下几点:

  • 心态:把面对自己每天工作的态度,尝试从”做项目”转换到”做产品”来。
  • 文档:把它们当作组件的UE/UX层来看待,重视用户体验。
  • 代码:虽然用户应该不需要查看你的代码就能使用你组件,但如果他这么做了时,你的代码得给他信心。
  • 交流:没有人愿意用一个停止维护,不对使用者的反馈进行处理的组件。你需要通过主页;讨论环境;消息发布;Bug汇报追踪机制与使用者建立起互动与合作。

Paul Graham在《黑客与画家》中写道, 具备”致富”潜力的工作应该具备两个特点“可测量性”和”可放大性”,能否最终”致富”暂且不论。但你可以把这两个特点当作一般性的好工作和令人兴奋的工作的分水岭。如果你所待的公司不错,一般不会缺乏对你工作成果的”可测量性”,但技术工作相对产品设计和市场,销售来说一般较为缺乏”可放大性”。(技术工作承载的绩效压力相应的也会小一些) 但如果你的工作成果不光对手中的项目有帮助,还能被其他项目复用,这就能产生”可放大性”。所以,按照Paul Graham的理论,技术工作想要”致富”,先把手中的工作成果当成”产品”来经营。

很多程序员不喜欢写文档,如果你只想做个单纯的实现者,这或许还能接受。但如果你编写的是针对其他开发者的可复用组件,文档质量的优劣,如果不比代码重要,至少也和代码同样的重要,如果你的组件是一款产品,文档就是其中直接决定用户体验的UE/UX部分,用户体验为王的法则,这里同样适用。较大型的可复用组件/框架的文档一般分为三种:

  • 手册(Reference):包含组件中的全部数据类型,方法调用接口定义的完整说明。 正确性,完整性,更新及时性是其衡量基准。
  • 教程(Tutorials):带领用户快速上手,用最简单的语言介绍组件最重要的功能,往往会包含一个或多个能运行的小例子。
  • 指南(Guides):介于手册和教程之间,同时具备手册的完整性和如何使用组件的说明或示例。

无论为什么类型的组件库服务,尽量少用抽象概念,多用例子;从简单的部分逐渐过度到复杂的部分;如果能在一页中阐述清楚尽量避免点击跳页;语言风格上适当引入一些个性都有助于写出好的文档。

最新的文档版本应该写于Wiki平台之上,让有兴趣使用你组件的同事/用户能最方便的阅读,如果你所在的公司/组织还没有Wiki平台,那动手编写组件之前应该先搭建一个或使用第三方企业Wiki产品。

代码在能运行之外,不同的语言;不同的项目类型;不同的组织都会有不同的质量标准。如果你所在的公司/组织有现成的代码审核流程,质量保证机制,那尽量配合好这个制度。如果你做在公司还没有这种体系,或仅仅流于形式,那可以多看看所用语言标准类库中的代码,尽量让自己的代码,注释风格接近标准类库中的例子。如果别人查看了你组件的代码,你的代码得给他信心,一致的风格,完善的注释,详细的变更/发布记录,高测试覆盖率都有助于实现这个目标。

你的组件库/框架需要有个首页作为一切和你组件有关信息的入口,这也是展示组件风格的重要渠道,一般来说偏向表现层项目的主页会多一些设计感,而偏向底层项目的主页往往采用极简风格,很多仅使用文字构成。有商业诉求的组件的主页一般会包含知名用例,第三方好评展示,付费支持服务之类的信息。只要包含了足够的信息入口,在开始阶段,Wiki平台上一个专门页面就是一个很好的首页。

一个好的讨论环境能极大的增强用户对组件/框架的好感。形式上可以是Web论坛,也可以是邮件列表,一些组件库还提供了IRC聊天室作为辅组的即时沟通渠道,不过在今天的环境下,微博或许比聊天室更合适。无论那种形式,对组件使用者的提问,质疑不回避,不遮掩,站在组件使用者的角度去考虑和回答问题对营造好的讨论环境都是必须的。

一款可用的组件库/框架能让使用者避免可遇见的重复性工作,但一款好的组件库/框架应该对使用者没有预料到的边界情况,异常状况也做出合乎逻辑甚至是优雅的处理。做到这点,除了依靠组件编写者的经验外,是否有足够多的机会接触边界情况从而思考对策就十分关键了。幸运的时,只要你的组件开始有其他人使用,一定会遇到各种各样的边界情况,这时候一套好的BUG汇报,追踪机制能最大化的帮助你获取整理用户碰到的边界情况,这套机制应该能让你对BUG作出分类,优先级划分,解决状态标识,甚至是代码提交记录和BUG的自动关联。知名的GitHub,Bitbucket,code.google.com等云端代码管理平台在这方面功能非常强大。如果你的环境不能把代码托管于这样的云端平台,那可以考虑自己部署Trac,Redmine这样的开源代码管理平台。

经济学家用”我们是在选项的描述之间进行选择,而不是单纯的在选项之间做选择”来描述消费者的购买行为。这个概念稍作转义同样适合我们:技术选型时用户是在不同框架/组件库的文档,社区,活跃度,口碑间进行选择,而不是单纯在最终运行的代码间做选择。

保持专注

如果你的工作没有进阶到只需要开会,疏通关系或你想尝试在业余时间进行一些创作活动,那你的成果很大程度取决于独处时的工作状态。

衡量工作状态的方法有很多,就算自己完全无视,多半也会被间接的审视和评价。考试成绩,绩效考评,客户反馈……不过这些反馈往往不会及时到来,而且存在用各种”客观原因”化解的便利。你会因内心的胆怯不去面对这些评价,也能凭借内心的强大只相信自己对自己的评价,但你逃离不了自己的感受和感受的外现”焦虑”和”拖延症”。

做好计划是一种解决方法,去年自己使用过一段时间TodoList(从实现上看Orgmode是个非常酷的TodoList软件),试图通过提前整理后续的代办事项来让自己的工作状态更加可控,从而尽量摆脱对工作的”焦虑”减缓”拖延症”,但一段时间体验下来,作用并不好。原因主要有如下一些:

  1. 首先,很多要做的事情属于开放性问题,计划时不能了解足够的信息,很多信息只有在着手做后才能逐渐掌握,这种情况下往往TodoList上的列表内容还在进行中就过时了。
  2. 其次,当已经存在”焦虑”和”拖延症”的情况下,一个庞大完整的TodoList会造成相当大的压力,而这压力反而又加强了”焦虑”的状况。这就像戒烟宣传中那些令人做呕的图片试图把”吸烟有害健康”这每一个吸烟者都知道的概念又一次强调只会给吸烟者造成压力,而压力本来就是促使我们点起烟的原因一样,起到了反作用。
  3. 最后,高质量工作状态最重要的标志“专注”并不会因为当前做的是TodoList中的项目就自然出现。

今年春节后,从朋友的微博分享内容中看到一种新的时间管理方法”番茄工作法”,核心概念非常的简单,简单到一句话就能说清楚:

在工作时启用一个计时器,设置一个不长的时间(25分钟),在这个计时器倒计时过程中,不要干和工作内容无关的任何事情,保持专注,倒计时结束后短暂休息一会儿,然后开启另一次伴随着倒计时的专注状态。

熟悉互联网的朋友都知道,核心功要能被简单说明;要让任何人都能理解;要有足够低的使用成本,是一款互联网产品成功的因素。听到番茄工作法的介绍后,我首先想到这套极简时间管理”方法论”和互联网产品理念的接近,这激发起了我最初的尝试欲望。无论在哪种平台上,倒计时软件都非常的丰富,这也使得我的尝试能很方便的实行。

这次简单的尝试进行得非常成功,我的收获首先是两个震撼的事实:

  1. 自己的专注能力已经退化得非常严重了,不说各种习以为常的打扰源(聊天窗口,邮件客户端),就算没人打扰第10分钟左右就会产生想要刷一下微博,看两眼网页的冲动,原来觉得过短的25分钟时长设置,真要完全保持专注,其实是有不小挑战的。

  2. 在一开时尝试的两周里,正常工作日,自己只能做到4~6次25分钟时长的专注(如果遇到打断,我会重新开始记时),也就是仅仅3小时不到。

通过一些后续的记录和分析,可以看出自己的专注水平随着番茄工作法的持续使用,每周都有一些提高,客观的工作成果也间接的反映了这个可喜的改善。我想原因同时来自在计时器倒计时状态下自己开始对分心的刻意控制和看到自专注记录后产生的成就感。

在工作上获得了验证后,我开始在周末自由时间也开始尝试番茄工作法,除了工作上收获的改善外,另一个连带好处也浮现了出来,以往在周末连续阅读或写代码数小时后的疲惫感随着进行过程中有节奏的休息,减缓了很多。

当然,一切改善方法的基础还是意愿。如果你有足够的意愿想克服”拖延症”和由低效工作带来的焦虑状况,不妨在电脑或手机上找个倒计时软件,让跳跃的秒表帮助约束一下自己,保持专注。

PS:

  1. 西方厨房中会常备一个记时钟,这种钟多为番茄造型。这是番茄工作法中”番茄”的来历。
  2. 《番茄工作法图解》这是本介绍番茄工作法的小书,除了番茄工作法的核心理念外,里面还介绍了一些之如专注间隙时应该怎么休息之类的知识。
  3. 为Chrome浏览器而设计的timer-tab.com是所有Web倒记时工具中设计得最漂亮的,我非常喜欢。
  4. 我自己在写一款结合记时器和笔记的WebApp,以反应自己对番茄工作法的理解并实践一些新的Web开发技术。

JavaScript 严格模式(Strict Mode)介绍

随着”HTML5″概念被不断的炒作和”node.js”项目的高速发展,这几年JavaScript语言借着各种新API陆续被运用到从移动设备到服务器的多个”新领域”中。但JavaScript语言自身由于ECMAScript第四版被放弃而一直没有多少改进。和借HTML5之名过度宣传的各种新API相比,语法层面通过严格模式(Strict Mode)进行的改进几乎可以用不为人知来形容。学习了解严格模式之后,就算不马上进行实践,也会让我们对JavaScript中坏气味的一方面有更清晰的认识,从而帮助我们写出更好的代码。下面的内容翻译自It’s time to start using JavaScript strict mode,作者Nicholas C.Zakas参与了YUI框架的开发,并撰写了多本前端技术书籍,在我看过关于JavaScript严格模式的入门介绍文章中,这篇是写得最好的。

ECMAScript5中引入的严格模式,通过让JavaScript运行环境对一些开发过程中最常见和不易发现的错误做出和当前不同的处理,来让开发者拥有一个”更好”的JavaScript语言。很长一段时间内,由于只有Firefox支持严格模式,我曾对严格模式表示怀疑。但到了今天,所有主流的浏览器都在他们的最新版本中支持了严格模式(包括IE10,Opera12和Android4,IOS5)是时候开始使用严格模式了。

严格模式能起到什么作用?

严格模式为JavaScript引入了很多变化,我把他们分为两类(明显的和细微的)。细微改进的目标是修复当前JavaScript中的一些细节问题,对于这些问题我不在这里进行深入介绍;如果你有兴趣,请阅读Dmitry Soshnikov撰写的精彩文档ECMA-262-5 in Detail Chapter 2 Strict Mode。 我在这里主要介绍严格模式引入的明显变化,那些在你使用严格模式前应该知道的概念和那些对你帮助最大的改变。

在开始学习具体特性前,请记住严格模式的一大目标是让你能更快更方便的调试。运行环境在发现问题时显性的抛出错误比默不做声的失败或怪异行事(未开启严格模式的JavaScript运行环境经常这样)要好。严格模式会抛出更多错误,但这是好事,因为这些错误会唤起你注意并修复很多以前很难被发现的潜在问题。

去除with关键词

首先,严格模式中去除了with语句,包含with语句的代码在严格模式中会抛出异常。所以使用严格模式的第一步:确保你的代码中没有使用with。

// 在严格模式中以下JavaScript代码会抛出错误
with (location) {
    alert(href);
}

防止意外为全局变量赋值

其次,局部变量在赋值前必须先进行申明。在启用严格模式之前,为一个未申明的局部变量复制时会自动创建一个同名全局变量。这是Javacript程序中最容易出现的错误之一, 在严格模式中尝试这么做时会有显性的异常抛出。

// 严格模式下会抛出异常
(function() {
    someUndeclaredVar = "foo";
}());

函数中的this不再默认指向全局

严格模式中另一个重要的变化是函数中未被定义或为空( null or undefined)的this不在默认指向全局环境(global)。这会造成一些依赖函数中默认this行为的代码执行出错,例如:

window.color = "red";
function sayColor() {
    alert(this.color);
}
// 在strict模式中会报错, 如果不在严格模式中则提示 “red"
sayColor();
// 在strict模式中会报错, 如果不在严格模式中则提示 “red"
sayColor.call(null);

this在被赋值之前会一直保持为undefined,这意味着当一个构造函数在执行时,如果之前没有明确的new关键词,会抛出异常。

function Person(name) {
    this.name = name;
}
//在严格模式中会报错
var me = Person("Nicholas");

在上面的代码中,Person构造函数运行时因为之前没有new,函数中的this会保留为undefined, 由于你不能为undefined设置属性,上面的代码会抛出错误。 在非strict模式环境中,没有被复制的this会默认指向window全局变量,运行的结果将是意外的为window全局变量设置name属性。

防止重名

当编写大量代码时,对象属性和函数参数很容易一不小心被设置成一个重复的名字。严格模式在这种情况下会显性的抛出错误

//重复的变量名,在严格模式下会报错
function doSomething(value1, value2, value1) {
    //code
}

//重复的对象属性名,在严格模式下会报错:
var object = {
    foo: "bar",
    foo: "baz"
};

以上的代码在严格模式中都会被认为是语法错误而在执行前就让你能得到提示。

安全的 eval()

虽然eval()语句最终没有被移除,但在严格模式中仍然对它进行了一些改进。最大的改变是在eval()中执行的变量和函数申明不会直接在当前作用域中创建相应变量或函数,例如:

(function() {
    eval("var x = 10;");
    // 非严格模式中,alert 10
    // 严格模式中则因x未被定义而抛出异常,
    alert(x);
}());

任何在eval()执行过程中创建的变量或者函数保留在eval()中。但你能明确的从eval()语句的返回值来获取eval()中的执行结果,例如:

(function() {
    var result = eval("var x = 10, y = 20; x + y");
    // 在strict或非strict模式中都能正确的运行余下的语句.(resulst为30)
    alert(result);
}());

对只读属性修改时抛出异常

ECMAScript5中还引入为对象的特定属性设为只读,或让整个对象不可修改的能力。 但在非严格模式中,尝试修改一个只读属性只会默不做声的失败。 在你和一些浏览器原生API打交道过程中,你很可能遇到这种情况。严格模式会在这种情况下明确的抛出异常,提醒你修改这个属性是不被允许的。

var person = {};
Object.defineProperty(person, "name" {
    writable: false,
    value: "Nicholas"
});
// 在非严格模式时,沉默的失败,在严格模式则抛出异常.
person.name = "John";

上面的例子中,name属性被设为只读,非严格模式中执行对name属性的修改不会引发报错,但修改不会成功。但严格模式则会明确的抛出异常。

NOTE: 强烈建议你在使用任何ECMAScript属性特性指定时开启严格模式。

如何使用?

在现代浏览器中开启严格模式非常容易,只需要在JavaScript代码中出现以下指令即可

"use strict";

虽然看上去上面的代码仅仅只是未赋予某个变量的字符串,它实际上起到指示JavaScript引擎切换到严格模式的作用(不支持严格模式的浏览器会忽略以上代码,不会对后续的执行产生任何影响)。虽然你能把这个指令作用到全局或某个函数中,但这里还是要提醒,不要在全局环境下启用严格模式

// 请不要这么使用
"use strict";
function doSomething() {
    // 这部分代码会运行于严格模式
}
function doSomethingElse() {
    // 这部分代码也会运行于严格模式
}

虽然上面的代码看起来不算一个大问题。但当你不负责维护页面中引入的全部代码时,这样使用strict模式会让你面临由于第三方代码没有为严格模式做好准备而引发的问题。

因此,最好把开启严格模式的指令作用于函数中,例如:

function doSomething() {
    "use strict";
    // 这个函数中的代码将会运行于严格模式
}
function doSomethingElse() {
    // 这个函数中代码不会运行于严格模式
}

如果你想让严格模式在不止一个函数中开启,请使用立即执行函数表达式 (immediately-invoked function expression ,IIFE):

(function() {
    "use strict";
    function doSomething() {
        // 这个函数运行于严格模式
    }
    function doSomethingElse() {
        // 这个函数同样运行于严格模式
    }
}());

结论

我强烈建议你从现在开始就启用JavaScript严格模式,它能帮你发现代码中未曾注意到的错误。不要在全局环境中启用,但你能尽量多的使用IIFE(立即执行函数表达式)来把严格模式作用到多个函数范围内。一开始,你会遇到之前未曾碰到过的错误提示,这是正常的。当启用严格模式后,请确保在支持的浏览器中做了测试,以发现新的潜在问题。一定不要仅仅在代码中添加一行”use strict”就假定余下的代码能正常工作。最后,请在严格模式下开始编写更好的代码。

译者注:
这里有各款浏览器对严格模式支持情况的一个汇总。
可以在这个页面对当前浏览器的严格模式支持度进行测试。

给想学技术的朋友

朋友在国外念书,非理工科专业,想学一些编程技术.觉得我这”非科班”经历可能对她比较有参考意义,让我给她介绍一些行业基本情况,自己的学习经历和关于学习方向的建议. 借这个机会,自己也把一些零碎思绪做了整理,现贴出来备忘.

mail 1:
哈,是怎么产生这个念头的啊? 学习新知识总是个好事情,有了一定经验和成就后,想学新领域里的知识的动力其实挺不容易产生的,佩服你。

计算机虽然发明不过几十年,但由于技术和商业共同推动的发展速度,在产业领域,行业细分已经非常进行得非常充分了。不说技术之外的”需求分析”,”产品设计” ,“UI/UE”,”市场,销售,品牌”, 和我所不熟悉的硬件,企业级,通讯等关联行业。 在我相对熟悉点的互联网行业的技术工作中就有如下三个大的分类.

  1. 维护优化操作系统,网络,数据库这些基础设施.
  2. 深入某个”学术”领域(图形学, 自然语言处理,推荐系统,人工智能),挖掘可以被利用的新概念,新模型
  3. 在现有平台(Windows,Mac,Web,IOS,Android)之上,利用现有的学术研究成果和平台提供的接口,实现某个功能或想法.

其中让你感兴趣的是其中的什么部分呢? 或者不进行这样的划分,你想通过”学习计算机方面”的知识来实现的目标是什么呢? 你可以先考虑考虑,有了答案后,我给你的建议也才能稍微靠谱些.

至于你感兴趣的我的计算机自学经历, 首先是电脑玩得早一些,但那时没人指点,以会打打游戏,攒攒机器,装装系统为乐趣过了两三年。 直到高中接触Linux(完全是受这系统背后的传奇故事: 年轻黑客挑战微软帝国的反叛,利他协作开放的共享精神所吸引,和高中时对摇滚乐的感情一样)后,由于那时的Linux还没有对初级用户友好的高级图形界面, 不用说用Linux系统来工作,就算要使用这个系统本身都要去了解很多命令和操作系统相关的知识. 这应该是我最早的计算机知识积累期.

然后就是大学时期, 由于对学业的不喜欢和空闲时间的增多. 我对计算机的兴趣开始从Linux扩展到其他的开源技术,由于那时没有想着要以找工作为目标,学习了较为冷门,但在开源界被很多前辈推崇,同时自己也觉得非常优雅,简洁的Python编程语言。 可能是由于冷门的缘故,那时候围绕这个语言的中国技术社区气氛很好,我在那一段时间借助Python语言和社区学会了写一些简单的小程序.

后来由于决定要走以编程为生的道路, 恶补了一段时间自己所欠缺的学校教育覆盖面里的一些知识,然后就开始了我的职业生涯。

把爱好变为职业后,也就失去了有意思的特殊性。

今年来我想清楚了,自己最喜欢的还是”创造”,而现在又多少有了些经验, 我会争取利用业余时间开发一些有意思的Web小程序,等Demo出来找你试用哈 ;-)

mail 2:
在第二个分类之外的,第一个分类偏向对某个系统产品自身的掌握,和业务和生活的距离稍微远一些,”乐趣”成分可能少一些,不过好处是一般这些基础架构的更新会更平缓,一个系统一旦搭建完成,可能四五年都不会有大的调整,相对稳定。

第三个分类是计算机世界和人类社会链接的桥梁, 一般又可以分为桌面;Web;移动三个大平台。桌面程序历史最长,但除了一些专业工具和大型游戏之外,其他桌面应用程序越来越有将被Web程序取代的趋势。

因为智能手机的迅速普及,移动程序开发是现在整个行业最热的领域.掌握流行移动平台(IOS,Android)开发技术的程序员在目前市场上需求非常旺盛,很容易要到高薪水. 但这块的问题在于 1.平台受厂商的控制,所用开发技术完全由平台厂商决定。 2.由于平台之间的激烈竞争,技术更新速度太快,一套刚学会的开发调试技巧可能随着厂商产品的升级而被废弃. 3.随着硬件性能的升级,一般性的移动程序也有被Web(你目前就可以在手机浏览器里使用Gmail,Facebook)取代的趋势.

对于互联网来说Web技术是过去,也是未来. 诞生于学术界(CERN),由国际组织(W3C)制定标准,多个厂商包括开源组织依照标准分别竞争着实现功能越来越强大的浏览器. 既有稳定的基础技术栈,又有挂于HTML5名下以把Web推向新的领域为目标的新概念. 行业对Web技术的需求从互联网诞生以始就一直有着持续的大量存在.对于新人来说,Web技术存在的问题是从浏览器到服务器这其中包含的技术点太多了,而且由于发展历史较长,和天生的开放性。 包含于Web技术中的Web前端技术 ,Web后端技术都存在着多种选择,可能会造成新人学习过程的失焦和迷茫.

Web后端技术(后端编程语言,数据库,集群分布式方案)在不同的应用规模下有着非常多的不同方案,目前没有那套方案有着绝对的优势,根据业务侧重点和规模的不同,不同的团队会选择不同的后端技术方案,而且大公司Google,FaceBook,Amazon包括中国的百度,腾讯甚至会自己创造出一套较少为外人所知的独门秘技。

Web前端技术的选择的选择少一些,且目前开放前端技术( HTML,CSS,JavaScript )取代私有前端技术( Flash ,Silvelight) 的趋势越来越明显,由于直接接触用户,一些技术之外的因素(审美,对用户心理行为的了解)在某些情况下甚至会起到比技术更重要的作用,在业务功能壁垒已经能被较轻松打破的今天,直接决定用户体验的Web前端技术在互联网公司中也越来越被重视.

综上,我觉得你如果对技术感兴趣.可以尝试着从了解一些Web前端技术的基本概念(浏览器,HTML,CSS)着手,了解下我们每天都在浏览的网页大体上是怎么编写出来的.然后试着自己写几个简单的静态网页,同时了解一些设计相关知识,每天上网时试着发现各个网站在页面上的一些共同元素(导航,布局,输入框,按钮).等后面有欲望为页面增添一些动态效果和交互时,再考虑学习一些编程语言(JavaScript,Python)辅助之.

20 Things I Learned About Browsers and the Web这是Google为了推广他家的Chrome浏览器而作的一个作品. 里面以普通用户为目标介绍了一些Web技术中的概念,你可以看一下。这个”网页”自身也可以看作未来Web的一个发展方向。

同时你也可以咨询下其他的朋友,自己思考下然后回复我你的看法。 如果真准备学习技术(会花费掉学画画或乐器的时间,非常大的时间成本啊)
根据你的看法和兴趣,我再给你推荐具体的学习资料

mail3:
:-) ,客气了,给你回复的邮件也算是对自己思路的一个整理,我自己也有所受益.

你问到的”数学”,在从业之前我学了些离散数学和集合论的基础知识,后面学了点概率统计.
如果做应用程序开发的话,对英语的要求(高质量的文档多为英文)比对数学高.
最后一个问题,如果你说的是程序开发的话,这方面的东西本身就不是很难,你又那么聪明和刻苦认真。 要学肯定没问题咯. 可能存在的问题只会是没兴趣咯.
Hackers and Painters(《黑客与画家》)这书不错,就算是不从事计算机工作,如果想了解程序和程序员,这书也很适合.

五道口.光和作用

五道口是北京最具多元化的地区. 由一流科技公司的高级写字楼填充的天际线下混杂着小店和地摊。毗邻多所高校,街头充斥着肤色各异的各国年轻人。各种风格的食肆,酒吧,PUB,咖啡厅分布在离地铁口不远的两条街上,这两街的交汇点上有家”光合作用”书店.我经常在这里出没.

和另外两家喜欢的独立书店相比,”光合作用”不像’单向街’那样由著名专栏作家创办,同时运营沙龙和同名期刊;没有’万圣书园’那么浓的学术气氛,进店抬头尽是大师和经典. 这来自厦门海岛的书店品牌就像她的名字,朝向日常生活,但和柴米稍有距离。当然这里没有教辅和穿越小说。

周末路过”光合作用”门口时发现店内一层的书架已经空了,各种垃圾散落一地。二楼的景象与一楼别无二致,一两个似乎是附近商店店员的人在这里聊天。他们说上周五从厦门总部传出破产消息后,一夜之间原本正常营业的书店就被多家供应商以抵债的名义哄抢一空,这个过程中还参杂着不少趁火打劫的路人。喜欢的地方被这种方式结束,心情难免不悦,还好在后续的网络信息里看到一条微博描述哄抢发生前虽然已被叫骂着的供应商包围,可店员仍然耐心结完账,并在递小票时保持着笑容.我用尽力气回忆,希望能想起任何一个为我结过账的店员,感谢她让”光合作用”的粗暴倒闭过程多少有了些尊严.

就算是门口看车的小伙都能告诉你”光合作用”的倒闭是因为现在逛书店的人中,最后掏钱的越来越少,大家都到既能便宜几块钱又能送货上门的“网上”买书了.大佬把这归纳为互联网的吞噬属性:“互联网碰到到什么,吃什么,吃媒体,吃书籍,吃游戏…”.卓越当当们吃掉了书店的渠道功能,豆瓣吃掉了书店的推荐作用。实体书店对于个人,更多是个精神上的寄托,爱书人喜欢身处书店的感觉,但这不能给书店带来收益;对于城市或街区,书店发挥着文化符号的功能,一个书店的存在增加了周围整个街区的吸引力,但这还是不能给书店带来收益.

有朋友说,政府每年花这么多钱在形象工程上,为什么不能资助几家像光合作用这样的书店。一开时,我觉得这个建议不错,既然装点市容的公园绿地由公共财政买单,给城市提升文化品味的书店在商业失败后为什么只能破产。但稍后一想,先不说当今纳税人对政府的影响力,就是政府真做了这件事,光合作用还会是破产前的光合作用吗? 新华书店或独立书店,我会在乎.

没有了光和作用后的五道口夜色仍然绚烂.路过这里的人们赚钱,吃,喝然后走开,不会再因一家书店而放慢脚步.

三岔

长年旅居中国的记者Peter Hessler(何伟)在厌倦了例行公事的敏感日期广场蹲点和浮于表面的新闻报道后。找了两处住所隐居,让自己变成作家Peter Hessler. 第一处在东城区的菊儿胡同,他在这里纪录由于城市化建设快速坍缩的北京老城和梳理藏于历史角落由英年早世的考古学家陈梦家引出的故事 。第二处在北京郊外的三岔村.

三岔位于怀柔县城以西的的大山中,唯一一条链接外部世界的公路,乡道X008在这里终结,周围是高耸的山脉和野长城.在Peter首次来到时,离北京不足一百公里的三岔几乎是另一个世界,时间像是凝固的,人们住在泥土夯成的农舍里,以文革时期的报纸装裱墙面,穿着迷彩服和解放鞋,似乎一群被遗弃在长城脚下的远征士兵. 90年代开始的经济浪潮在改变了城市的面貌后,迅速扩散开来。山村变得不再宁静,居住其中的人或主动或被动进入了新的生活轨迹。在Peter的第三本书《寻路中国》中,他通过记录自己在三岔4年多时间里房东魏子淇一家的生活变革来反映这个过程。关于三岔的章节是书中我最喜欢的部分。

年中看完这本书后,一直想去三岔看看,十一假期此愿终于得以达成. 假期第三天一大早便起身骑上单车,从怀柔县城出发凭借手机导航找寻着通往三岔的小路。虽然在书中Peter写到由于汽车潮的到来,三岔连接外部世界的公路得到了翻新.但地图上就算放大到最大比例尺也细若悬丝的乡道还是让我在出发的前半段一直担心身下的公路自行车是否能够适应. 在拥挤的市道上伴着节日出游车队骑了近一小时后,终于来到了地图上标注的乡道入口。随着路边里程碑号的变更,路旁的金属护栏换成了浓密的树林.拐入乡道不远即可见篱笆围绕的豪华别墅和正在施工的度假酒店.路况远超预期,甚至不输北京城区。沿路大大小小的农家院和採摘园吸引了很多趁着节假逃离城市的有车一族.

通往三岔的路上有不少村庄.虽然只是走马观花的一窥。京郊农村生活环境的改善还是通过公交站牌;太阳能路灯;感应式冲洗的公厕;露天健身器材轻松展示了出来.沿途的采摘园会把正熟的果子选一些堆放在公路两旁作为吸引顾客的样品,这样的小摊是骑行过程中最好的补给站。和其中一摊主聊天后得知,受益于京郊游的持续升温,院里的果子基本靠游客的采摘和沿路小摊就能全部卖完.

随着海拔的攀升,农家院和採摘园出现的频率逐渐减少,路上同行的各种车辆也消失了很多.路两旁的景色从果林村庄渐渐过度到了山崖与河谷.临近三岔的最后一个垭口陡峭的山壁两端还出现了残破的明长城遗迹. 虽然已经骑行了4个多小时,壮美的景观和马上就能到达目标的兴奋让疲劳感瞬间消退了不少. 在明长城遗迹之后出现的是沿着公路的一段”迷你长城”,为响应发展旅游业的号召,三岔的村民们在政府的组织下于03,04年间建起了这段景观。终于,三岔村的路牌出现在了视野中,借《寻路中国》一书,这个小村中的生活场景填补了我对农村的了解,主人魏子淇的个人奋斗,把Peter叫做魔鬼叔叔的魏嘉急性发作的病症,农村换届选举过程中跌宕起伏的情节,在今年的某段时光里曾让我关切不已。当年在村里最早尝试做生意,最早开起农家餐厅,最早买了二手车,踊跃参加村长选举的魏子淇和他一家人的生活到今天会发展成什么样呢? Peter写作的小屋现在不知已作何用? 当年不能花出一份钱的山村,现在应该有了商店了吧?

带着这些问号,骑车进入了三岔。一过界碑,道路的坡度陡峭程度骤升,错落的农舍伴随着溪水散落在路两旁,地理位置的偏远在增加建筑工程的不便之余丰富了建筑的多样性,无论是看起来颇有历史感的土墙农舍或新修的砖混建筑,村里几乎看不到同模样的房子。半山的开阔地上,甚至出现了圆柱形外墙,顶上装了硕大圆球的概念性建筑。除了一两个晒太阳的老大娘,不见路人.Peter在书中记录的繁忙建设时期似乎已经过去,自驾一族的洪流也被一路上无数的农家院和采摘园稀释,虽然村口就有一家看起来修饰不久的农家院,但从外面看去今天的生意似乎还没开张. 驶近那概念圆柱后发现这是家颇具规模的三层餐厅,门口放着装饰用的酒缸,贴着对联,不过里面似乎已经荒废了很久. 凭着对书中所写魏子淇家方位的印象,沿着村中小路往上三岔继续骑行.经过一段四五百米的盘山小道后,来到了魏子淇一家所在的上三岔.相比下三岔这里更加安静,四五排高不过二层的小院前前后后的靠着山坡,四处张望的视线发出没多远,就被高耸的群山团团围住.沿途颇吸引眼球的太阳能路灯仍然出现在路口,不过在这里它们鲜亮的白蓝油漆显得和周围的环境份外的不协调.

“魏嘉,你家来人了~”,站在半开院门口的老大娘还没等我问完,就拉开嗓门帮我唤起了《寻路中国》里的小主人公. 不一会儿,身穿中学校服的魏嘉在我眼前出现.圆脸,微胖,宽松的运动校服让他的整个身体从头到脚都显得鼓鼓的.他是第一代伴随着电视机和工业食品成长起来的三岔人.两三句寒暄后,魏嘉大方的把我引入他家的院子,反而是我花了老好半天才在头脑中把这广受好评作品的小主人公还原为可爱的中学生。魏子淇家的院子坐落在上三岔背靠山坡的上半部分,靠山的一面是几间生活起居的平房,朝向山谷的一面是一圈半人高的篱笆,从这里可以俯视整个安静的三岔村. 院子里放着两张圆桌,两个大学生模样的年轻人在其中一张上玩着纸牌,女主人曹春梅在院子的一角剥着刚收获的杏仁.男主人魏子淇今天不在家.一只在农村地区少见的大金毛犬趴在地上晒着太阳。 和曹春梅聊天后得知农家院几年前已经没开了,现在家里主要靠果园作为经济来源.今年《寻路中国》中译版出版后,到周末,假日会有一些像院子里两个年轻人和我一样的热心读者来访。Peter每次到中国时也会回来看看,他的一个朋友送来了院子里那条名叫史奴比的大金毛。魏嘉今年上初二,和中国其他地方的中学生一样,一谈起学校就有着数不清抱怨.虽然离中考还有一年,非中考科目就几乎被剥离出了课程表,优势科目英语由于枯燥的应试和老师的频繁更换早已不复当年”魔鬼叔叔”在时的出色.他说老爸魏子淇现在在一家公司上班,但他也搞不清那公司叫什么名字,是做什么的.魏嘉偶尔会去离三岔五六公里的渤海镇上网,喜欢在网上看明星演唱会。班里不少同学已经开始玩微博,他也注册了帐号,但从没发过原创消息.在吃过女主人为我们做的大碗番茄鸡蛋面后,魏嘉带我们去参观Peter写作生活的小屋.虽然已不常在中国生活,但他仍然付着这里的租金。屋子在魏子淇家院子下方不远处,连在一起的三间平房由Peter和华裔摄影师mimi共同使用,中间一间客厅放着被遮罩起的布沙发和茶几,墙上装饰着几幅摄影作品,靠里的一面被改造成了简单的厨房,朝外的一面放着一个小电视.由于长期闲置,卧室已经没有多少生活气息,木板床,杂物柜,书柜,写作的小案和一把极普通的椅子构成了全部陈设. Peter文风干净优雅,内容不参杂个人情感却能通过细节透出对笔下记录人物深切的关怀,虽然不知到有多少句子写于这间小屋,但这儿的宁静一定给他了不少帮助.

走出小屋时,已是下午三点多,由于得赶在太阳落山前骑回怀柔县城,答谢了女主人的鸡蛋面并和小魏嘉互留QQ号后,我离开了魏家的小院。重新骑上自行车,慢慢的驶出了三岔.

近三岔村的野长城


三岔村口


村中一角


从魏子淇家的小院看出去


《寻路中国》小主人翁魏嘉, 手里拿的是该书的英文版《Country Driving》,封面上是他六岁时的照片


Peter写作的案台

厦门

许知远&单向街

单向街是我最喜欢的书店,无论是两年前在圆明园墙角篱笆小院中孓然独立的老店,还是迁往蓝色港湾商圈后作为平衡商圈奢华气息的文化符号.单向街都是让我喜欢北京的一个重要理由. 许知远的书比单向街更早进入我的生活,在那为理想和现实差距而迷茫彷徨的学生时代,许知远的书和网络为我填补着现实生活中所缺失的”思想“和”自由”. 许知远还是单向街书店的创建人.

单向街书店时常会借由新书发布邀请作者,知名博客写作者进行一些访谈,通过这个渠道,我见识了王小峰,何菜头,胡泳等名家的风采,难以寻觅的纪录片《再见乌托邦》也是在这儿看的.这周末,终于在单向街等到了许知远的访谈.

许之远的谈话成熟老道,富有感染力,既能以一贯的风格明白精确的陈述自己行而上的思想,观点,又能和读者以他文章中少见的对风景的细腻描述交流异国旅行见闻. 他的谈话和文章一样,充分展示了其对世界的感受能力和表达这些感受所应具备的娴熟技巧.

关于自己,许之远回顾了学生时代的趣事和毕业十年后当年同学各自大相径庭的道路,自己进入又离开媒体的经过,大方的重申了自己对”庞大叙事”的喜爱. 谈到自己文章时,他的一段话十分有意思:

我感到有两个自我,文章中的自我和实质的自我。文章中的自我往往比实质的自我更具理解力, 有时我翻以前写的文章会突然发现,”哈,原来这个问题我那时就想清楚了”

关于文坛,他聊到了流放的一代,在对他们表达了足够的敬意的同时,也表达了对流放作家的某种担忧:

流放到异国会把作家逼到一个极端的环境,这样的环境容易激发出潜能,但也容易把人变成某种固定姿态的俘虏

关于媒体,他表达了对美国阶层明显的媒体系统的推崇,中国当下阶层破碎,竞相争着面向公众发言的媒体环境是他选择离开的一个原因; 谈到微博时许之远意料之中的对140字能蕴含的创建性表达了质疑,同时以这样的方式解释当前微博中充斥的宣泄.

当批评失去应有的作用时,批评自然会变得尖锐

面对挤满整个书店莫名而来的读者,许之远没有虚伪的恭维或以玩笑挑拨大家的情绪,反而以”缺乏对世界足够的好奇心,总想展现自己自以为的独特性”作为提醒.谈到对个人写作的建议时,他说到

像建筑年代,历史典故这些公共信息一旦触动了你,他们就会成为你的私人信息.你自己的世界由这些信息构成,自然是值得记录的

问答环节中,几乎每个提问听众,都表达了对许之远文章的喜爱.我也有这样的欲望,但在现场热烈的气氛中除了再一次重复相似的内容,似乎也无话可说了。找个角落品读签名墨迹未干的新作《一个游荡者的世界》似乎更合时宜一些. 直到活动结束,众人散去,单向街书店恢复往常的安静,自己的思绪才从亲眼见到老许的兴奋中慢慢展开。在这个产品设计和技术塑造表达方式的世界,虽然有那堵墙存在,但”越过长城,走向世界”不正是24年前中国发出的首封电子邮件给我们的神喻吗,墙和抱怨当今的文化断层一样,也是丧失对世界好奇心的借口;”自我流放”和表达欲的出口很多,其实自己一直在路上.

问答何伟

最近两个月一直在看Peter Hessler(何伟)的两本书:“Country Driving”《寻路中国》“Oracle”《甲骨文》,非常喜欢。出于对作者经历的兴趣,期间一直在找Peter Hessler在各种媒体活动的访谈。其中有中外媒体对其的采访,有Peter出席大小沙龙时和观众主持人的交互。一些介绍了Peter最初邂逅中国的经过, 另一些中Peter亲自以幻灯和照片介绍了他书中一些最有意思的片段 。所有这这些访谈中,下面这篇来自Natrue《自然》的采访有着最好的问题,Peter的回答概括了《寻路中国》一书的主题. 这篇采访目前还没有人翻译过,我觉得下面内容就算对不是Peter粉丝的朋友也会有些益处.趁着周末得空,翻译如下:

Q:你想从三部曲(《江城》,《甲骨文》,《寻路中国》)中揭示出关于中国的哪些方面?

A:三本书有着不同的命题 ,《江城》(2001)关注地理和空间.《甲骨文》(2006)着重于历史和时间。《寻路中国》集中在发展与经济。我以普通人的生活体验为视角审视这些命题.比如那些作为中国工业革命驱动力从乡村迁移到城市的农民工,这些普通人作为个体,家庭,社区如何回应变革和面临的新挑战是我所最关心的.

Q:公路状况的改进和汽车工业的蓬勃发展使中国的乡村地区受到什么样的影响?

A:在旅程中,所见的变革速度不断让我惊讶。由于年轻人外出寻找工作机会,把未成年的孩子留在村里给父母抚养,中国北方的村庄因此变得荒芜。远离城市的乡村缺少使当地村民改善自己生活环境的机会,但公路和其他交通设施的建设让他们能够离开家乡,很多年轻于是人沿着公路去了东南沿海。高速公路建设往往是城市化的第一步,在中国,由于人民不能买卖乡村土地.开发的模式往往是由地方政府征用田地,然后转变土地用途,在上面建设高速公路和其他基础设施,然后在市场上卖出土地使用权.

Q:你目睹了新兴工业城市的发展过程,从中你注意到了什么? (何伟写作《寻路中国》过程中,在浙江丽水有长期的考察经历)

A:我被个体的适应能力震撼.在新兴城市所处的时日中,从建筑项目的施工速度到整个城市化的进展速度都非常快.整个开发系统的运作方式令我感到印象深刻 — 它有缺陷,但缺陷不是致命的.它非常混乱,规则或许不公平,其中有贪污腐败的官员,有倾向于仅着眼于眼前利益的人们和其他各种问题.但这个系统就是这样运作起来了,至少到现在. 人们不仅知道其中的规则还知道如何适应规则来改善自己的处境。进城务工的移民变得机智并开始学会依靠自己. 这是个残酷的世界:为工作而谈判时,老板和工人都得学会如何处理各种复杂关系。这会带来正面意义,例如对个人主义的鼓励和增进个体能力,但整个环境显得有些残酷和缺乏法律.

Q:你觉得中国的工业化变革和欧美比起来有着什么不同?

A:一个主要的区别是动机. 劳动力的缺乏使得在欧美发生的变革必须激发起人们的创造力和效率. 中国有如此多的工人,以至不需要节省劳动力,这很适合生产低利润率的商品,但不适合创新型或高附加值的商品.中国缺乏竞争的政治制度和受管制的教育体系,也同时限制了创新的可能性.

Q:中国的高速发展是否影响了人们的幸福感?

A: 变革的速度是压倒性的,社会原有的价值观在其中崩溃.家庭变得分离.地理上和感情上,人们感到空乏,感到什么东西缺少着.我在中国遇到不少”追寻者”,这些人关切生命中除了物质成功以外的其他东西.他们需要有一个社区和人与人之间更紧密的联系.其中的一些以宗教作为出口,成为某种宗教的信徒 — 但宗教机构在中国的发展十分滞后.

Q:人们如何协调自我意识的和环境强加于个人之上的集体主义?

A:个人主义以多种面貌出现在中国.它发展于教育体制之外.移民和企业家们依赖自我教育,改变自己的生活,规划自己的前途.人们学会在不同的环境中扮演不同的角色:一个农民可以在村名,居民,小生意主,顺从的党员间接换着身份(作者写作《寻路中国》的过程中,在北京顺义郊外的三岔村住了六年,村民魏子淇一家在这六年的生活变迁时书中最为精彩的一部分).这一代人有着普遍的灵活性和适应能力:他们不再依附于一个单一的框架.

Q:中国的政治制度对经济发展起到了什么样的作用?帮助或妨碍?

A:过去的几十年里,在某些方面,它起到了促进作用. 历史上没有一个社会能让如此多的人摆脱了贫困和文盲,平均寿命和人均收入都有了增长.这是当今政府因得的赞誉.问题是如何达到下一个发展阶段.社会的发展可能会达到一个点,人民对统治表现出更多的抵抗提出更多的要求.当这个情况发生,目前的系统只能崩溃或变革自己以适应新的挑战.目前那个点离我们还有些距离.

Interview by Jane Qiu, Nature’s retained correspondent in Beijing.