人品有问题啊

前几天收到了一封来自哲思的邮件通知,有人发了一篇帖子,是一篇转载王垠的博客文章《我和权威的故事》。转帖的部分算是前半部分,没有王垠自己的留学经历。我看了之后,真的是非常感慨。

我其实不是很想这么评价王垠,毕竟我有很多东西都算是王垠介绍给我的。我在初中的时候不知道怎么的去到了他的网站。当时他的网站还在清华的服务器上,里面写了很多我过去从来没有听过的东西。当时我也就知道个 Linux,至于 Emacs 什么的,我还没有见过模样,Scheme 跟 TeX 我还是第一次听说。当时我的感觉就好像是眼前开启了一扇大门,进入了一个全新的世界。那段时间给我的启发真是相当的巨大,很多思想方面的东西都是那时形成的。我到后来也从他的网站上获得了很多实实在在的东西,比如到后来我终于可以用上 Emacs 和 FVWM 的时候,我都是照着他的网站配置的。后来我学 TeX、Scheme、bash、wget 等等也是从他的网站上的材料入门的。他的网站对我来说是一份宝贵的资料,特别是当他退学后,他的网站被关闭,我为此难过了一段时间,因为这些资料再也难找到了。到后来我发现 huihoo 保存了他的网站的镜像,非常高兴。当时我已经会用 wget 来镜像整个网站了,于是就把这个网站全站给镜像了下来,一直保存着,到后来换电脑我也一直带着。王垠在文章中说他一开始崇拜某些权威,我在当时应该也算是崇拜王垠的吧,当时我没有自己的计算机,用家里的,当然不能装 UNIX 系统,最多的一次我在父亲的笔记本上用虚拟机装过 Fedora Core 4。所以我希望有一天可以向他一样使用计算机。

知道他退学是在我上大学后不久,那天正好是计算机上机课,我完成了那节课的任务,就在那里上网,结果看到了他退学的消息,还有他放在他的网站上的公开信。当时非常吃惊,他当时的行为可以说是非常的激进,因为他已经是国内最高学府的博士生了,过几年毕业后就是清华的博士,这应该是多么有前途的事情啊?后来看了他的理由,我觉得算是可以理解,虽然我应该不会这么做,只能是祝福他吧。

后来好几年我没有听到他的消息,中间他从 Windows Live 上写过博客,我第一次看到了他的样子,不过他的博客上没有技术上的内容。后来是好几年之后,我有一次跟 @izh 网上通话聊天的时候,听到了他说王垠现在鼓吹微软了。我非常吃惊,忙问怎么回事?他说了他最近听到的新闻,说他写了一些文章,还有在 Google 的生活经历,等等。通话结束后我找了一些他的文章来看,这个时候就让我比较反感了。不过之前算是从他那里学到过东西,我觉得一下子就给他负面评价有些不好。后来我虽然腹诽了几句,不过也不想公开的批评他,直到最近看到了这篇关于权威的文章。

从王垠早期和近期写的文章,我觉得王垠是一个爱走极端的人。这种人或许会做的比较完美,也有可能会让人讨厌。早起他在鼓吹 Linux 系列,当中说了不少抹黑 Windows 系列的话,比如 Word 写论文怎么怎么不好他用 LaTeX 轻松加愉快啦,他用 Windows 下的下载工具怎么不稳定结果用 wget 完美的传输啦。到现在他又开始抹黑这一切,说 Knuth 怎么怎么过时啦,以熟悉 Linux 技巧为耻啦。读到这些你可以发现他是如何的极端了,我觉得从做人的角度上这是非常让人讨厌的。从功利的角度说这样是不给自己留后路,所以现在看王垠早期的文章,不知道王垠自己有没有觉得自己把自己的脸扇的啪啪的?从另一方面,这也意味着这个人不懂得自我反思,喜欢什么东西就把它捧上天,不考虑它的缺点;讨厌什么东西就把它评的一文不值,没有一点优点,也不考虑是不是自己有问题。像这种人怎么能让人喜欢呢?

这样极端的思想,导致了王垠的言论从过去到今天完全翻了个翻,我不知道在几年后王垠会不会又会再重新调转方向,攻击他现在所鼓吹的东西。当然可以说是他成长了,有了新的观点,但他表述观点的方式非常让人反感。在过去给了我们很多帮助的人或东西,我们有了一些进步,改变了想法后就这么激烈的批评,我想这是一个很失败的事情。这已经不算是学术上的对错了,我觉得这已经上升到了人品的程度。好比有人战争时期有人换了阵营,就从言论上攻击旧主,这样的人哪怕现在的主人也都厌恶。

当然,这是我读了王垠的文章后自己猜测的,我不会说王垠就是人品有问题的人,也不愿意这么说他,但他这种行为真的很叫人失望和讨厌。

Jim Weirich 讲 Y Combinator

Jim Weirich 是 Ruby 社区中我最喜欢的讲师。首先他的体型会给人很深刻的印象,听他演讲时不断传出的喘气声,给人一种他随时可能一口气没上来就累死的感觉。但他的演讲十分的吸引人,流畅、生动,如果在大学里,他绝对是最受学生喜爱的教授类型。

Jim 在 Ruby 社区中非常活跃,他的作品可以用“脍炙人口”来形容,比如 Rake。几乎每届的 RubyConf 都有 Jim 的演讲。相比起 Matz 那典型的日本人的演讲,Jim 的演讲远比作为 Ruby 语言的创始人 Matz 的演讲更有趣。

过去自从 2007 年,每届的 RubyConf 我都关注。去年开始比较忙,编程方面用心少了,于是最近的 RubyConf 我没有看。昨天正好想起来,就补了以下。今天我看了 Jim 在 2012 年的 RubyConf 上的演讲,标题是“Y Not — Adventures in Functional Programming”,讲的内容就是 Y Combinator,涉及的内容包括不动点、Lambda Calculas、递归等一些数学上的理论。Jim 这次的演讲中不包含 Ruby 知识,只是用了 Ruby 程序来演示了 Y Combinator 的内容。在演讲中,Jim 用 Ruby 中的匿名函数来写了一个阶乘函数,从最简单的开始,通过类似 LISP 语言中宏展开的方式,像证明一道数学题一样推导出了 Y Combinator 的 Ruby 代码。虽然到后期的各种替换,因为不是亲自操作,非常容易被绕迷糊,但 Jim 还是非常优秀的把总体含义给讲清楚了。

Jim 到最后也没有说出来这次的内容对于底下的 Ruby 程序员们有什么帮助,因为确实没有。这些知识就好像微积分对于文科生的作用一样,可以锻炼思维,但没有直接的影响。

我过去以为欧美国家里的计算机科学课程应该非常高深,比如过去我听说很多大学的计算机入门课程都是 MIT 的 6.001 教材《Structure and Interpretation of Computer Programs》,这本书用 Scheme 语言,讲述了计算机计算领域的很多初级问题。比如 Y Combinator 在书开头不久就在注释中被提到了,书上也给出了计算函数的不动点的程序。后来我自己来读了以下加拿大的大学中的计算机系后,发现随着时间的推移,很多东西都被舍弃了。毕竟现在人们需要的更多的是 IT 人才,而不是计算机科学家。MIT 自己也不再用 Scheme 语言来给学生入门,而是选择了更流行的 Python。所以很多欧美程序员,对这些过去的入门知识并不了解。因此在演讲的开始 Jim 询问听众有多少听说过 Y Combinator 的,结果回应的人很少。

看了一会视频,我发现 Jim 讲的内容并没有什么深奥难懂的东西,二这些东西基本上都在过去的教材中出现过,今天拿出来再讲一次,这不是把旧知识重学一遍吗?确实在计算机行业中有过一句话,大意是今天的编程语言就是把当年的 LISP 重新实现一遍。于是在前几年的某个时间点之后,大大小小的语言设计者们开始往他们的作品中加入 lambda……

我对早期的编程语言非常的感兴趣,因此也很容易产生迷惑。我在大学中学的第一门 3000 等级的课就是讲述各种类型的编程语言的一门课,内容包含了函数式语言、LISP、PROLOG 以及 APL 语言的后裔 J,这门课的成绩是我所有学过的 3000 等级的课程中最好的之一,那时我主修的 2000 等级的课程才刚开始不久。让我在学这门课的时候如鱼得水的原因就是我对那些传统编程语言的兴趣。因为觉得这些奇特的表达方式非常有趣,因此我就更加的想了解,了解了之后就是困惑,这些优秀的东西为什么在今天都被主流排斥在外呢?为什么它们看起来如此的优美,但在今天却不再实用了呢?它们是花瓶吗?结果今天的主流语言开始模仿起了老前辈,但老前辈依然在各个小众领域中苟延残喘。或者偶尔能够诞生出一个后裔,在特定的领域绽放一点光芒,比如 Erlang。

最后说一句,看 Jim 写代码是一件非常享受的事情,因为他的头脑似乎特别清晰,不把东西给弄乱。而且他用的编辑器正是我喜欢的 Emacs,几十年的编程经验让他真正的把代码“玩弄于股掌之间”,让我觉得非常意犹未尽。

由Google Chrome OS之外所想到的

今天一早看Google Reader,最先看到了Linux桌面中文网的文章,介绍了Google新推出的操作系统。今天上分布计算课的时候,老师又提到了这个新玩意。然后就是晚上看Google Reader的时候,看到了keso的一篇新文《东拉西扯:Chrome OS不是一款软件》。其它的评断我觉得无所谓,但keso的这篇评论又让我感觉到了一点奇妙的东西。

声明:我这篇文章无意针对keso个人,毕竟角度不同。我只是描述我的比较长时间一直存在的一种感觉。

我是学计算机的学生,这算是我多年的志愿。我对硬件并不是特别感兴趣,主要的兴趣就在软件上。而自从Google或了以后,我的印象里就有了好多中声音,特别倡导“云”这一概念。理由是这是未来的趋势所在,赚钱所需。这让我多少有些不快。再之前类似的现象也是存在的,始作俑者可以算是方兴东了。从那以后,似乎技术在互联网上就不那么值钱了,反而是内容、创意。我不否认内容和创意的价值,但似乎人们过于看轻技术了。

当然,这只是我从计算机系学生的角度来看的。作为商人,最主要的就是把产品推销给客户,而过多的技术细节只会让用户反感,反而不利。但是从很多地方,人们在考虑问题的角度上,从实用的角度转换为商业的角度。这其实不算什么,但经常一些说法,有很强的颠覆性,比如重新定义“操作系统”、“软件”等的定义。确实Google的近期产品给软件上带来了很大的改变,但是要说一些模棱两可的话题,总让人有一种哗众取宠的感觉。我从来没有动摇过软件,尤其是本地软件,在我心中的地位。虽然我们现在离90年代Larry Ellison所鼓吹的NC概念更近了,但本地软件始终是计算机系统难以动摇的根基。不可否认,目前网络上有了一些很有趣也很有用的应用,但是没有了根基,一切也都是空谈。

有些时候,我非常羡慕在上个实际70年代的计算机系学生。包括Richard Stallman,Bill Joy的那些人。无论是ITS/LISP还是UNIX/C哪一派,都是那么有趣。没有商业的影响,一切都是研究。技术说话,没有人想要重定义什么东西,或者以扳倒Microsoft为目的。那时才是是计算机系统与网络的黄金时代。

我感觉现在在多数人的心中,商人,或者说是在台面上的人,永远都是多数人心中的英雄。如今在计算机领域,我能马上想到的最明显的例子,也许就是Steve Jobs了。前几天Jobs休养生息,人们对他的病情的关注,让我觉得比较肉麻。如果说Jobs去世后苹果会走向堕落,那我宁愿从现在开始就抛弃Mac,免得到时候觉得不适应。也许例子比较极端,我要说的是,台面上的人获得了过多的好处,让台下的人有点酸溜溜。也许这也算是我讨厌商业的原因之一吧。

不过这是我感觉最难写的一篇文章,这倒是事实。

未来我的研究方向

这两天脑子发昏,一直在考虑自己未来的发展问题。学习计算机已经算是定下了,计算机领域下面的学科很多,具体研究哪个方向还没有决定好。因此这两天就一直在考虑这些东西。

经过了几天的“深思熟虑”,我想到了互联网和数据库两个方面。就模仿《学习的革命》里的方法把他们用陈述句来表达出来吧。

在十年后我们传输一张DVD只需要1秒钟,甚至我们不需要通过电缆与对方相连。

互联网传输一直是比较热门的研究方向。如果有了高速互联网接入,我们就可以真真正正的享受到类似与本地化的互联网服务。目前网络电视等方面的研究比较火爆,人么一般采用压缩算法把视频压缩后传过来。这种方法就是所谓的“节流”。而节流毕竟是有限的,一部电影用再好的压缩算法也不可能压缩近10M大小。因此我想从“开源”上面下功夫,扩大互联网的带宽,以便实现更好的网络环境。

一旦这个更好的网络环境得以实现,那么我们目前尚在实验室里的很多应用就可以前进一大步了。比如集群计算等等……

在十年中我们的信息会爆炸性的增长,目前的存储方式已经不在适用。介时所有的数据都会被存储在新型的数据库中,目前的树形文件系统将被淘汰。

数据增多已经成为了一个不争的事实。1997年我们家买计算机时,硬盘是大约1.6Gb。现在人们买电脑,160Gb已经是普通的配置了。那是一个Windows97只要200Mb左右的空间,现在一个基本的Vista系统7、8Gb还打不住。

以前的我一直认为只有恶劣的软件才会做的如此臃肿,而优秀的工具总是可以在几百兆空间里放下,总是可以在4Mb内存里跑的很流畅。现在我不得不改变想法了。在十年内,计算机的应用会指数般的增长,人们需要把各种数据存储在计算机中来使用。我们的硬盘可以越做越大,但数据管理却没有什么大的改进。一个树形结构,我们从70年代一直用到了21实际,而它的缺陷我们在平时使用计算机是就有所体会:我们时常找不到我们需要的文件,而每次搜索文件也需要大量的时间。

因此,改善现有的存储方式就比较重要了,我目前认为数据库是比较好的方案。所有的数据都存放在一个“存储池”中,而我们使用的话需要用各种接口来进行存储。整个文件系统类似与一个“暗箱”,我们在外面进行操作,而文件具体在里面是如何组织的,则不用我们操心。

当然,上面两条只是我目前的想法。或许不太成熟,又或许一段时间后我又会有了新的想法。不过,未来不可预测,我们自己也一样不可预测。我们的科技一定会超出我们的想象,或许到时候我的两条想法都会变的不必要了呢。