September 26, 2005

我用的操作系统

(此文发在紫丁香BBS的Linux版)

我昨天一时兴起,转发了这篇文章(注:王垠的《完全用Linux工作,摈弃Windows》)。我说说我的看法和想法。在我的印象里,使用Unix的计算机才是计算机系学生应该熟悉掌握的,因为Unix伴随着的计算机的发展,一步步成长壮大,其博大精深,绝不缺乏文化底蕴。美国的众多名校中,很多机房可能还使用中型机和终端——虽然我没有亲见,但是肯定会有。基于Unix/Linux系统,无数BBS,ftp,web站构架起来,形成网络文化。这是我印象中的计算机世界。

我接触的最早的计算机是Apple II,没有操作系统。后来见到了386,看到了DOS系统,觉得特别神奇,还花了很大的气力学习各种指令,后来甚至还略为了解了一下中断等DOS方式。
之后即是Windows 95&98。那时候,在我的家乡能碰到计算机就算幸运的了,几乎根本不可能见到什么中型机甚至小型机,更别谈Unix。虽然Linux在1991年就诞生了,可是在我接触计算机的时间和空间范围内,Linux只是一个遥远的、神奇的故事。到了大学,我才真正接触到Linux。不过当时忙着学MFC,忙着做图形界面,没有深入的学习。好在我有DOS的基础,Linux基本操作还是能很快入门的。整个大学期间,我使用最多还使Windows XP,其次是Linux。说来惭愧,我一直依赖于Windows XP,和我想象的计算机世界相距甚远。

Windows XP的优点确实不少,入门简单,容易上手。我开发程序很多在Windows下。每次打开熟悉的VC6、VC.NET或者EditPlus都能感受到编写程序是一种享受。不过我没有忘记DOS和Linux。因为实验室需要,我经常在Linux编译程序,在Linux上开发程序也慢慢成了家常便饭。不过我现在还是菜鸟级,只能用到vi最皮毛的功能,更不用说emacs了。很多开发还是,在Windows XP开发,再传到Linux系统下(注:传到服务器上,服务器系Linux系统)。虽然繁琐,也自得其乐。VC6+Visual Assist是我最喜欢用的开发工具组合,用于开发稍大的程序;写小程序的时候,我喜欢用vi或EditPlus敲,再用g++/gcc编译,原因很简单,这样简洁,不用建立工程(workspace)等一堆文件。写小程序出错的时候,拿出gdb调试,很有成就感。我不是什么高手,不过是个学计算机的学生。Windows和Linux两个操作系统,我都喜欢。我甚至在Windows下安装了cygwin,在Windows下用g++/gcc和Unix/Linux下耳熟能详的工具。Windows 2000/XP 是一个优秀的操作系统,至少比Win98更像个操作系统;Linux象征着自由和开放,有勃勃的生命力。虽然易用性不如Windows,那是因为Linux不是给一般用户准备的。Linux是为热爱计算机的人预备的。真正的计算机高手,哪个不会用Unix/Linux?

我看了王垠的文章,真实自叹弗如,佩服他的才干。不过我现在还没有这个勇气,完全脱离Windows,虽然我知道这离我想象的计算机世界,相距甚远。不过我一直在学习Linux,在Linux系统下实践,在两个系统间切换(还好目前有这个条件)。我转发文章的本意,让大家听到一种声音即可。至于选什么的系统,那是你说了算的问题。有人问“是复古么?”不,我没这个意思。使用Linux并不认为是“复古”吧。我喜欢用command line,因为这能让系统迅速、精确地明白我的意思,能够漂亮地完成任务。变态点说,敲击命令能给我带来无与伦比的享受,不管在DOS下还是在Linux下。不过有一点,凡事有个度,能快速地完成我的任务,在现有的基础和条件下,能用那种就那种,管他是鼠标点来点去还是在命令行下敲指令。还有一点,如果觉得哪种都不爽,别忘了Knuth停下写TAOCP发明TeX的故事,自己动手设计一个“解决方案”吧,也许另一个TeX诞生自你手中。

胡乱地写了一些自己的感受和想法。总结一下:对于Linux我是坚决的拥护者,很多工作都在Linux这个自由与繁荣的世界中完成;对于Windows,我可能会渐渐疏远,因为毕竟很多软件不是我能购买的,只是需要一个过程。我相信Linux带来的不仅仅是一个操作系统,更重要的是一种文化和一种思维方式。我是越来越喜欢Linux。

Posted by victor at 07:15 PM | Comments (3133)

September 25, 2005

一本好书《C语言名题精选百则技巧篇》

在“金北方”看到的这本书,第一想法是,这可能是什么等级考试或考研用的C语言的习题册,估计是一本垃圾书。随便翻了翻,看到了其中的一个问题,正是我前几天刚刚遇到的问题。大略的看了一下,觉得这本书似乎还不错。再浏览前言,别的没注意,只注意“提供源代码”字样,有网址。用手机把网址拍下来,准备回来细细研究。

代码下载后,打开一看,还真是有点古董的气息。差不多是老式的C风格,main函数还是void类型的。作者留下的注释中著名了日期,写于1989年。1989年,我刚刚上小学;我第一次接触C语言还是97年左右的事呢。这位作者是Ching-Kuang Shene,在互联网上一搜,发现是位大牛。Ching-Kuang Shene先生的中文名是冼镜光,是Michigan Technological University计算机系的副教授,对计算几何很有研究,还教授操作系统课程。估计这些代码是冼先生在1989年学生时代的作品。在他的Publications中,还提到了这本书。这本书在台湾于1992年左右就出版过,在大陆还是最近的事。台湾大学电机系的BBS上有一篇书评,也推荐这本书。看来是部不错的书。

很容易查到这本书的目录:
--------------------------

前言
第一部分 问题
第1章 序曲
第2章 数字问题
第3章 排列、组合与集合
第4章 查找
第5章 排序
第6章 字符串
第7章 其他问题
第8章 游戏问题
第9章 终曲
第二部分 解答
第10章 序曲
第11章 数字问题
第12章 排列、组合与集合
第13章 查找
第14章 排序
第15章 字符串
第16章 其他问题
第17章 游戏问题
第18章 终曲
参考文献
--------------------------
都是一些计算机科学基础的算法和话题,至少很吸引我。在网上没有找到电子版以一饱眼福,只好再跑一趟“金北方”了。不过这本书稍微有点贵,约40RMB。虽然已经有源码,但知其然不知其所以然。买书事宜正在考虑中。顺便抱怨一下,China-pub的网站太慢了,不知道最近怎么了,难道要黄了?本来想定一本书,现在没心情了。明天去“金北方”打探一下。

Posted by victor at 07:29 PM | Comments (52)

September 24, 2005

“863”评测故事(1)

去年的这个时间,几乎是robert一个人代表实验室出征,参加“863”中文信息检索评测。今年,还是这个时间,整个TR组一齐奋战“863”WEB检索评测。整个的备战过程,我有幸全程参与。我希望能够尽量将其中的收获与感受、焦虑与痛苦用文字编码。

* 去年的863
去年我也在实验室,当时是大四。robert负责准备参加863中文信息检索的评测比赛。几乎是白手起家,面对20G的语料,robert有些茫然不知所措。为了检索,首先要建立索引。可是如何索引?20G有多大?一部《红楼梦》大概是几百万字,20G的数据查不多是20000部《红楼梦》的总和。在大数据量面前,普通的索引算法显然不能胜任。robert一边查资料,一般编代码。经过几次修改,勉强的将数据索引起来。至于检索效果,连他也不是很清楚。我记得当时比赛大概是10月15日,原计划是“十一”之前拿到数据,“十一”期间建立索引。结果举办方“怕假期放假没有人收邮包”,一拖再拖,临近比赛才将光盘寄过来。那一段时间,robert通宵达旦的索引数据,修改程序。怀着惴惴不安的心,robert代表实验室,奔赴北京参加评测。听说在北京,robert还大病了一场。评测还算顺利,毕竟我们是第一次参加,缺乏经验。最后的结果也不错,虽比不上最好,也不是最差。

* TR结义
2005年863评测有些不同了。去年有不少的项目。当时仅实验室参加的就有5项之多,据说还受到组织者的赞誉。今年仅有Web检索、机器翻译和语音识别三项评测比赛。我们实验室只能参加Web检索一项了。既然仅能参加一项,当然就毕其功于一力了。robert于7月毕业了,他的衣钵传给了TR组。去年是他一个人孤军奋战,今年将是全新的团队——zzc是一年级的博士生,任队长,即老大;xcyuan, xghu, bright, wenxu是二年级的硕士,是组里面的主力;victor(也就是我喽)和leon是研一的,还有hy。顶头上司有两位stream和anson。整个TR组,全民皆兵,齐心协力备战863的WEB检索评测。

* 早做准备
有了去年的经验和教训,我们决定今年早做准备。兵马未动,粮草先行。Web检索,首先要解决的就是,如何索引浩如烟海的网页。去年是20G,当时觉得大的不得了。今年语料换成天网100G的语料,是去年数据规模的5~6倍。1张DVD的容量最大不过5G,如果用DVD纪录,得需要20张;用CD的话,得100多张;用软盘的话...还是用集装箱运吧。刚拿到数据的时候,面对100G的数据,确实有点不知所措。对我们来说,这算是海量数据了。如何稳定、快速的索引,成了摆在我们面前的难题。“他山之石,可以攻玉”我们何不“拿来”别人的工具?经过一段时间的调研和比较,我们选定了Lucene。Lucene是一个优秀的索引引擎,是Apache麾下的一员“战将”。很多著名的网站用Lucene构建检索系统。Lucene经过多年的发展,索引机制相对而言比较成熟,适合索引手中的语料。不过Lucene不是万能的,确切的说它是一个工具库,需要结合具体的问题具体应用。尤其是我们面对的中文语料,如何才让Lucene在中文上施展它的武功?俗话说“好马配好鞍”,Lucene索引中文需要好的分词系统的配合。我们实验室有一个比较成熟的分词系统,不过是C++编写的,而Lucene是Java实现的。多亏了robert,我们得以将二者结合起来,Lucene能够顺利地按词索引中文文本。zzc老大花了不少功夫研究Lucene,在5月份左右就将100G索引起来了。与此同时xghu研究Lucene的索引机制,为后来的应用做好准备。xcyuan为100G准备了漂亮的界面,检索起来也方面。
robert的毕业题目和语言模型相关,我当时也跟他做,因为我也要毕业么。之后的一段时间,我一直在查找语言模型相关的资料,也算是为863评测积蓄力量。

(to be continue...)

Posted by victor at 12:52 PM | Comments (3966)