当我谈hack时,我谈些什么
2012-01-09
不管情不情愿,2012 终究是来了,作为摩羯座的我来说,元旦过后不久,二十三岁生日也将如期而至。在这样的时间点上,总免不了要有一番感慨——而且语气还是和三年前、六年前没多少本质不同。但我毕竟又长大了一岁,多少又能积累下一些感悟,对更多的事情得以坦然接受——当然,我还是我,我这个人的本质无非这样,所谓成长,如果指的是能去芜存菁,把我这个人的本质更进一步展露出来,那才固然最好。
回顾 2011,遗憾的是我并没有读过几本好书,想来想去,大概只能想得出一本大家都在说的《黑客与画家》,以及同一个作者(名字太长了记不住)的《引爆点》和《异类》。所以今年的一个愿望,就是能够多读多写,每周写一篇书评。
本来想从《异类》写起的,想把我的这一年定义为“汉堡年”——简单说就是全心投入专业技能训练的一年,正如 Beatles 乐队 1960 年至 1964 年在德国汉堡一样。无奈手边也没有这本书,就干脆抓起手边这本村上春树借由跑步谈写作谈自己的随笔集,从这本书开始写起。
说起来,这本书是 09 年初刚出版的时候就读过了,当时就很喜欢,给我挺大触动。这之后放在云南的家里,每年寒假回家都会读一遍回顾一下——其实也就两年。
村上在这本书一开始就说:
> 我并非要在这里高谈阔论、振臂一呼:“来呀!让我们每天跑步,永葆健康吧!”归根结底,这些都不过是思索片段,抑或自问自答——对我个人而言,坚持跑步究竟有何意味。仅此而已。(p1)
对于鼓励别人跑步的态度,他只是表示:
> 也许真有人读了这篇文章,徒然来了兴趣:“好啊,我也跑它一跑试试。”当真练起跑步来。“呵呵,这不挺好玩儿吗?”这当然是不错的结果。(p51)
我便是这“跑它一跑试试”的人中的一个,受村上所展现的长跑魅力的诱惑,我在学校时有一段时间过着非常规律的下午准时去操场跑步,洗澡,然后晚餐的生活,现在想来非常怀念。真希望什么时候能重新过上那样单纯有规律的生活。
如果要说某种片段思索与自问自答,今年开始,我也愿意以书评的方式,尝试和写书的作者通过文字对话——当然也只是一种自问自答,作者恐怕是看不到的——以此展开来反省自身,帮助自己想清楚一些问题,如此说来不是挺好玩吗。突然想到 2012 是本命年,不妨就以此作为一个非正式的回顾好了。
对于我自己来说,这些年来或多或少都是围绕着一个主题转:计算机、互联网,或者说编程。我现在的职业是网页开发工程师,更具体一点是做前端开发工作,也就是用户用浏览器打开网页,所能看到的部分,网页内容的呈现和交互方式正是由前端工程师们通过编程语言写就的,这其实多少和写作有点类似。
两年前还在校园中的我,也没决定以此为职业,只是朋友看我做网页不错,说有个创业项目你来帮忙吧,就去了。两年过后,现在刚走出校园的我,也还对未来有些忐忑呢。不过基本上决定了,目标是做个 great hacker。
人究竟要做什么呢?究竟什么才是我们想要或必须的,我们如何确定我们最爱的事情?这个问题恐怕永远无解,或许我到死前也会怀疑自己的选择,心想当年要是学了音乐会怎样,抑或要是选了建筑系会是怎样。不过总的来说,现在每天与代码打交道,不仅不觉得痛苦,反而常常会从中获得乐趣——对一名黑客最为重要的思维的乐趣,那么,我至少能确定,对于这件事,我是真心喜欢的。
> 我就是我,不是别人,这于我乃是一份重要的资产。心灵所受的伤,便是人为这种自立性而不得不支付给世界的代价。(p24)
> 我也非经人劝说、受人招聘而成为小说家的(遭人阻止的情况倒是有),而是心有所思,自愿当了小说家。同理,人们不会因为别人劝告而成为跑步者,而是自然地成为的。(p51)
书的末尾村上又再一次重复了同样的观点:
> 并不是有个人跑来找我,劝诱我“你跑步吧”,我就沿着马路开始跑步。也没有什么人跑来找我,跟我说“你当小说家吧”,我就开始写小说。突然有一天,我出于喜欢开始写小说。又有一天,我出于喜欢开始在马路上跑步。不拘什么,按照喜欢的方式做喜欢的事,我就是这样生活的。纵然受到别人阻止,遭到恶意非难,我都不曾改变。这样一个人,又能向谁索求什么呢?(p167)
同样,成为程序员,对“黑客”这个身份有所认同,也不是受任何人逼迫才这样的。而是觉得这件事情有趣,也就一直做下来了。
“黑客”这个词,恐怕难免是要被人误解的,特别像去年年末国内发生的大规模的密码泄露事件,可能令有些人都对“黑客”这个词又怕有恨了,恨可能会更多一点吧。不过别误会,我所说的“黑客”,以及在《黑客与画家》那本书里所指的黑客,并不是此类人。这在那书的前言里有过介绍,hack 一词的意思是“砍”,解决一个问题就好像砍倒一棵树一样爽快,hacker 就是指以解决问题为乐的人,这里的问题一般指计算机或工程相关的问题。对于喜欢侵入别人计算机系统的人,国外一般有这样的共识,把他们叫做 cracker。这基本上是两种不同的人。比如说我本人,就从来没有盗取过别人的 QQ 或网游密码,或是破解别人的 WiFi 密码免费蹭网。不过对于后一件事以后倒是有机会学一学,哈哈,因为 hacker 也会做破解之类的事情——为的就是那“砍倒”问题的快感而不是破解后的其他利益,破解本身就是目的。
hack 这个词,其实更多地带有修改的意思,在开放源代码社区中,一个 hacker 对别人所提供的程序感觉不爽,就会自己去读程序源代码,然后经过适当的修改,删改程序功能,让程序符合自己的使用习惯,然后再把程序拿出来分享。
关于误解,村上说的是:
> 当受到某人无缘无故(至少我看来是如此)的非难时,抑或觉得能得到某人的接受却未必如此时,我总是比平日跑得更远一些。跑长于平日的距离,让肉体更多地消耗一些,好重新认识自己乃是能力有限的软弱人类——从最深处,物理性地认识。并且,跑得距离长于平日,便是强化了自己的肉体,哪怕是一点点。发怒的话,就将那份怒气冲着自己发好了。感到懊恼的话,就用那份懊恼来磨练自己好了。我便是如此思考的。能够默默吞咽下去的东西,就一星不剩地吞咽进体内,在小说这一容器中,尽力改变其姿态形状,将它作为故事的一部分释放出去。我努力做到这一点。(p25)
说到身体的局限,后面也说:
> 我非挑战记录的无邪青年,亦非一架无机的机器,不过是一介洞察了自身的局限,却尽力长期保持自己的能力与活力的职业小说家。(p135)
实际上,关于身体或人生的局限,村上在书中有多次提及:
> 我仰望天空。能看到一丝一毫的爱心么?不,看不到。只有太平洋上空悠然飘来浮去、无所事事的夏日云朵。云朵永远沉默无语。他们什么都不对我说。或许我不该仰望天空,应当将视线投去我的内部。我试着看向自己的内部,就如同窥视深深的井底。那里可以看到爱心么?不,看不到。看到的只是我的性格。我那个人的、顽固的、缺乏协调性的,每每任性妄为又常常怀疑自己的,哪怕遇到了痛苦也想在其中发现可笑之处的性格。我拎着它,就像拎着一个古旧的旅行包,渡过了漫长的历程。我并不是因为喜欢才拎着它。与内容相比,它显得太沉重,外观也不起眼,还到处绽开了线。我只是没有别的东西可拎,无奈才拎着它徘徊彷徨的。然而,我心中却对它怀有某种依依不舍的情感。(p167)
还有从第一次读就令我映像深刻的半夜冰箱的比喻:
> 不管怎样,这是我的肉体,有着极限和倾向。与容颜、才华相同,即便有不尽如人意之处,也无足以取而代之的东西,只能靠它拼命向前。随着年华老去,这种状况便自然形成,就好比打开冰箱,只用里面剩余的东西,利利索索地烹调出随意的、不无巧妙之处的菜肴来。哪怕只有苹果、洋葱、奶酪和梅子干,也不吐怨言。手头上能有点东西,就应该感恩戴德了。能够这样思考问题,乃是年华渐去一事为数不多的好处。(p95)
这“利利索索”形容得还真是传神,那得需要多强的能力啊。这让我想到技术栈了。今天我们所使用的计算机的体系结构或芯片指令集,不是没有更接近于完美、更漂亮的解决方案,只是因为历史原因它们才主导了市场而沿用至今。我们每天使用的编程语言也是一样。软件这种东西,一旦使用起来,特别是在这一层上面又再堆高一层,就很难摆脱从前的选择了。最实际的可能就是你进入到一家新公司,就得接受先前的人写的烂代码——在程序员眼中,别人写的代码约等于烂代码。俗话说得好,“One person's brilliance is another person's WTF.”——一个眼中的文艺是另一个人眼中的 2B 啊。所以面对别人的代码,村上春树所写的这种拿到什么材料都要烧一手好菜的态度和能力就至关重要了。
和所有普通人一样(村上不也是一个普通人吗),村上也会对自己所在意的成功有所幻想:
> 我也希望将“功夫不负有心人,能在纽约城市马拉松中取得这样的好成绩,乃是平日刻苦训练的结果。冲过终点时,我感动极了”之类气壮山河的话,拿来当作结束语,放在本书的最后。尔后伴着雄壮的《洛奇》主题曲,在华美的夕阳下,很酷地迈步离去。老实坦白,开跑之前,我的确心存这样的期待。要是这样发展该多好啊!这就是我的计划A,多么完美的计划啊!(p160)
但最后仍然是无奈地接受现实:
> 对我而言,对这本书而言,这大概是一个结论。哪儿都没有《洛奇》的主题曲传过来,理当朝着它走去的夕阳也无处可见。这结论简直就像雨天用的运动鞋一般朴实无华,人们也许会乎之为“虎头蛇尾”。即便有人拿着这个企划去找好莱坞制片人拍电影,他们大概瞄一眼最后一页,便不予理睬了。然而我觉得,这样一个结论才与我相配。(p166)
但是,村上的无奈并非是一种消极的无奈,而只是把这当做是基本条件接受下来,在这令人无奈的事实的基础之上,通过自己有意识的努力来做文章,而这一切的要点就在于坚持,无论跑步还是写作都是如此。
> 与其勉为其难地一直奔跑,也许适度地走上几步更为聪明。许多跑者正是这么做的,边走边让双脚休息一会儿。我却一次也没有走过。为了做舒展运动,我反复地驻足休息。然而我不走。我可不是为了走路而前来参加这场赛事,而是为了跑步才来的。为了这个,仅仅是为了这个,我才乘坐飞机,特地赶来日本的北端。不管奔跑速度降低了多少,我都不能走。这是原则。违背了自己定下的原则,哪怕只有一次,以后就将违背更多的原则,想跑完这场比赛就难上加难了。(p125)
关于跑步:
> 只要身体允许,纵然已是老态龙钟,纵然周围的人频频忠告,“村上君,不要再跑了,已经上年纪了”,我还是会不以为意地继续跑步。哪怕成绩大幅下降,我也会朝着跑完全程马拉松这个目标,如同从前一样——有时还会超过从前——继续努力。是啊,不管别人说什么,这是我与生俱来的性格,就好似蝎子天生要蜇人,蝉天生要死盯着树一般;又好比鲑鱼注定要回到它出生的河流,一对野鸭子注定要相互追求一样。(p166)
关于写作:
> 接受采访时,常有人提问:“对小说家来说,最为重要的资质是什么?”无需赘言,当然是才华。⋯⋯才华之外,如果再举小说家的重要资质,我将毫不犹豫地举出集中力来。⋯⋯继集中力之后,必须是耐力。即便能够一天三四小时集中意识执笔写作,坚持了一个星期,却说“我累坏啦”,这样依然写不出长篇作品来。⋯⋯值得庆幸的是,集中力和耐力与才能不同,可以通过训练于后天获得,可以不断提升其资质。(p85~87)
村上把跑步这种刻意选择坚持,以及,甚至是有意识地选择痛苦,解释为某种活着的意义:
> 世上时时有人嘲笑每日坚持跑步的人:“难道就那么盼望长命百岁?”我却以为,因为希冀长命百岁而跑步的人,大概不太多。怀着“不能长命百岁不打紧,至少想在有生之年过得完美”这种心情跑步的人,只怕多得多。同样是十年,与其稀里糊涂地活过,目的明确、生气勃勃地活当然令人远为满意。跑步无疑大有魅力:在个人的局限性中,可以让自己有效地燃烧——哪怕是一丁点儿,这便是跑步一事的本质,也是活着(在我来说还有写作)一事的隐喻。这样的意见,恐怕会有很多跑者予以赞同。(p91)
> 正因为痛苦,正因为刻意经历这痛苦,我才从这个过程中发现自己活着的感觉,至少是发现一部分。(p189)
所以,这本书和《异类》一样,说的无非也就是这么一个简单的道理:你接受你所拥有的,并以此为基础努力去达到更高的境界,但对结果不要太在意。自己能把控的尽力而为,无法把控的坦然接受。
这样的态度,也正是我所能认同,符合我性格的态度。所以,我也愿意同村上一样迈开脚步跑将出去——无论是真的移动肉身去获得切身体会还是作为编程、作为人生的隐喻。我也要开始在人生中有所坚持。
等到有一天功成名遂,就写一本关于我的成功不可复制的回忆录,名字就叫它《当我谈hack时,我谈些什么》——《What I Talk About When I Talk About Hacking》。尽管,我不一定能成为那么一个数一数二的 great hacker,也不一定能写成这么一本书,但是,在现在以及未来,可以预见的是,我都将会好好享受 hack 的乐趣。