虽然经常更新
微博,但确实又有些日子没写常规博客了。10 月开始前有必要再写一篇,整理一下近期的各种思路,以良好的精神面貌迎接今年的最后一个季度。
我对这本书的最终排版还是不太满意,封面上中英文的间距不一致而且普遍过窄,怎么看都像是从低版本 MS Word 里直接打印出来的。不过我已经基本放弃跟出版方争论排版问题了,首先这些事应该是美术人员负责的,跟编辑无关,其次我认为我们之间存在根本上的审美差异:我第一眼看这个封面,目光就停留在 “Lisp” 和 “编程” 之间那个过窄的间距,以及 “Peter Seibel” 和 “田春” 令人郁闷的右对齐上,一种恨铁不成钢的感觉久久无法消逝!但为了广大读者可以尽早买到这本书,只好先忍了。
我对一次又一次地谈论一本尚未面世的译作感到些许尴尬,因为其实并没有什么了不起的,只是翻译前人的优秀作品而已,又不是自己写的,而且说实在的翻译水平也很一般。不过我相信很多人长久以来都抱着一种疑问:为何这样一门语言的学习者可以如此自信地生活,甚至以此为借口跟丁磊这样的人闹矛盾并高调离开网易公司?一个 Java 程序员应该不会做这种蠢事,C++ 程序员也不会,但 Common Lisp 程序员却可以?! 即便为了揭开这些答案,人们也应该把这本书买回去看看,尽管这本书仅涵盖了我 8 年 Lisp 生涯里所有知识积累的第一年——漫漫 Lisp 路永远无尽头。
最后,我希望所有本书的潜在读者明白,如果你们真的可以把这本书彻底看懂,然后再看看另一本进阶教材
On Lisp(由于没有出版社肯出版此书的中文版,任何读者都可以来信向我索要最新的中文版 PDF),那么就可以来
Glority Software 投简历了。我准备近期设计一个 Common Lisp 能力测试的试题库,就从上述两本书所涵盖的内容里选题,以后用来考察所有新入职的 Lisp 程序员。
偶尔会收到一些 Lisp 爱好者的来信(不过并不是每封信都能及时回复,见谅),他们感谢我翻译了 PCL 这本书,同时也抱怨国内 Lisp 相关的资料太少,国外的英文资料一方面不知道如何寻找,另一方面看不懂(英文不过关)。
我逐渐发现,计算机领域中似乎同时存在两个层面的语言壁垒:分别位于自然语言层面和编程语言层面。
如果时间可以回到初中重来,我一定要好好学英语。无论初中、高中和大学时期,我的英语都太差了。读书的时候无论英语单词还是语法我都很差,大学英语四级勉强通过,英语六级的课程根本就没学。现在其实也好不到哪里去,不过总算是可以正常阅读计算机相关的英文资料了;偶尔用英语跟人交流一下也没什么障碍,但我的方法是尽可能用自己熟悉的简单词汇来叙述各种事情,语法能省则省,总之以能够被对方理解为准。至少对于工作来说,我的英语水平已足够了,没有什么英文计算机书是我不敢看的;英语再学下去也无非是小修小补,除非还有心思去考什么 TOFEL,GRE 之类的。
英语之外的其他外语偶尔也会将我一军。上次高价从日本买回来的
Debug Hacks 一书,至今都还没正式开始看。这本书的风评很好,日本人原创,中文版的翻译号称奇差无比。可是我的日语水平还停留在熟读字母(假名)和基本句型阶段,连动词的各种变化都不会,实在是深感惭愧。更别提日本还有许多潜在的工作机会——各种使用 Lisp 开发软件的公司,比如说
黄涧石所在
MSI。
最近工作上除了维护 Lisp 相关软件之外,还在参与另一个 CAD 相关的大型软件的性能改进工作——这方面我不是专家,但我正在努力地跟公司里优秀的架构师和 C++ 程序员们学习。我的长处是可以静下心来分析底层算法,然后做出相应的代码改进,至于 C++ 层面的各种优化我是完全不懂的,这方面自有相关专家去处理。这个软件的特别之处在于,它最初是意大利程序员写的,源代码的很多地方不但用意大利语来写各种注释,而且有时连变量名也用意大利语的单词来命名。我在 review 它的源代码的时候必须经常地用 Google Translate 来翻译意大利语的长句子。很多欧洲语言跟英语有着极大的区别,如果不熟悉基本的语法甚至连单词都无法从句子里分离出来,更别提这些单词的原型了。
于是我心血来潮准备学一点儿意大利语。感谢
VeryCD,也就是所谓的电驴,各种语言的学习资料,无论是电子书还是各种教学录音、视频都一应俱全。虽然可能有各种版权问题,但各种资料真的是铺天盖地的涌来,几天里我就利用家里的 Mac mini 服务器下载了几个 G 的各种语言的学习资料。PDF 文档导入
Papers 管理,mp3 文件导入 iTunes,各种格式的视频文件则留在服务器的硬盘里,由
AirVideo Server 提供即时的流媒体服务,随时通过 iPad 上的
AirVideo 客户端软件访问动态域名进行实时转码的视频点播。iPad 作为一个终端设备实在是太完美了,我的用法和配套设施也很值得骄傲。
不管怎么说,仅仅过了三天,听了总计不到 6 个小时的意大利语
教学节目,现在我知道了意大利语的基本概念,最基本的功能性单词(各种代词和相当于英语 be 和 have 的基本动词),可以从带有定冠词的阴性或阳性名词里分离出可以拿来查字典的对应原型。甚至记住了一大批样子跟英语很不相同的常见词汇——有些虽然跟英语里的对应单词区别很大,但是跟对应的法语单词基本一致。这时再去看那些源代码里的意大利文注释,唯一困扰我的就只剩下那些尚不熟悉的单词了。我认为意大利语无论发音还是语法、词汇都比法语简单一些,法语单词里有很多不发音的字母,单词通常都不以元音结尾,无论读还是听都很困难。
最后的结果是,
我开始同步学习 4 种欧洲语言:意大利语,法语,德语和西班牙语。因为我发现它们的单词都很相似,语法虽然互有差异但总体上保持了高度的内在一致性。最重要的是:这些语言的教学套路都是完全一样的,每个新的句型都可以对应教材的相同阶段找到同样的东西。我把这些语言看作是略有差异的编程语言,英语可以看成是基本的 C 语言,其他欧洲语言可以看作是 C++、C#、Objective-C 和 Java 这些的与 C 语言共享相同基本概念和表达式语法的编程语言。这些欧洲语言的单词可以视为不同编程语言中的各种基本库函数——如果一个程序员可以同时掌握多种编程语言,我相信以相同的思路掌握多种自然语言并且保持它们在使用时互不混淆也是完全有可能的。时间宝贵,但凡有 “事半功倍” 的可能就绝对不能错过,而且上次追求
法国小姑娘时所留下的法语摊子也终于可以合理地捡起来了。
这些计划总体上是很好玩的,对于一个尚未成家、工作繁忙程度有限,且可遇见未来有更多业余时间的人来说也是可行的。也许有读者觉得这些想法挺不靠谱的,不过 我既然公开地在这里讲出来了,就有信心坚持执行下去,不然就会很没面子了。
我已经两个多月没见过跆拳道小姑娘了,距离她暑期结束回到杭州也已超过 5 个星期了。貌似新工作/新学期里大家都很忙,忙到有时连微博都没空写了。我也很好地保持了连续一个月不勾搭任何其他小姑娘的良好记录,面对我最后的希望,我保持了破釜沉舟的心态。
最近我听说杭州的房价终于开始大幅下跌了,正常的 100 来平米的房子已经跌下去好几个 Leica M9 照相机的价钱了。为了照顾广大已经买房的同行的感情,我不敢表示任何欣慰。我更想说的是,社会的危险系数已经偷偷地大幅提高了,尤其是公共设施的安全性日益难以保证。在这种背景下,我们应当加倍地珍惜生命,珍惜我们一息尚存的有限时光,无论有何心愿,都应该毫不犹豫地尽快加以实现。我有很多未完成的心愿,由于日益不确定的明天,我也要配套做出一点儿改变了。