
有时候空闲下来不知道该干些什么。这时要是能找到一个有意思的问题来研究会感觉很充实。若面对的不是纯粹知识理解的难题而是一个有实际需求的问题,并且又能做出点什么东西满足这个需求,那心情就更好了。但更多时候是,即使闲着难受,也会觉得时间太短不够解决意料之中和意想不到的困难而难以鼓起勇气真正动手。
上周一整周都在休假,其中不少时间花在读剩下的少半本《 Snow Crash 》上。这本书断断续续读了一年半的时间。这类小说让我兴奋的地方在于看过之后,再面对普通工作时感觉那些东西多多少少带了一点向 cyber 世界慢慢前进的味道。主人公 [1] 用代码构建和打破 Metaverse 的规则或者拿着电脑 hacking 是我最喜欢的情节。讲到 hacker 和 hacking [2] ,作者 Neal Stephenson 是个行家,虽然这是本带有很大政治和文化成分的科幻小说而不是像《 Hackers & Painters 》那样的专门讨论 hacker 文化的文集,而且是在 1992 年的 IT 石器时代 [3] 写成,但是其中蕴含的很多 hacking 的精髓是这两年我才渐渐了解的。这是我近一年来越来越喜欢这本书并且决心在一周里读完剩下半本的原因。
在小说里最后一场大战开始之前,Hiro Protagonist 乘坐的 Mafia 游艇被 Raven 所在的潜艇击沉,他们一行四人的救生艇飘荡在太平洋上。一个无聊的 hacker 会做的自然是 Hacking !
Hiro does not know what he is doing, what he is preparing for. That’s okay, though. Most of programming is a matter of laying groundwork, building structures of words that seem to have no particular connection to the task at hand.
Metaverse 是个三维的虚拟现实世界。不过在救生艇上,为了延长电池续航,Hiro 特地进入了自己的纯二维工作空间 Flatland。让我觉得自己为了节省电池在 09 款的 MacBook Pro 上 re-login 的切换到集成显卡是个挺酷的举动。读完整部《 Snow Crash 》,我最喜欢救生艇上这段情节。因为背个笔记本电脑到处乱跑就是我在大学读书就有的梦想。写完一个简单的工具之后,Hiro 开始准备在 Metaverse 里最重要的工具,一个『隐身』的 avatar :
To write a really good invisible avatar from scratch would take a long time, but he puts one together in serval hours by recycling bits and pieces of old projects left behind in his computer.
什么都从头写起也许是有些人刚出道时的野心,不过对大多数干过几年的程序员来说,有东西能被『 recycle 』并且能用这些零碎『 put one together 』才是真正的资本。所以,在有时间有精力的大项目里要 leave behind 什么东西,才能有朝一日在『救生艇』上 put together 一件趁手的兵器?这是个严肃的问题。
除了看书,休假的这一周还受朋友之托要写个简单的小工具。我没有大块时间可用。倒是如上所讲,有些时间看小说,不过休假前半个多月的工作到了这样的程度,那些时间不用来看看小说其实也支撑不了什么脑力活动。但答应的东西要做,好在不是什么和 Apple 竞争的商业界面。我决定用而且只用 Adobe Bridge 的 ExtendScript [4] 来搞这件事情。编码和读小说是交替进行的,当读到 Hiro 救生艇 hacking 这段的时候,小说和现实仿佛重叠了。最后我终于 put together 出一个还说得过去的东西。作为正式工具来说太粗糙了。我觉得很大一部分原因是以前从未真正考虑为这样的『 put together 』leave behind 什么像样的东西。
我考虑从现在开始应该为 leave behind 做点什么准备。看来最终在『救生艇』上 put together 一定是用『高级动态语言』来完成。但太粗糙的东西不行。最后用『高级动态语言』拼接的『 bits and pieces 』必须是称手的、精致的。所以得用『集成污染』最少的语言 [5] 打造最好的模块。所以,我要再深入的学习 Lua ,而且开始考虑给我的所有 code base 加上 Lua 集成。
脚注:
- 主人公就叫 Protagonist。
- 这里的 hacking 和 security 没有直接关系。是《 Hackers & Painters 》里说的那种 hacking 。
- 1990 年的时候父母要给我买台电脑,我为他们乱花钱感到极大的惊恐。1993 年我有第一台电脑,以为要解决问题必须用 BASIC 来编写程序。
- 一个 JavaScript 的定制版本。和普通的 JavaScript 不同,ExtendScript 运行在 Bridge 而不是 Web 浏览器中。DOM 也和一般操作 HTML 和 CSS 的 DOM 完全不同。它基本上是用来编写桌面 UI 的。
- 《集成污染》