语言壁垒

标签: 语言 | 发表时间:2011-09-30 16:34 | 作者:冰河 kylexlau
出处:http://tianchunbinghe.blog.163.com
语言壁垒 - 冰河 - Chun Tian (binghe)
(注:本书已可在当当网预订)

虽然经常更新微博,但确实又有些日子没写常规博客了。10 月开始前有必要再写一篇,整理一下近期的各种思路,以良好的精神面貌迎接今年的最后一个季度。

首先发布一个已经不太新的消息:Practical Common Lisp 的中文版《实用 Common Lisp 编程》几经周折终于付印了,下月即可正式出版;读者们甚至已经可以在当当网上预订了。我听说这本书印了 3500 本,我觉得不少了,因为如果可以间接培养出 350 个 Common Lisp 程序员来那真的就是奇迹了。

我对这本书的最终排版还是不太满意,封面上中英文的间距不一致而且普遍过窄,怎么看都像是从低版本 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 照相机的价钱了。为了照顾广大已经买房的同行的感情,我不敢表示任何欣慰。我更想说的是,社会的危险系数已经偷偷地大幅提高了,尤其是公共设施的安全性日益难以保证。在这种背景下,我们应当加倍地珍惜生命,珍惜我们一息尚存的有限时光,无论有何心愿,都应该毫不犹豫地尽快加以实现。我有很多未完成的心愿,由于日益不确定的明天,我也要配套做出一点儿改变了。

相关 [语言] 推荐:

语言壁垒

- kylexlau - Chun Tian (binghe)
虽然经常更新微博,但确实又有些日子没写常规博客了. 10 月开始前有必要再写一篇,整理一下近期的各种思路,以良好的精神面貌迎接今年的最后一个季度. 首先发布一个已经不太新的消息:Practical Common Lisp 的中文版《实用 Common Lisp 编程》几经周折终于付印了,下月即可正式出版;读者们甚至已经可以在当当网上预订了.

UnQL:NoSQL查询语言

- 卡飞菲 - Solidot
CouchDB作者Damien Katz与SQLite作者Richard Hipp正在为NoSQL文档数据库开发一种高级查询语言UnQL(发音同Uncle,是UNstructured Query Language的缩写). Katz表示,他们坚信为了推广NoSQL需要一种通用的查询语言,类似当年推广关系型数据库应运而生的SQL语言.

Go 语言初步

- wei - 云风的 BLOG
所谓认真玩,就是拿 Go 写点程序,前后大约两千行吧. 据说 Go 的最佳开发平台是 Mac OS ,我没有. Windows 版还没全部搞定,但是也可以用了. 如果你用 google 搜索,很容易去到一个叫 go-windows 的开源项目上. 如果你用这个,很多库都没有,而且语法也是老的. 我在 Windows 下甚至不能正确链接自己写的多个 package.

C语言之父

- Dylen - 子说
同事说c语言之父去世了,另一个同事大吃一惊,问:谭浩强死了. 不知丹尼斯·里奇(Dennis Ritchie)情何以堪.

如何学好C语言

- 夕角 - 酷壳 - CoolShell.cn
有人在酷壳的留言版上询问下面的问题. 我也遇到了和提问的老外一样的问题. 能给像遇到这样烦恼的程序员一点建议嘛. 我相信,这可能是很多朋友的问题,我以前也有这样的感觉,编程编到一定的时候,发现能力到了瓶颈,既不深,也不扎实,半吊子. 比如:你长期地使用Java和.NET ,这些有虚拟机的语言对于开发便利是便利,但是对于程序员来说可能并不太好,原因有两个:.

笨办法学C语言

- Hexi - Solidot
继《笨办法学Python》之后,Zed Shaw开始动手写《笨办法学C语言》. 和《笨办法学Python》一样,这本C语言入门书也将采用习题方式引导读者学习. 在序言中,他引用了笛卡尔《第一哲学沉思录》中的一段话去描述C语言:“直到现在,凡是我当作最真实、最可靠而接受过来的东西,我都是从感官或通过感官得来的.

C语言编译器 Cilk

- Le - 开源中国社区最新软件
Cilk多线程编程技术最早由MIT开 发,是一个基于Gcc编译器的开源项目. 后来开发者创建了一个创业公司,推出改进的私有版本,整合到Windows下的多种编译器中. 之后它被英特尔公司 收购,整合进英特尔的编译器中. 现在,它再次成为一个开源项目,成为Gcc 4.7下的一个分支. Cilk Plus允许C和C++程序员能高效利用多核处理器的并行处理能力.

Java7新语言特性

- zffl - Import
Java7发布有一段时间了,这几天升级了一下JDK,结果发现Eclipse3.7还没有支持JDK7. 这个需要稍微解释一下,可能有人不知道,Eclipse使用自己的Java编译器而不是JDK自带的javac. Eclipse自己的编译器就是ecj(Eclipse Compiler for Java),一般的Linux发行版都有eclipse-ecj这样的包.

C语言的现状

- pipitu - Tony Bai
Dobb's Journal 官网上的一篇由Brian W. Kernighan和Dennis M. Ritchie共同撰写的名为"The State of C "的文章. 这里谨将此篇译文献给不久前刚刚离我们而去的C语言之父 - Dennis M. Ritchie ,愿一代计算机科学巨匠一路走好.

Google Dart语言分析

- Jack - Solidot
Google最新推出的Dart语言引发了热议. 它是一种适合服务器端和客户端应用程序开发的程序语言. InfoQ的一篇分析文章认为,Dart的一些特性解决了Java或Javascript语言长期以来没有解决的问题. 它的Snapshots特性类似Smalltalk images,允许应用程序即时启动.