|
|
克里斯·沙玛《王者之线》
发表于:2011年1月24日6时56分
分类:Outdoor
记不起为什么忽然想起了克里斯·沙玛(Chris Sharma)的《王者之线》(King Lines)。在国内,尝试过下载这部影片,但是因为过于小众,没找到完整的下载。
克里斯是全世界攀岩界如雷贯耳的人物,被认为是世界上最优秀的攀岩者(没有之一)。12岁开始学习攀岩,14岁取得全美冠军,15岁完成美国最难的14C线路,20岁完成全球最难、当时被认为是人类不可超越之极限的Realization 5.15a线路。与显赫的名声相比,克里斯行事非常低调,不喜为人关注,刻意回避媒体。克里斯是一个虔诚的佛教徒,也是坚定的素食主义者。他是用攀岩的方式进行佛教的修行。在他攀登时,时间仿佛是停止的,世界上只剩下一件事,攀登。他很少为线路命名,但是一条他尝试了很久的那条线路,他命名为Mandala,意为“在不断的重复中,找到宇宙的永恒”。 世间烦扰太多,在攀岩时,却能感受到全神贯注挑战自身极限所带来的返璞归真,寻找到在人类刚刚诞生时,在与自然搏击、险恶环境中感受的那种生命的存在。克里斯,和天空翱翔的鹰,都有自由不羁的灵魂。 下面的视频不是很清晰,这里有AVI的种子。
《黑客与画家》第一章 —— 为什么呆子不受欢迎
发表于:2011年1月18日16时53分
分类:翻译
第一章 为什么呆子不受欢迎 在上初中的时候,我的朋友瑞奇和我一起根据受欢迎程度制作了学校午餐餐桌的地图。这活很简单,因为孩子们只是和自己差不多受欢迎的其他孩子一起吃午饭。我们用A到E打分将这些桌子分成不同的级别。A桌坐得都是橄榄球选手、拉拉队长这样的人,而E桌的人则像是患上了轻微的唐氏综合症,用我们那时的话说就是“智障”。 我们坐在D桌,分数很低,和那些“智障”没什么两样。我们把自己分到D桌其实也不是特别公正,有故意弄虚作假。因为学校里的每个人都会清楚地知道其他人是怎么一个受欢迎度,包括我们也不例外。 我知道其实学校里很多人都是呆子,他们都表现出一个共同规律:智力水平和呆的程度呈强烈的正相关,而呆的程度和受欢迎的程度呈更强烈的负相关。聪明仿佛让你不受欢迎。 为什么会这样?对于现在学校里的孩子来说,这个问题问得有些奇怪。因为事实就摆在那里,很难想象还能怎么样。但是的确是个问题。在上小学的时候,聪明并不会让你被同学孤立。学校之外的生活也不会有什么影响。就我知道的而言,在其他大部分国家,这也不会是个问题。但是,就在这所普通的美国中学,聪明似乎就让你在学校的生活很难熬,为什么? 解开这个奥秘的关键在于稍微改变一下问题,为什么聪明人不愿意让自己变得受欢迎?如果他们真的聪明,那他们怎么会不知道变得受欢迎的途径,就像他们通过标准化考试那样,让自己也受欢迎呢? 有一个观点认为聪明的孩子不可能受欢迎。因为他们很聪明,其他孩子会嫉妒他们,而他们自己让自己受欢迎也无能为力。我希望是这样。如果初中时那些孩子都嫉妒我,那么他们掩饰得太好啦。无论如何,假如聪明真得那么惹人羡慕的话,那么女孩们应该表现得完全相反才对。毕竟让男孩们嫉妒的男孩,女孩会喜欢。 在我所在的学校,脑瓜聪明算不了什么。孩子们不会羡慕它,也不会轻视它。如果其他方面都一样,他们会更容易接纳聪明一点的孩子。但是和长相、气质、体育能力一比,那简直就差远了。 如果说智力并不是影响受欢迎程度的因素,那么为什么聪明的孩子总是这么不受欢迎呢?我认为,答案就是,他们压根儿不想受欢迎。 假如那时有人这么跟我说,我一定会嘲笑他。在学校不受欢迎会令孩子非常痛苦,有些甚至因为过于痛苦而选择自杀。要是告诉我之所以不受欢迎的原因其实是因为我不想受欢迎,就像告诉我在沙漠中一个快要渴死的人却不想要一杯水一样荒谬。毫无疑问,我想受欢迎。 但事实上,我并没有那么渴望受欢迎。因为我希望在智力方面得到更多。并不简单是想在学校学习方面表现不错,虽然那也有些收获。我更想去设计漂亮的火箭、写出好文章、或者知道怎么给计算机编写程序。总之一句话,干一些伟大的事情。 在那个时候我从没把我想得到的分开,然后彼此权衡轻重。如果当时这么做了,那么我就能看出来聪明更加重要。要是当时有人愿意给我机会成为学校里最受欢迎的孩子,但是只能有普通的智力(哄一下自己),我也不会接受。 尽管呆子们在不受欢迎方面很受挫折,但我想很多呆子也不会接受用智力水平去交换受欢迎程度。对他们来说,光有平庸智力,仅仅是想一想就已经无法忍受了。但是大部分孩子会接受这个条件。对于其中一半的人来说,意味着又迈上一个台阶。即使对于位于第80%的孩子来说(假设每个人的智力有一个分布),谁会不愿意降低30个点去换取每个人的喜爱和崇拜啊? 基于此,我想这就是问题的根源。呆子们有两个愿望,他们当然想受欢迎,但是更想聪明。毕竟在闲暇时间,或者离开了美国中学这样好胜心如此强烈的环境,要受欢迎没什么用。 阿尔伯蒂[1],备受争议的文艺复兴时期模范匠人的典型,写道:“艺术,无论多么微不足道,也必须全身心投入,否则无法取得卓越的成就”。我想知道世界上是否有谁在做事情上的努力超过美国学校里孩子为争取更受欢迎的努力。和他们相比,海豹突击队员和神经外科医师都只能算是懒蛋。他们偶尔还休假,或者有些兴趣爱好。而美国孩子可以一年三百六十五天中醒着的每一秒钟都在致力于提高自己的受欢迎程度。 我的意思不是建议他们有意识地做这些事。其中一些人的确有一些”马基亚维利“思想 [2]。我真正想表达的意思是这些孩子总是像教徒一样不断做这些事情。 比方说,大孩子们花很多时间琢磨衣服。他们并不是有意想穿得受人欢迎,他们想穿得看上去不错。但是谁去看?其他孩子。其他孩子的观点成为了他们”对“的定义。不仅仅是穿衣服,几乎他们做的任何事都会参考他人的观点,甚至走路。因此,他们试图把事情做”对“的任何努力,无论是有意识的还是没有,最后都成了努力去变得更受欢迎。 而呆子意识不到这点。他们意识不到想受欢迎是需要努力的。一般来说,高门槛领域的外行们意识不到持续不断地努力能带来多大的成就(尽管很多时候是无意识完成的)。比如,很多人认为绘画能力是一种天生的技能,就像个子长得高一样。实际上,大部分画画不错的人他们喜欢画画,并且花了很多时间去练习绘画。这就是为什么他们擅长画画。同样的道理,受欢迎不是天生就有或者没有的,而是需要自己去争取得到。 ![]() 1981年,Gateway中学象棋俱乐部,左上角是我。 呆子们不受欢迎的主要原因就是他们总有别是事情要思考。他们的注意力被书或者大自然所吸引,而不是时尚或者聚会。他们就像顶着一杯水去踢足球,而其他球员却集中了全部注意力去迅速地打败他们,还会对他们为何如此羸弱而好奇。 即使呆子们和别的孩子同样在意受欢迎,对他们来说也意味着更沉重的负担。受欢迎的孩子学会了怎么才能受欢迎,也想受到欢迎。同样,呆子们很聪明,也希望自己聪明。受父母的教育,呆子们知道怎么得到正确的答案,而受欢迎的孩子知道怎么取悦他人。 到目前为止,我巧妙处理了聪明和呆子之前的关系,把它们作为互换的概念使用。但是也仅仅是在这一个上下文环境里才能如此。社交不足的人被称作呆子,但足与不足取决于你在什么地方。在普通的美国学校里,酷的标准非常高(至少,非常特别)以致于你根本不必为了看上去另类而变得很另类。 只有极少数的孩子能够分出足够的精力去关注如何受欢迎。除非他们恰好英俊帅气,天生体育健将,或者是某个受欢迎孩子的兄弟,否则最终他们还是会逐渐呆化。据说11岁到17岁的聪明人生活最糟糕,恰好这个年龄和想受欢迎纠缠得比之前之后都多。 在那之前,小孩的生活主要是父母,而不是其他孩子说了算。在小学,孩子也在意同龄人的想法,但这构不成生活的全部。完整的生活会在之后到来。 可是,到了孩子11岁左右时,他们对待家庭有点像一天的工作。他们彼此之间建立了一个小圈子,在这个圈子,而不是家里立足才是最重要的。甚至,给家里添麻烦还会在他们圈子里得到其他伙伴的另眼相看。 问题在于,孩子们刚开始给他们自己创造的圈子可能非常野蛮。如果你留下一帮11岁左右的孩子和他们自己的一些玩意在一起,最后你会发现你制造出了”苍蝇王“ [3]。和很多美国孩子一样,我在学校就读了这本书。大概这不仅仅是个巧合,大概有人想指出我们生性残忍,我们为自己创造了一个野蛮愚蠢的世界。这对我来说太难以理解。我没有获得什么附加信息,整本书看上去是完全可信的。我希望他们可以直截了当地告诉我,这世界很愚蠢,我们都是些野蛮人。 如果仅仅是视而不见,呆子们会觉得不受欢迎也不会那么难以忍受。不走运的是,如果不受欢迎,那么就意味着会经常受到虐待。 为什么会这样?同样的,现在在学校的孩子可能会觉得又是一个奇怪的问题。事实就是如此,还能怎么样?成年人一般不会虐待呆子,为什么青少年们会? 部分原因是因为青少年还是半个孩子,而许多孩子就是生性残忍。某些孩子虐待呆子基于扯掉蜘蛛的腿同样的心理。在心智成熟、道德感出现之前,折磨人是非常有趣的。 孩子们虐到呆子的另一个原因是因为让他们更爽。当你踩水时,水被踩下去,人浮上来。同样,在一些社会体系中,一些对自己地位没有自信的人会试图通过虐待他们认为低级的人来显示出自己。我曾经读到过美国的贫穷白人是对黑人最残酷的人群。 但是我觉得其他孩子虐待呆子的主要原因是因为这是使自己受欢迎的技巧。受欢迎的多寡只有少部分取决于个人魅力,更多的在于同盟。为了变得更受欢迎,你需要不断地做一些拉近和其他受欢迎孩子距离的事情,不能做拉近共同敌人的事情。 就像在经济萧条时期转移选民注意力的政治家,你可以树立一个敌人,即使实际上不存在。通过欺负虐待一个呆子,位于层级高层的孩子们可以精诚团结。攘外得以安内。这就是为什么最恶性的虐待事件总少不了团体参与的原因。随便问一个呆子,一群孩子造成的伤害比单个恶霸要严重得多,令人发指。 如果说呆子们有什么安慰的话,就是这些都不是针对个人的。一帮”团结“的孩子无论挑中谁都会干同样的事情,就像一群人一起去打猎这样的原因。实际上他们不是憎恨你,而是他们需要一个猎物去追逐。 因为他们位于标尺的底端,呆子们是学校里安全的欺负对象。若我没有记错,最受欢迎的孩子不会欺负呆子,因为他们没必要。大部分的虐待事件发生在级别低一些的孩子身上,特别是最焦虑的中间层。 麻烦的是,这种人太多了。受欢迎程度的分布不是一个金字塔形,而是像小蜡烛底部像个梨。最不受欢迎的团体是很小的(我相信在我们绘制的餐厅地图上我们是唯一的D桌)。所以,想欺负呆子的人总是比呆子更多。 与不受欢迎的孩子保持距离可以获得别人的刮目相看。同样的道理,要是接近他们,你会失去在别人心中的好印象。我认识的一个女孩告诉我在高中时她喜欢呆子玩,但是害怕被别人看见和他们说话,因为会被其他女孩嘲笑。不受欢迎就像一种传染病,连一些善良的孩子出于自卫也会抵制他们。 毫无疑问,这些聪明的孩子注定在初中和高中都不会快乐起来。他们其他的兴趣爱好占用了太多的精力,没剩下什么去经营怎么受到更多人的欢迎。由于受欢迎程度类似一种零和游戏,不受欢迎使他们成为了整个学校孩子欺负的目标。奇怪的是,这种噩梦般的情景不是发生在有意识的敌意上,而是整个大环境使然。 对我而言,最糟糕的时候是在初中。那时孩子之间的文化而新鲜而粗糙,把聪明一些的孩子划分出去的特化过程才刚刚开始。几乎和我聊天的每个人都同意,最不幸的时刻就是在11岁到14岁。 当我12岁和13岁时,对应着学校里的八年级。那年我们学校有一件短暂的轰动事件:我们的一个老师在一群等公交车的女孩那里偶尔听到这事,非常震惊,第二天召集全班做了一次非常有说服力的讲演让大家互相之间不要如此残忍。 没什么明显的作用,令我感到沮丧的是她居然非常吃惊。你是说她根本不知道那些女生谈论的事?这有什么不对吗? 认识到这个非常重要。对,大人们根本不知道小孩子之间到底在做什么。他们大概知道孩子们对彼此非常残酷,就像我们大概知道大人们折磨一些落后国家一样。但是和我们一样,他们并不想详细了解这些悲惨的事实。如果他们不动身寻找的话,他们也看不见某次虐待的证据。 公立学校的老师在很多方面都很像监狱看守。监狱看守主要职责是将罪犯关在监狱内,另外给他们吃的,尽可能让犯人不要杀掉彼此对方。除了这些,他们尽可能少的干涉犯人。因此,他们就留下了给犯人创造自己需要的社会组织的空间。从我读到的一些材料来看,罪犯创造的社会是扭曲、残暴、无处不在的,处在这个社会的底层一点也没有乐趣可言。 概括的说,这和我上的学校是一模一样的。最重要的事情就是呆在房间里,管理者会给你一些吃的,不让出现公开的暴力事件,另外花些工夫教你一些东西。但除此之外他们并不想过多地去管着孩子们。和监狱看守一样,老师大部分时候都只是听之任之。因此,我们创造出的社会文化和罪犯创造的一样野蛮。 那么为什么真实的社会更适合呆子呢?看上去答案非常简单,真实的社会是由成年人所组成的,非常成熟所以不会故意为难对方。但是我不认同这个答案,监狱里面的也是成年人,但他们一样给对方找碴。更明显的是,在曼哈顿一些地方衣食无忧的太太们,生活就像是高中的延续,日子过得一样凄惨。 关于真实社会,我认为最重要的一点不是由成年人所组成,而是它非常大,而且做事情会有真实的影响力。这是学校、监狱和锦衣玉食的太太们所不具备的。这些地方的人局限在一个很小的地方做什么事情都不会有什么大的影响。自然,这些社会都退化成野蛮社会,不会提供任何规则供他们遵循。 当你做的事情有真正的影响力的时候,仅供娱乐就不再足够了。获得正确的结果开始变得重要起来,这正是呆子们擅长的。比尔盖茨就是一个例子,尽管在社交技巧方面一塌糊涂,但是用利润来衡量,他获得了正确的结果。 另外一个不同在于真实社会大得多。在一个足够大的池子中,最小的少数派如果聚集起来也能成为有分量的一股力量。在真实社会中,呆子们可以在某个地方聚集在一起,形成一种以智力为中心的文化。有时这种趋势甚至流向其他方向。有时,特别是在大学的数理系,呆子们为看上去更聪明甚至故意夸大自己的笨拙。约翰·纳什非常崇拜诺贝尔·维纳以至于模仿了他在走廊上行走时摸墙的习惯。 作为一个13岁大的孩子,我对这个世界的认识还只局限在周围我能看到的。我们生活的这个小小世界,我认为,就是整个世界。这个世界看上去既残酷又无趣,我不知道哪个更坏。 因为我不适合这个世界,我深信我一定有什么东西不太对。我没有意识到像我们这样的呆子之所以不适应是因为在某些方面我们走到了前面。我们已经开始思考在现实社会中重要的事情,而不是去和其他人去玩一个很累但没什么意义的游戏。 我们很像一个重新被送回中学的成年人。他不知道该穿什么衣服,听什么音乐,使用什么时髦的语言。对其他的孩子,他就是一个彻头彻尾的外星人。问题在于,他知道不用去关心别人的看法,而我们却没有这样的自信。 很多人可能都会觉得把这个年纪的孩子和其他“普通”的孩子放到一起是个好主意。也许。但是在至少一些情况下呆子们不合群的原因是其他孩子都很疯狂。我记得在学校有一次开赛前动员会,我坐在观众中,看着拉拉队长将一名对方队员的雕像扔进观众中砸得粉碎。我觉得我像一名探险家在观看一场奇妙的部落仪式一样。 如果我还能回到13岁那年,给当时的我一些建议的话。最主要的事我会告诉他抬起头,看看周围。我当时没能领会到这一点,但是这个世界就像Twinkie一样假 [4]。不只是学校,整个镇都是!为什么人们会搬到郊区去?去生孩子!难怪这个世界看上去这么乏味枯燥了。整个地方就像一个巨大的托儿所,很明显人们就是为生孩子才建造了这个镇。 在我长大的地方,没什么地方可去,没什么事情可作。不会有什么意外发生,郊区就是被有意识地设计成为和外部世界隔离,因为那里有会伤害孩子的东西。 对于学校来说,在虚假世界之中的学生只需要握住笔。学校对外宣传的作用是教育孩子。但实际上它的主要作用是在一天的大部分时候把孩子们锁在一个地方,以便大人们去做该做的事情。我对这点没有异议:在一个专业工业社会中,让孩子们随便乱跑绝对是个灾难。 让我头疼的不是孩子们被关在监狱里,而是一,他们并没有被告知;二,这所监狱大部分时候是由狱友们管理的。孩子被送到由追着橄榄球的巨人们管理的世界去记忆六年无意义的事实,似乎这是世界上最正常不过的事实。并且要是他们回避这个“超现实的鸡尾酒会”,那他们就会被称作不能适应环境的人。 生活在这个扭曲的世界对孩子们施以压力,不仅仅是对呆子们。就像战争,获胜的一方同样会受到破坏。 大人们不可避免会看到孩子们受到折磨,为什么他们无动于衷?因为他们认为是青春期的问题。关于孩子不开心,大人们会告诉自己是因为一种怪异的化学物质——荷尔蒙,在他们的血液里乱窜,把事情都搞砸了。周围社会没有什么不对,孩子们在这个年纪感到痛苦是不可避免的。 这个对事情没什么帮助的解释被广泛认同,甚至包括孩子自己。认为自己脚本身就有伤的人是不会停下来检查鞋是不是合脚的。 我怀疑这套孩子在13岁本身就很混乱的理论。如果真是生理上的问题,那么应该是普适的。蒙古游牧人在13岁时都是虚无主义者?我读过很多历史,但是在20世纪之前没有找到哪怕一个论据是支持这个假定的普适理论的。文艺复兴时期当学徒的青少年们都非常热情开心,他们当然也彼此打架、捉弄对方(米开朗基罗的鼻子就是被一个小霸王打伤的),但是他们没有疯狂。 据我所知,这个“荷尔蒙使孩子们疯狂”的概念与“到郊区生孩子”产生于同一时期。我不认为这是巧合。我认为真正逼疯他们的原因是他们的生活。文艺复兴时期的学徒们就像被人训练完成任务的狗一样,而现在的孩子们则像神经兮兮的宠物狗。他们的疯狂就是这无处不在的空虚造成的疯狂。 我在学校的时候,自杀在聪明一些的孩子中间是个老生常谈的话题。我认识的人没有自杀的,但是有些计划过,更有一些甚至尝试过。大部分人只是单纯摆个姿势。和其他孩子一样,我们喜欢引人注目,而自杀看起来非常引人注目。但是部分原因也是因为那时候的生活实在非常悲惨。 受人欺负只是问题的一个方面。另一个可能更糟的方面是,没有什么真正有意义的事情可做。人类乐于工作。在大多数的地方,工作就是一个人的身份。但我们那时做的事情没有意义,至少看上去是这样。 如果我们做的事情是将来我们可能要做的工作的实践那就再好不过了,那时我们却根本不知道到底在为未来干些什么。更多的时候它给人的感觉就像是让你跳起来穿过一堆铁圈。为了测试,一些没有意义的词句被设计出来。(导致南北战争爆发的三个主要原因是…… 测试:列举南北战争爆发的三个原因) 甚至,连退出的方法都没有。大人们都认为这就是通向大学的阶梯。终结这个空白人生的唯一方法就是自杀。 很早以前,青少年在社会中也担当过活跃的角色。前工业时期,一个又一个的学徒,在农场、商店、甚至军舰上工作。他们没有离开去建立自己的社会,他们是成人社会的新人。 那时候青少年也更尊敬长辈,因为长辈们都是青少年学习技能上看得见摸得着的专家。而现在大部分的孩子不知道他们的父母在遥远的办公室里做了些什么,也看不到(确实几乎没有)自己的学业和像父母们那样的工作之间有任何联系。 如果青少年们多尊敬一些长辈的话,长辈对他们也更为有帮助。经过几年的培养,学徒们可以真正地帮上忙。即使是刚刚才来的学徒,也能做一些送信,或者打扫工场之类的事情。 现在的大人没法给孩子们直接的帮助。他们需要上班。在上班的路上顺便把孩子送到学校,和周末他们出去游玩时把狗关进狗舍没什么两样。 到底发生了什么?我们面临一个很棘手的问题。这个问题的起因和现在很多问题的起因一样:细分。工作划分得越来越细,我们需要更长的时间去培养新手。前工业时代的孩子最迟14岁就得干活,大部分人居住的农场甚至更早。现在,去上大学的孩子在21-22岁之前都不会全日制工作。要是有学位,比如医药学博士、哲学博士,那么一直到30岁可能还在上学。 现在的青少年除了作为公司里的廉价劳动力外没什么用,就像为适应现在工作方式的快餐食品。在绝大部分工作中,他们都是负担。但同时他们又太年轻不能没人管束。因此最有效的途径就是将他们集中到一个地方,这样只需要为数不多的几个成年人就能看着他们所有人。 如果你到这里停止,那么你所描述的照字面的理解就是监狱。尽管这不是全日制的。问题在于,大部分学校几乎就在这里停止了。成立学校的目的是为了教育孩子,但是没有外部压力给学校要求一定要教育好孩子。所以这么多学校都没有把他们的职责当做一回事,将孩子们教育得很糟糕,即使孩子很聪明也是如此。学生和老师,大部分的时间,都只是走走形式装装样子。 在我的高中的法语课里我们被要求阅读雨果的《悲惨世界》。我认为班上没有谁的法语有那么好能将这一大厚本书读懂。和其他课程一样,我只是快速地浏览了一下“悬崖笔记” [5]。当我们做书上给的测试题时,我发现那些问题都非常古怪,全是些连老师也不会使用的长单词。这些问题是哪找来的?后来被发现是“悬崖笔记”。老师也在使用它们。我们其实都心照不宣。 当然,公立学校里也有很好的老师。我四年级的老师米豪尔科,他充沛的精力和超群的想象力即使三十年后,还在被他的学生们津津乐道着。 在大多数人群中你都能找到等级结构。在现实社会,当很多成年人聚集到一起,那一定有一个目的,最擅长做这件事的人一般被推举为领袖。而对大多数学校而言,他们没有目的。但是等级必须存在,因此孩子们从无到有地创造了一个。 我们有一个短语用来形容当评分机制在没有有意义的标准情况下建立时发生的事情,叫做这个情况“堕落为一场受欢迎度竞赛”。这正是在大多数美国学校发生的。某个学生的得分取决于他自己提高自己得分的能力,而不是基于真实的考量。就像路易十四的宫廷。没有外部的对手,孩子们就互相作为对手。 当有来自外部的技能测试时,位于最等级也并不是那么难过。橄榄球队的新手并不会憎恨老手的技术,他想成为和老手一样也很高兴有机会向老手请教。而老手也会有一种责无旁贷的感觉。更为重要的是,他们相处的融洽程度取决于他们对抗对手的程度,而不是取决于是否能击败对方。 而宫廷中的等级则完全是另一种东西。这种形态的社会降低了身在其中者的人格。身处底层,不会对上层的尊敬;身居高层,对下层也不会感到有责任。存在其中的关系只有杀与被杀。 这就是在美国中学中被创造出来的社会,产生于学校每天除了将孩子关在一个地方几个小时没有别人任何明确的目的。过去我没有意识到,现在我也只是刚刚意识到的是,学校其实有由同一种原因引起的双重恐怖:残忍的同学和空虚的生活。 美国公立学校的平庸不仅仅让孩子六年都在煎熬中度过,更糟的是,它还激发了一种叛逆性让孩子学不到他们本该学习的东西。 和其他许多呆子一样,从高中毕业后可能要多年之后我才可以约束自己去读一下本该读的书。而我失去的不仅仅是书。我不再相信类似“名誉”“诚实”之类的词语,因为它们已被大人们玷污。当他们使用这些词语的时候,它们看上去就只代表一个意思:服从。因为这些品质而受到表扬的孩子,好的话就是一头愚钝的牛,不好的话就是一个肤浅的溜须拍马者。如果什么地方有名誉和诚实,我一点也不想和它有什么关系。 我误解最深的一个词语是“老练”(tact)。从大人们的使用来看,它的意思大概是闭上嘴不说话。我猜想这个词是从“缄默的”(tacit)和“一言不发的”(ticiturn)相同词根派生而来。字面意思都是不说话保持安静。我发誓我永远不会闭嘴,他们也不能让我闭嘴。实际上,这个词是从“触觉的”(tactile)派生而来,意思是灵巧的接触。老练是笨拙的反义词,我觉得一直到大学我都没有弄明白。 呆子们不是这场激烈的受欢迎比赛中唯一的失败者。呆子们不受欢迎是因为他们不专心。其他孩子也会故意放弃因为他们受不了整个过程。 小孩子,即使是那些叛逆型的,也不喜欢孤独。所以当孩子选择退出这场比赛时,他会和其他孩子一起退出。在我所在的学校,主要的叛逆行为是嗑药,特别是大麻。这帮孩子穿着黑色的音乐会T恤,我们叫他们“怪胎”。 怪胎和呆子是在同一边的。他们的相同之处非常多。整体而言,怪胎们比其他孩子都聪明,他们用不学习的方法(至少看上去是从不学习)来表现一种团队价值。我更多地属于呆子阵营,但是我同时也是很多怪胎的朋友。 他们用嗑药的方法来维持他们创造的社会纽带,至少一开始是这样。嗑药是一件一起做的事情,因为是违法的,所以相当于他们共享了一种叛逆的标志。 我不是说在不好的学校会导致孩子陷进吸毒的泥潭。一段时间后,药物会有自己的因素。毫无疑问有一些怪胎为逃避一些其他的问题,比如家里的一些烦恼,而玩命地嗑药。但至少在我的学校里,孩子们开始嗑药是为了表现叛逆。十四岁的孩子听说大麻能帮助他们忘记困扰但却不会开始吸它。他们之所以开始去吸是因为他们想加入一个不同的帮派。 暴政滋生叛逆,这不是什么新观点。然而现在的管理者还是表现得好像毒品是孩子们自己惹上的麻烦一样。 真正的问题在于学校生活的空虚。在成年人意识到这点之前不会有任何方法解决。最先可能认识到这个问题的可能会是过去在学校里的呆子。你愿意你的孩子和你一样在八年级时饱受煎熬吗?我不会。那,有什么可以做的去解决这个问题呢?几乎可以肯定的是,现在这个情况不是避免不了的。它只在非有意识去设计的情况下出现。[6] 而大人们,总是很忙。在学校的表演上亮相是一码事,而和教育官僚机构较量则是另一码事。或许有少数人有精力去改变周围。我怀疑最难的就是认识你自己能做到什么。 呆子们也无需在学校里屏住呼吸,或许有一天一队武装到牙齿的大人会乘坐直升飞机来营救你,但他们这个月估计还来不了。呆子们生活即刻的提高还得从呆子自身开始。 仅仅知道他们处在什么环境应该会让他们感受到少一些的痛苦。呆子不是失败者。他们只是在玩一场不同的、但和现实社会的人更接近的一场游戏。大人们知道这一点。现在想找一个在学校里不是呆子的成功人士是非常困难的。 对呆子而言,有这样的认识也很重要。学校不是生活,只是一件奇怪的人造物体,半枯燥半野蛮。它很全面,就像生活,但它不是真实的。它只是临时的,即使你还身在其中,你也可以看到它之外的世界。 如果孩子的生活看上去很可怕,这既不是因为荷尔蒙将你变成了怪物(如同你父母相信的那样),也不是生活本身很可怕(如同你自己相信的那样)。而是因为对你来说再没有利用价值的大人们,将你遗弃到一个没什么事情可做的小地方。在这种类型的任何社会居住都是非常可怕的。不必为解释青少年们为什么不开心而做更多的解释了。 在这篇随笔中我写了一些难听的话,但论点是乐观的——我们认为一些理所当然的问题事实上都是难以解决的。孩子们不是天生郁闷的怪物,这对孩子和大人来说应该都是一个令人鼓舞的好消息。 注释及参考资料: [1] 莱昂·巴蒂斯塔·阿尔伯蒂(Leon Battista Alberti,1404年2月18日-1472年4月20日)是文艺复兴时期在意大利的建筑师、建筑理论家、作家、诗人、哲学家、密码学家,是当时的一位通才。他被誉为是真正作为复兴时期的代表建筑师,将文艺复兴建筑的营造提高到理论高度。他著有《论建筑》,于1485年出版,是当时第一部完整的建筑理论著作,并因应谷腾堡的印刷术的帮助下,推动了文艺复兴运动的发展。阿尔伯蒂仿古建筑设计手法严谨纯正,他在《论建筑》这本书里面体现了从文艺复兴人文主义者地角度讨论了建筑的可能性,并提出应该根据欧几里得的数学原理,在圆形、方形等基本集合体制上进行合乎比例的重新组合,以找到建筑中“美的黄金分割”。代表作有佛罗伦萨的鲁奇兰府邸。 [2] 尼可罗·马基亚维利(Niccolò Machiavelli,1469年5月3日—1527年6月22日)是意大利的政治哲学家、音乐家、诗人、和浪漫喜剧剧作家。他是意大利文艺复兴中的重要人物,尤其是他所写下的《君主论》一书提出了现实主义的政治理论、以及《论李维》一书中的共和主义理论。 [3] 苍蝇王是威廉·高丁发表于1954年的寓言体小说。小说讲述了一群被困在荒岛上的儿童在完全没有成人的引导下如何建立起一个脆弱的文明体系。最终由于人类内心的黑暗面导致这个文明体系无可避免地被野蛮与暴力所代替。故事发生的背景是虚幻的战争年代。小说出版的年代则是麦卡锡主义盛行,与冷战逐渐升级的年代。 [4] 美国一家烘培公司的商标 [5] 美国广泛使用的一套学习指南。 [6] Paul的注解: 那么我们怎么来解决学校的问题?答案的关键可能是大学。当你进入大学以后,这些大部分的问题就自然解决了。因此,或许可以这样发问:“怎么才能让呆子们的生活像大学一样?” 家庭教育有立竿见影的效果,但可能不是最佳方案。为什么家长们不在家里教授孩子上完大学呢?因为大学有家庭教育不可替代的好处?那么,若高中能做对的话高中也可以。
《黑客与画家》序
发表于:2011年1月13日14时04分
分类:翻译
《Hackers & Painters》是Paul Graham作品。不过并不是新作,而是收录了平时写的一些小品文,共15篇。俺垂涎这本书很久了,但是国内一直没有出版社引进。放狗搜电子版也一直无果。赴美出差这段时间,俺早早的在Amazon买到了这本书,纸质的,不是太厚。将书拿在手中就有了一个想法,何不试着自己翻译这本书?一方面锻炼自己的英文理解,另一方面将国外优秀的作品普及给更多的同好,再一方面让自己的旅美生活更充实一些。既然主意看起来不坏,那就越早行动越好。
现在这本书已经有电子版(英文)了,感兴趣的童鞋在这里可以下载。
若有其他童鞋想共同翻译此书,请在下面留言。任何批评、建议或者其他事宜,也请下面留言。若该文有侵犯您权益之处,请留言或者邮件告知,当在第一时间删除。因版权关系,本文及相关文章禁止任何形式的转载。谢谢!
黑客与画家Paul Graham 原著
Casey Lai 译
序 本书是我对于解释这个计算机盛行世界正在进行的变革的一次尝试。因此,她不仅仅是写给程序员。比如说,第6章是关于如何致富。我相信这个主题许多人都会对此感兴趣。
你或许已经注意到过去的30年中富有起来的人很多都是程序员。如比尔•盖茨,史蒂夫•乔布斯,拉里•埃里森。为什么会这样?为什么是程序员,而不是土木工程师、摄影师或者精算师?在“怎样创造财富”一章对此作了解释。
软件创造财富只是一个更为普遍的趋势的一个例证,而这个趋势则是本书的主题。这就是计算机时代。本也可以称为空间时代,或者原子时代的,这只是公关人员取的名字而已。计算机毫无疑问比空间旅行或者原子能技术对人们的生活方式影响更大。
我们身边的东西都在渐渐向计算机转变。你的打字机不见了,取而代之的是计算机。你的电话已经变成了计算机,相机也是。很快电视也将步入这个行列。你的汽车拥有的处理能力超过了1970年一台整个房间大小的大型机处理能力。书信、百科全书、报纸…… 甚至本地计算机的存储都正逐渐被因特网所代替。所以,如果你想知道我们现在处在什么位置,将向何方向发展,理解黑客们内心所思所想是很有帮助的。
黑客?不就是那些入侵他人计算机的人吗?对于计算机的行外人来说,这就是这个词的意思。但是在计算机行业内,顶尖的程序员会自称黑客。由于写作本书的目的是解释计算机世界的一些情况,我觉得冒一些险仍然使用这个词是值得的。
本书靠前的一些章节回答了一些我们可能都思考过的问题:是什么令初创企业成功?技术会在行家里手和门外汉之间划出一条鸿沟吗?程序员是做什么的?为什么连高中都不能毕业的孩子最后却成为了世界上最有权势的人物之一?为什么微软公司称霸了因特网(译注:此序写于2004年4月,现在微软对于互联网早已是昨日黄花)?怎么处理垃圾邮件?
接下来的一些章节是关于大部分计算机行外人未曾了解的:编程语言。为什么你应该关注编程语言?因为如果你想了解黑客之道,那么这就是一条捷径。如同你想了解1880年的工业技术,蒸汽机就是捷径一样。
所有的计算机程序都只是一些文本。你选择的编程语言决定了你可以表达什么。编程语言就代表了程序员的思想。
自然,程序员的这种思想对他们产生了很大的影响。你能从他们写的软件中看出来。旅行网站Orbitz,成功闯入了被两大巨头所瓜分的市场。一家是Sabre,在电子预定上做了几十年;另一家是微软。究竟Orbitz是怎么做到的?很大程度上是因为使用了一门更好的编程语言。
程序员被分为不同的类型,往往根据他们所使用的编程语言,更甚于他们编写的软件类型。说一种语言比另一种语言好一般都被认为是一种坏习惯。但是没有一个编程语言设计者能够以无所谓地态度去接受这一点。我对于编程语言要说的可能会令很多人反感,但我想除了这个方法,找不到更好的途径去理解黑客之道。
一些人可能会对“哪些是你不该说的”一章(第3章)感兴趣。这和计算机有什么关系?事实是,黑客们都对言论自由非常着迷。Slashdot[1],纽约时报的新闻评论网站,关于言论自由的讨论有整整一大章节。我认为大部分的Slashdot的读者将这网站看作一种言论自由的“批准”。但是“飞机和飞行员”(译注:一份关于飞机的美国杂志[2])却没有关于言论自由的章节。
为什么黑客们如此在意言论自由?我相信一部分理由是创新对于软件非常重要,而创新同时和“异端邪说”属于同一性质。优秀的黑客养成了质疑周遭事物的习惯。当你面对一个复杂度不逊于机械表,而且规模大上千倍的文字机器的时候,你必须这样做。
我认为那些不满足于眼下工作、行事特立独行的人更有可能成为黑客。计算机世界就像一片充满智慧的“狂野西部”(译注:Wild West,美国初期拓荒前的西部地区[3])。在那里,只要你愿意冒险,你可以计划你想做的任何事。
对于本书,如果我按照原定计划完成,那么她就是一片智慧的西部荒原。我不想让你按部就班地去阅读,思考:“喔,看上去这些呆子们就要支配世界了。我觉得最好去了解他们现在正在做的事情,这样我才不会盲从他们接下来的画饼。”如果你觉得这个点子不错,那么本书应该是比较有趣的。尽管从行外人看来,黑客们一般都比较木讷无趣,但是他们的内心却丰富得让人吃惊。
于马萨诸塞州,剑桥
2004年4月
注释及参考资料:
[1] Slashdot是一个资讯科技网站。它每天都会更新在主页的新闻数次。网站使用者可以对公布在该站的新闻发表意见。通常在头版的新闻会有最少有70个意见。较受欢迎的新闻可能会有上千的意见。在形式上,Slashdot可以说是blog的一种。而所有的新闻都是由网站使用者自愿提供的。网站的编辑会把合适的新闻发表在主页上面。该站的新闻主题也包括电影和书籍的评论、访问和Ask Slashdot。(http://zh.wikipedia.org/zh-cn/Slashdot)
推荐一个Java工具库——瓜娃(Guava)
发表于:2011年1月13日9时10分
分类:技术杂感
这儿的“瓜娃”不是骂人,而是Google出品的一个Java工具库的昵称,正式的名字是Guava。前段时间听组内同事提起过,偶然的机会看到瓜娃的介绍,才恍然发现这货实在是Java开发的瑞士军刀啊!
官方网站在这里。搜索资料的时候不要只输入“Guava”,否则会返回很多番石榴的图片和介绍,再加上“google”关键字就比较靠谱了。目前瓜娃包含了基础、IO、并发、集合类、网络等几个包,已经很强大了。对于相关的开发,很多功能瓜娃可能已经提供了现成的解决方案,不用去人肉一遍一遍发明轮子了。 本来想单独写一篇专门介绍一下瓜娃的,不过已经有动作快的童鞋抢先一步专美于前了,偶就偷个懒吧!这儿,这儿都是介绍,另外强推ajoo老大这篇忧郁冻人的瓜娃散文集。
分享游记 AND 照片
发表于:2011年1月3日5时53分
分类:个人日记
圣诞加新年,公司一共放了8天假,正好趁这个时候出去逛了逛。天天宅着不是个事儿啊!
圣诞前一天去的旧金山,下图是传说中的“唐人街”。比较失望,和上个世纪80年代的小县城没啥区别,也没有太多可逛的地方。 ![]() 旧金山1908年发生过一次大地震,地震引发的火灾烧毁了市档案局的很多资料,于是很多偷渡者冒充当地华人的子女取得了合法居留权。现在旧金山堪称全球除中国外最大的一个华人聚集点,全市三分之一的人口都是华裔。听说法X功总部也在旧金山,Sunnyvale附近也看到一个据点,路边也有老人在散发传单,还有横幅,内容也都是目前退X人数,九评XXX,公审XXX之类的。 ![]() 从唐人街步行到渔人码头,路过一教堂,很漂亮。今天圣诞前夜,教堂应该有一些活动的。为了去景点,没去参加。 ![]() 渔人39号码头,这码头的船貌似都是短途旅游的,类似深圳珠海那里的坐船转香港岛什么的。后面的岛叫“天使岛”,傍边还有一个小岛,以前是监狱,也是电影《勇闯夺命岛》的拍摄地。 美国人非常重视环保,码头上居然能看到海狮和各种海鸟在木板上悠闲的享受阳光,游客在远处拍照留念,一片和谐。 ![]() 渔人码头的市集,主要卖些旅游纪念品什么的。也有老美在这里卖艺的,表演些杂耍、乐器演奏,不少人都会掏钱。要是啥也不干,直接要钱,估计没几人会停下来。 ![]() 从渔人码头往金门大桥步行,走到快到金门大桥的一座小山上。这座桥远看不起眼,但是它是上个世纪30年代修建的,是跨海大桥,当时“震撼了世界”。从桥的一边走到另一边,估计至少要30分钟。这座桥是旧金山的地标。 ![]() 来张桥上的鸟瞰。3张照片拼接的,偶PS技术现在不行了,拼的质量不高。 ![]() 逛完大桥,返回市区。在联合广场下车就看到这家LV店,里面的包包都没标价,看到一条纱巾倒是写了价格。嗯,350刀,合人民币2000多,很给力啊。 ![]() 转个弯,看到这家苹果,没啥打算买的,一会就出来了。这店不知道害了多少家长,出门看见一小孩抱腿:“妈~我要iPad~~555”,他妈直接哄着拖出去。 ![]() 新年同事去租了辆车,去Big Sur看海景,沿途公路全在海边,景色非常棒。 到了Montery,在麦当劳啃了个汉堡,直奔沙滩。今天阳光很灿烂,但是风非常大,人都快飞了。一老美搞了个滑翔伞,底下栓了个小车,一个人玩得很high ![]() 海边的出租屋,冬天的缘故,基本没人。夏天应该很火爆吧。这个沙滩没什么贝壳,海带倒是随处可见。沙滩上有一头小海狮不知怎么搁浅了,挂掉了。 ![]() 碧海帆影,写意的生活啊。 ![]() 要是今天风小一些,在沙滩玩还是不错的。 ![]() 从Montery到Big Sur,海景逐渐多了起来。 ![]() 很美的大海。和深圳、惠州那边看到的海不同,这看不到什么岛,也没有海湾,直接看到的就是太平洋。这片水跨越了半个地球,直到对岸的中国。 ![]() 海边的牧场。养牛还是个很好的生意,把牛一放就行了,草地到处都是,成本很低。养大了,一头牛卖个几千美元不是问题。牛看上去也很happy,肉应该好吃。 ![]() Big Sur的州立公园,号称有熊出没。在Pfeiffer Fall前面照了张,颜色有点妖异啊。这公园很多大树,不知道长了多少年了,从下面走,光线都非常暗。 还去了另一个景点Valley View,不过也就是在高处鸟瞰一下山谷,相机广角不够,拍出来的照片也一般。 ![]() 昨天去了趟Great Mall购物,买了件皮衣,原价350刀,打折后149.99刀,因为是新年,又打折到104刀。给太太买了条香蕉共和国的裤子,50多刀打折到35刀。香蕉共和国看上去很受老美欢迎,买的人爆多。其实是GAP集团的中高端品牌,走的偏贵族路线。衣服的设计确实不错,也难怪了。 在Great Mall还淘了个新秀丽的箱子,才59.99刀。估计是因为颜色比较二,草绿色,绿得不好看所以打折卖。买完箱子,逛到Coach店,进店还要排队…… Coach在中国也算奢侈品了,在美国被同胞们像地摊货一样买,可悲啊。Coach打折很疯狂,进门就发一张8折的折扣单,很多包包按照原价已经打了5折左右,所以一共相当于打4折。看到一台湾同胞伸手就拿了5、6个钱包,偶进门看中一白包(下图),还有5个,心想逛一圈再决定买哪个吧,逛一圈回去发现就剩下2个了…… 结账的时候,一般都至少3个包。俺买了4个,两大两小,加税花了368刀。 ![]() 看到这的童鞋,如果你有啥想买的美货,我只要箱子没爆可以帮带。加州因为快破产了,税嗷嗷的贵,只要消费就要捐给政府9.25%的消费税。要带电子产品也没问题,但是在北京过海关要看运气,要是被罚就没办法了。为鼓励多多评论,只要在下面发评论就送巧克力一盒,有趣的评论可以送额外的小礼物。 ![]()
Cheetah Workflow 2.0
发表于:2010年12月14日12时22分
分类:技术杂感
Cheetah Workflow是一款工作流设计套件(说起来比较夸张,其实就这么一点东西),1.0初版在此。这次推出2.0也没修改太多东西,但是增加了一个很重要的特性:模块。
如果说最原始的程序逻辑结构包含顺序结构、条件结构和循环结构,那么引入模块(或者叫做函数或者过程,就这个意思)是个巨大的进步。 用1.0的CW做东西,一旦工程很大,流程图因为不能分层,看起来很是痛苦。所以,2.0主要是为了解决设计图的分层问题,将一些逻辑上较为独立的流程划分为模块,既可以使流程图看上去清爽N多,对于多人协作也非常方便。只要确定了模块的接口,多个开发者可以独立开发,不会相互影响。 底层引擎变了,设计器当然也要同步更新。新的设计器增加了模块的工具栏(公司没有图像处理软件,图就不上传了),拖动模块到工作区,设置好模块对应的模块文件名就好了。双击模块进入模块的编辑or查看状态。 因为这些天事情比较多,这个版本没经过太多的测试,有错误在所难免。有兴趣的童鞋可以下载代码(底层引擎和设计器),SVN是http://cheetah-workflow.googlecode.com/svn/trunk/
初到Sunnyvale
发表于:2010年12月6日14时15分
分类:个人日记
有些童鞋可能已经知道,我上个星期周末已经出差到美国进行公司搜索引擎的维护以及新特性的开发,现在居住在加州的Sunnyvale。这里离Google和Apple公司都不远,属于硅谷IT公司比较集中的地方。一个星期以来,随便到住处附近转悠了一下,这边的风土人情和国内,比如北京,差别很大。
宋鸿兵:世界经济形势分析及投资机会
发表于:2010年10月25日12时15分
分类:雄文推荐
宋鸿兵和时寒冰对于趋势的把握令我非常佩服。《股票作手回忆录》中说:“做大趋势才能赚大钱”,的确是这样。宋鸿兵去年在迪拜债务危机的时候预言了希腊债务危机,今年4月被忽然爆出;时寒冰预测煤炭、黄金、粮食、石油价格会发生大幅的上涨,现在A股正在兑现他的预测。做预测不是凭空想象,而是靠一些蛛丝马迹、草蛇灰线来进行合理的推定。
《股票作手回忆录》笔记(二)
发表于:2010年9月18日21时30分
分类:投资心得
生市场的气对你没有任何好处
Livermore从小精于记忆股价波动变化,买入卖出凭灵感就能取得成功。在21岁时,已经战胜了家乡所有的空中交易号子(一种对赌股价波动的机构),最后导致没有一家号子愿意和他交易。Livermore于是决定去纽约的证券交易所进行交易,带上了所有的财产,一共2500美元。 由于纽约的交易和家乡空中交易号子不同,以往的经验没能起到作用。第一天,Livermore操作就非常频繁,2个小时来回买进卖出了1100股,结果正好损失了1100美元,亏损了接近一半。Livermore的心底知道自己一定有什么地方做得不对,但是最终他没能说服自己暂时停止,而是继续在几天之内持续操作,最后所有的钱都被洗光。失败后,Livermore并没有十分沮丧,而是向熟人借了500美元,决定再回到熟悉的空中交易号子进行交易把损失都找回来。老家的空中交易号子都把他列入了黑名单,于是他到了圣路易,找了当地一家规模较大的空中交易号子进行交易。两天赚了2800美元,比空中交易号子两个星期从300多名客户身上赚的钱还要多。到了第三天,终于被空中交易号子的老板认出,将他赶了出去。回到纽约,Livermore认为自己已经逐渐熟悉了纽约的交易后,重新进入股市。当时正好赶上1901年好年景,每一个人都在疯狂的购买股票,Livermore始终按照一贯谨慎的态度进行买卖,一般的操作没有赚到太多的钱,但是Livermore看上了北太平洋铁路的股价图形表现得异常,很像要上涨,买进了1000股,并且不听每一个人建议,坚持做多。在上涨30点后卖出,当时Livermore的资产已经超过了50000美元。遗憾的是,仅仅2天过后,股市暴跌,Livernore之前已经预见到了这次暴跌,提前卖出了所有的股票等待在低位大批买进廉价的股票。但是,由于当时的股票交易报价系统是使用穿孔纸带,报价速度很慢,Livermore又习惯性的使用了市价委托而不是限价委托交易。当他卖出股票时,股价已经比他的期望价格低了20个点,买进股票时,股价又比期望价格高了至少15个点。一来两去,Livermore的50000美元又全部打了水漂。 Livermore是一个天生的股票作手,他非常清楚市场永远是对的。如果市场没有按照他预期的方向走,那一定是他的判断出现了失误。经常性的总结失误是学习的良机,才能更加地适应市场。 Livermore从来不关心内幕消息,只依赖自己的判断。他花费了5年的时间,一次又一次总结失败,最终学会了如何聪明地去玩这个游戏。有人说凡事都有两面,但是股市只有一面,不时多头或者空头的一面,而是正确的一面。Livermore在5年中学会的就是如何正确的玩这个游戏。 当你对一种股票的走势进行了判断时,你必须用金钱来支持你的看法。当钱出现了亏损时,就是市场在警告你,一定是有什么地方做错了。钱损失得越多,你的惩罚就越重。这时,你应该冷静地进行分析,重新评估你的股票,采取相应的措施,而不是一味地埋怨市场。
做最稳定的产品——清晰的异常处理兼谈反防御式编程
发表于:2010年9月10日23时40分
分类:技术杂感
为什么项目总是很不稳定?修改或者加入一个新的特性,必须使用大量的测试去保证质量。中途若出现失败,必须修改代码,一切推翻重来。无形中,开发者劳心劳神,项目发布后还得提心吊胆,生怕出现什么岔子。是什么让我们对我们的项目如此没有信心?怎样才能让项目从写下第一行代码开始就非常稳定?
就像股票的内在价值取决于上市公司的净利润一样,稳定的产品必须有一个清晰的逻辑结构。举一个简单的例子,读取配置文件是很多应用程序都有的一个逻辑。一般的步骤:先打开文件,再调用文件句柄的方法按字节、或按行、或整个读入文件,读入的内容经过必要的处理,再放入特定的数据结构中存储待用。在这个很简单的过程中,很多情况可以导致失败:在指定的路径上找不到配置文件、配置文件格式不正确导致解析失败、磁盘I/O错误…… 如果以上可能性都不存在,你写下的代码能够正确地读取配置文件并存储,那么你还需要问问自己,如果以上情况出现了,你代码的逻辑将何去何从?是立刻崩溃还是抛出异常交给上层逻辑处理还是打印一行错误信息到日志然后继续执行? 很多开发者回答不清这个问题,因为他们可能只是在catch (IOException e) {...}中加了一行简单的e.printStackTrace();或许还有一行return null;在调用方,又没有对返回值判断null,结果就是在运行时抛出讨厌的NullPointerException。 还有开发者为省事,写完了一大段代码后,在首尾加上try和catch (Exception e)。没有具体的异常类型,没有针对性的异常处理代码。这也是一个让人恨得牙痒的习惯。FileNotFoundException和IOException表达了不同的意思吧?为什么不能给不同的提示呢?IllegalArgumentException和ArrayIndexOutOfBoundsException虽然都是RuntimeException,但是处理逻辑肯定是不同的吧? 一个稳定的系统必定有一个清晰的异常处理流程,这样,遇到“可预见”的错误(一般是指检查型异常,在Java语言中指java.lang.Exception类及其子类),代码的逻辑都是可控的。如果你读配置文件时捕获并处理了FileNotFoundException,那么文件失踪时你能第一时间获得信息解决问题。如果用户输入了一个错误的参数,你又正确地抛出并捕获处理了IllegalArgumentException,那么用户能够接收到一个信息“xx参数不正确”,而不是冰冷的“系统错误”。JDK中自带了许多异常类,打开Java文档,在Exception页和RuntimeException页能看到它们全部的直接子类。这些类大部分在项目中是可以直接使用表达一定的异常含义。熟悉它们,能帮助你写出更优质的代码。 但是光熟悉Java自带异常类还是不够的。一个复杂的系统通常跨了多个子系统,包含了多个子系统的协作。如果发生异常,仅仅凭NullPointerException、IllegalStateException这些异常很难准确捕获想捕获的代码段。因为这些异常可以从多个地方抛出。比较好的实践是自定义异常类。 用一个例子来说明:搜索引擎最主要包含两大部分,搜索子系统和打分(排序)子系统。搜索子系统任务是产生若干搜索策略,打分子系统则从若干维度对搜索结果打分以确定顺序。打分子系统需要使用到搜索子系统产生的搜索结果,如果从搜索子系统抛出了一个异常,打分子系统接收到异常,继续抛出到更上层。这时,更上层逻辑需要确定这个异常从何而来?搜索子系统还是打分子系统?确定的方法就是定义三个异常类:SearchEngineException、SearchModuleException和RankModuleException(继承自Exception或RuntimeException需要根据具体逻辑定义),SearchEngineException应是SearchModuleException和RankModuleException的父类,表示整个搜索引擎大系统的异常,两个子类分别表示搜索子系统和打分子系统的异常类。子系统异常类还可以根据需要,扩展出更多适用于不同错误的异常类(下图)。 ![]() 加入这些异常类以后,上层的逻辑可以明确定位到异常抛出模块,有利于上层逻辑开发者理清底层代码逻辑。若异常由其他异常引起(如搜索时网络连接读取超时),可以捕获后将其封装到模块级的异常中抛出,上层逻辑可以用getCause()方法获得异常触发原因和信息。 为什么在上面的例子中,我一直反复强调“抛出”?你设置了很多的检查型异常捕获“可预见”的异常,但是,代码在执行过程中仍然可能遇到“不可预见”的异常,如用户输入不合法、网络连接不稳定造成的读取超时等,这些异常也可以捕获。但是,捕获后如何处理?最好的处理方式就是抛出。既然问题已经发生,就抛出异常,中止后续逻辑的处理,有助于将错误控制在一个极小的范围内,有利于后期的调试和除错。若是捕获异常后仅仅是记录一行日志,然后继续执行,错误会继续扩大,并引起更多的连锁异常。代码的逻辑就变得不可控制了,产品的稳定性当然也无从谈起。 一个特殊情形,如果系统在启动时遇到“不可预见”的异常,那么,应当立刻令系统崩溃。而不是捕获这些异常,使用默认值等手段让系统仍然运行。比如,配置文件中缺少了一个配置项,读取时发现并抛出了异常,但是开发者在代码中却捕获了该异常并设置了一个防御式的默认值,系统仍然能继续运行。但是配置参数来源已经不同,这个错误可能在开发阶段根本无法发现,如果到了产品发布才在用户使用中暴露出来,修改的成本和造成的影响将很高很高。如果系统启动时读取配置项时抛出异常,不进行捕获或者让系统崩溃,那么系统会用最直接的方式告诉开发者,有地方出错了,开发人员会在第一时间纠正错误,不会将错误带入到产品发布阶段。 这就是反防御式编程的方法论,出现错误,立刻崩溃,避免继续运算将错误扩大化。将控制权交回给上层逻辑决定下一步如何做。Joe Armstrong在著作《Programming Erlang》中坚决反对防御式编程,“速错(fail-fast)”和监督树的设计思想也来自于Erlang这门程序语言。 当然,做稳定的产品仅仅处理好异常和不进行防御式编程是不足够的。其他如封装、接口抽象、泛型、DRY原则等也占有重要的地位,限于篇幅,且听下回分解。写这篇博客花费了2个小时,太太在一旁高兴地看着快男总决赛。 ![]() |
|
| @2008 COPYRIGHT By Casey Lai | 版权请参照CC 3.0协议,转载或引用请注明出处 | |||