Dec 30, 2004

沙龙回顾与补充

以下内容是我大二时候写的,对于Knuth的一些八卦可能有错
=================================

我今天吃了晚饭开始写沙龙总结,不知道怎么搞得写了一大堆
因为Answer有版面的限制,所以做了删节
这里把完整版的贴出来
各位可以直接当作纯文本来看,也可以到www.cetx.org去下载TeX的编译器以获得更好的效果


\documentclass[a4paper,14pt]{paper}
\usepackage {graphicx}
\usepackage{amsmath}
\usepackage{CJK}
\usepackage{indentfirst}
\usepackage{geometry}

\renewcommand{\baselinestretch}{1.2}

\begin{document}

\begin{CJK*}{GBK}{song}
本周日的地学沙龙我向大家介绍了\TeX 语言,一种由Stanford计算机系教授Donald E. Knuth在1983年发明的用于排版的语言。我想借Answer的机会谈谈和\TeX 有关但又不是\TeX 的问题,算是给大家的新年礼物。

为了说明\TeX ,必须谈一谈这个有趣的人。 Donald E. Knuth22岁毕业,由于“成绩过于优异”,同时被授予学士和硕士学位。他在36岁的时候就获得了图灵奖,可以算 是图灵奖获得者中为数不多的年轻人。(好像Unix的发明人之一Ken Thompson 是到40多岁才拿图灵奖的).Knuth 在图灵奖的颁奖典礼上做了关于计算机程序设计和艺术的关系的演讲,最近一期的 Programmer(程序员)杂志就刊登了对这篇文章的评注。 Knuth总共教了28个博士生。不知道怎么搞的,他觉得28这个数字很好,于是就决定再也 不带博士生了。拿了图灵奖之后Knuth突发奇想,他扬言自己要用20年时间写一本 同Newton的\emph{The Mathematical Principle of Natural Philosophy}一样著名的书。于是他宣布退休了,恐怕这是全世界大学里面退休最早的教授了。由于他在图灵奖颁奖时的演讲时关于计算机程序设计和艺术的关系,所以他到Stanford的图书馆里把所有含有“艺术” 和“科学”这两个字的书都看了一遍,然后决定 自己的书名就叫做\emph{The Art of Computer Programming}。这本书他计划写7卷,目前写了3卷,我前段时间因为研究排序算法,看了第三卷开头讲排序的一段内容,觉得这个老头“太认真”了。他居然能字斟句酌的写了两页纸讨论为什么计算机科学中“排序”用sorting这个词,而不用其他的词,诸如order。结果这本书才写了三卷,就已经被认为是同Newton的\emph{The Mathematical Principle of Natural Philosophy}一样著名的书。我前段时间还曾经到图书馆查找了其他讲算法的书,结果发现没有哪本书敢不引用\emph{The Art of Computer Programming}的,当然中国人写的书除外。

写这本书的时候,Knuth觉得当时的计算机排版系统实在是不爽,于是他决定发明一套新的排版系统,这个就是
\TeX 。后来有人说,光是发明了 \TeX 就足以让Knuth再拿一次图灵奖。

\TeX 是如此的完美,以至于Knuth说发现\TeX第一个错误的人将得到2.56美元的奖金,后面发现错误的人,奖金翻倍。20年来,\TeX只被发现了几个错误,假如让Bill Gates这样做,估计他要破产了。

这个Knuth也是有意思他把\TeX的版本不是像一般的软件那样用不断增加的数字,或者年份来表示,他居然想出用$\pi$的近似值来表示。版本每提高一次,就把$\pi$的近似值精确到小数点后下一位。你让Bill Gates 试试看这样,估计你每天打开Word文档的时候那个欢迎界面都要全屏了。

由于Knuth说programming是一种art,所以programmer必须是artist。他说我让别用\TeX写文章必须让别人感到自己是在享受。\TeX在20多年前就采用了形式与内容相分离的思想,一个\TeX文档包括两部分内容,一部分是文字,另一部分是这些文字的属性。这就是现在标记语言的思想,而第一个被大众接受的标记语言是HTML。这个语言是一个CERN的工程师在大约1990的时候发明的。可以明显的看出Knuth超前这个时代将近7年。不要小看这7年,计算机发明到现在才不过50年左右。由于采用了内容与形式相分离的思想,\TeX可以使得我们在写文章的时候专著于内容,不要去在意排版,就好比我想在在写这篇文章,我不管标题是否居中,到底是什么字体,多大的字号,我只关心我的标题是什么,于是我就用\slash author \{\}把我的标题声明,然后\TeX的编译器会根据我调用的头文件,就是在文章一开头 \slash usepackage\{\}里面的头文件,来确定我的标题是什么样的排版。

\TeX把这种思想发挥到极致,它甚至认为所有非ASCII码字符都是不同的style,比如我现在在写中文的\TeX文档,那么我就要调用一个叫做CJK的中日韩字符头文件。如果你要使用多种语言,那么只是多调几个包的问题。

所以说\TeX 的文档实际上只包括了内容,因此是非常小的,Knuth自己写的那教大家怎么用\TeX 的书\emph{The \TeXBook}的代码只有1.2MB。

\TeX是有史以来最强大的排版系统,我们可以用它制作任何文档。论文,书籍,海报,幻灯片,报告书,比如说Answer也可以。 现在有了word2tex,excel2tex,不知道哪天就会冒出powerpoint2tex来了。 Knuth还给自己 的\TeX
编译成的文档起了一个好听的名字DVI,就是Device-Independent的意思,就是说你无论在什么平台,什么语言,文档都是不会变样的。这种 DVI格式还可以方便的转换为PS和PDF格式。假如你的文章很长,有很多章节,还可以转换为HTML格式,变成一堆具有链接关系的网页。

\TeX 相对已有的WYSIWYG(what you see is what you get,所见即所得)的排版系统有很多优点。你何必去用MathType向文章中插入公式?\TeX 自己就是公式编辑器。你何必去使用所谓的文献管理软件?\TeX
自己就是一个文献管理软件。你何必使用昂贵的Adobe Acrobat去生成PDF?\TeX 自己就可以打印成PDF。你何必去在打印文档之前必须用软件将其打开?\TeX 可以生成直接可以被打印机接受的PS文件,假如在Unix/Linux系统下,你更可以简 单的用lpr 命令,然后就看着一页又一页纸从打印机里出来。

一开始用\TeX可能你觉得很不爽,因为你要输入那么多控制字符,但是你必须注意这样一点,你使用\TeX将为你带来维护文档时间的节省。我们在一个文档上所耗费的时间不仅是第一次输入内容的时间,还包括日后修改所
耗费的时间。假如你的文章准备改投另一个杂志,你是不是准备把所有的文字重新编排一遍呢?是不是把所有的MathType公式全部重输一遍呢?我就碰到这种情况。我的文章中的公式原来是用MathType5写的,结果编辑部冒出来一个要求说公式的各种尺寸要求,可以修改MathType的公式必须一个一个的双击来编辑,我把文章中的公式改完了,简直感觉把文章重写了一遍。假如你的文章还有上百篇的参考文献,你是不是又准备用格式刷一个个刷呢?

学习\TeX其实也不是很难,只要你会英语,就可以了,那些控制字符就是英语,你写\TeX文档的时候就感觉自己是在和计算机交谈。而且我们仅仅要求\ TeX可以把我们的文章表现出来,那些过于复杂的效果不在我们的考虑范围之内,那么我们能用到的\TeX命令是非常少的。

随着你使用\TeX 次数的增加,你会越来越喜欢\TeX。你会渐渐体会到Knuth所说的这是一种乐趣。

其实如果你花费了一个下午来听我讲述\TeX的语法那将很没有意义,所以我只讲了简单的一些语法。我更想传播一种思想,我向大家推荐\TeX在向大家推荐一种思想,一种文化,这种思想就是当今在软件开发领域非常火热的开源思想。这个思想就是Bill Gates的大学同学Richard Stallman在1983年的时候提出来的,他发起了这个叫做GNU的运动,当时他是MIT人工智能实验室的一员。当今世界最最有生命力的操作系统—— Linux正在不断的攻城略地,从商用服务器,巨型的计算服务器,到桌面PC,一直到小型的嵌入式系统在世界上几乎每一所大学,包括南京大学,都有服务器在提供Linux的服务。这个操作系统就是基于GNU框架之下的。开源的思想使得用户可以免费的得到软件的发行版,程序员可以任意的修改代码,每一个人都可以投入到开发之中,比如我就在为一个叫做gEDA/gschem的项目在编写HELP文档,因为我得益于其他人的劳动,所以我也要为之付出努力。前段时间有一个叫Eric Raymond的人写了一本书,叫做\emph{The Cathedral and the Bazaar}。他说传统的软件开发方式像教堂一样,每个工匠都受一个人指挥调度,而GNU的软件开发则像一个集市一样。是啊,这个集市里面还有我这样的小贩子。

GNU 是否成功我不能下定论,因为我不是学软件开发的。但是这种运动,是年轻人所特有的激情才能够维持的。我觉得不论你是否为GNU改写过一行代码,只要你使用过GNU的软件,只要你用心去体会GNU的思想,你就会感觉到踌躇满志。这也就是为什么GNU在大学获得巨大的欢迎的原因,而且大部分的GNU软件都是年轻人开发的,我甚至认为一个人能够有机会在年轻时接触GNU将终身受益。我在Linux下只使用一个盗版软件,Mathematica,因为其他的软件都有开源的了。

当我每天打开计算机的时候,我想到一个叫Linus的21岁大学生写出了一个叫Linux的操作系统;当我写文章的时候,我就想到一个叫Knuth的CalTech毕业生同时获得了硕士和学士学位,他36岁就拿了图灵奖,然后发明了\TeX。我还会想到这些软件所诞生的那些伟大的地方。当我用SPICE语言描述模拟电路的时候,我就想到伟大的UC Berkerley,当我使用PCB画电路图的时候,我就想到John Hopkins,当我用Emacs的时候,我就想到MIT的AI实验室,当我使用OpenOffice做幻灯片的时候,我就想到Sun的全称是 Stanford University Network,...
那么多光辉的名字激励着我,假如你问我为什么读书,我不禁想起1996年奥运会主题歌的名字:\emph{The
Power of The Dream}。

刚才看本期《商业周刊》,看到一篇文章“假如没有微软”,说的是一个人他的Windows系统受到攻击,他受不了了,于是去使用Linux的故事他说虽然他没有完全使用Linux,但是他是再也不会使用IE浏览器也再也不会去购买微软的Office了。

这就是一场大战的一个小小战役,在今天一场大战正在上演。战争一方的领导是一个叫Bill Gates的年轻人,战争另一方的领导也是一个年轻人叫做Linus Torvalds。战争的一方使用.Net作为武器,战争的另一方使用Java作为武器。这场战争影响了整个世界的格局,你翻开任何一本计算机方面的杂志或者报纸,都会看见这场战争的报道。甚至Hollywood的MGM公司都瞄准这个题材拍摄了大片Antitrust(这篇电影最后的致谢中就有 Linus Torvalds,最搞笑的是居然SUN的前总裁麦克尼尼也在影片中露相)这场战争没有硝烟,但是他将同荷马史诗中那么多伟大的战争一样被人们记住。记得电影“阿拉伯的劳伦斯”里面有这样一段话,“和平是老人的,所以和平也有老人的特点;战争是年轻人的,因此战争也有年轻人的特点” 我觉得投入到这场战争中去便是我不可失去的大学生活的一部分。

其实当我用\TeX的时候,我总是思考这个问题,中国是发明印刷术和造纸术的国家,但是今天这个世界上最先进的排版系统却不是中国制造的,这个问题值得我们深思。试想中国哪个大学允许教授36岁就退休,然后花20年时间去写一本书?又有哪个大学允许这个教授在写书的时候开了小差,去发明一个叫\TeX的排版系统?开了一个小差不算,他还觉得画图软件不爽,然后又发明了MetaFont。不知Knuth这20年发了多少SCI和EI。

但是反过来想想,中国哪个大学教授会带博士生到一定数量就不想带了?又有哪个大学教授会觉得排版系统不爽然后自己写一个?

所以我就反过来又想,中国哪个大学生会想到自己写一个软件?有多少人会不甘于现状想到自己去发明点什么?比方说像Linus那样自己写个操作系统,或者像 Knuth那样写个\TeX ? 倘若自己不能去发明,那么会不会去尝试一些新东西呢?又有多少人会为了自己的梦想而敢于放弃已有的成果?比方说像Knuth那样宣布退休而去写一本伟大的书?像Stallman那样不满MIT而辞职去发起GNU?像Gates,像Dell那样大学不上了而去创业?

于是我明白了,为什么 Stanford牛,不是因为有了SUN,有了Yahoo,有了Google。为什么Berkerley牛?不是因为有了 SPICE。他们之所以牛不是仅仅因为有那些我们所看得见摸的着的东西,更是有那些看不见,摸不着的东西,这种东西便是是一堆建筑得以被称之为大学的东西,这就是思想和精神。

\end{CJK*}

\end{document}

Dec 8, 2004

人类智慧,全球共享

我们中国人作科研有几个坏毛病:第一,自己的东西生怕给别人抢了 去,第二,对于作不出东西的人总是想去抄别人的文章,所以我们中国的科研搞不好,我们的学术交流做的很差,以至于有些老师连自己上课的幻灯片都不愿意公 开。而在国外,这些东西做的很好,我在国外大学的网站上可以很方便的找到他们的课件,讲义,做的最好的是MIT,它把500门课程都放到网上去了。全世界 范围目前正在形成一种open access的潮流,大量的免费论文数据库在世界范围内出现,最厉害的就是arXiv.org,号称全世界50%的物理学论文都是在先在那里发表的。而我 们国内的人就生怕自己的点子被别人抢了去,其实你的文章放在论文数据库上别人都知道这个结论是什么时候被你发现的。
昨天向某杂志社询问一个投稿的问题,关于是否允许预发表,结果得到如下答复:

只要不是在正式出版物上投稿或发表过的文章,我们接受投稿。
但有一点不知您考虑了吗?
预发表之后,您的文章的创新点有可能被别人采纳了.....
因为我们评审稿件时最注重就是文章的创新点是什么,所以.....
以上意见仅供参考。

按照这样的观点arXiv.org可以关门了,想想看arXiv.org在哪里呢?Cornell大学的图书馆。再想想MIT的open course ware。所以他们的大学之所以牛,反而不是因为他们把东西全藏起来,而是拿出来给大家用。物极必反啊,你捏的越紧,人家反而不想看你手上捏的是什么了。
按照这种观点,倘若学术界这样,那么软件业兴起的open source运动也要完了,按照那些人的想法“代码怎么能公开呢?公开了我怎么吃饭啊?”SUN不是还在吃饭嘛?Red Hat不是也没有饿死嘛?IBM还拿出一把钱来赞助Eclipse,搞的TI也跟着发布Eclipse中DSP的插件?他们不是也活的很好吗?
我们中国迫切地需要一种思潮来消除一切阻碍科学自由发展,阻碍科学思想自由传播的力量。
“知识的力量不仅取决于它自身的价值更取决于它是否被传播,以及被传播的深度和广度”
"Human knowledge belongs to the world"
建议这个编辑有空看一部电影,叫做AntiTrust,中文名字叫做反托拉斯行动。

Dec 1, 2004

什么都缺,就是不缺房子

首先说一下,我这里要说的不是什么房地产大亨,而是中国的很多大学给我的感觉就是除了房子,其他的方面做的实在太差,所以不禁让我感觉这些大学除了房子其他什么都没有了。那些大学还能够称之为大学便是因为还有房子的缘故。

最近不禁想起过年时候的一件事,高中同学聚会,原来的班主任现在已经升官当了学校的一个小小头目,老师提到我在高中时候搞的科学小组,学校现在在江 宁有了一个分校,希望我可以帮学校在分校也组织一个类似的社团。我不是非常情愿,(这不情愿的原因也和这个文章的主题是一样的),于是随便想了一个借口, 说是分校那边房子可能还没全盖好吧。哪知道老师说“那里什么都缺,就是不缺房子”。这句话在现在想来,倒是觉得还挺有道理的,特别是推广到国内不少的大 学。真的是什么都缺,就是不缺房子。而且现在不缺的东西在房子,假论文之外还包括了陪舞,嫖娼和假新闻。

如果要说缺什么,自然要先说别人有什么。那个别人不比自由世界,也可以比比欧罗巴,或者比比一衣带水的韩国或者日本,实在不行就比比同胞的香港、台湾、新加坡吧。仔细瞧一瞧,我们除了房子之外,确实还缺不少东西啊。

前几天在BBS看到首页推荐文章,说是没有了某个网友,全校的人都不要做科研了。哪个网友能耐那么大呢?原来是这个网友天天帮大家寻找出国的代理。 于是不禁想起前几天也看到的一篇文章,分析为什么会有Linus Torvalds这个人和Linux操作系统的出现,有一个关键的原因就是 Helsinki大学在1990年,那个时候Internet还不是非常普及的时候,就为大学生提供了Internet接入服务,使得他可以和世界上很多 的程序员交流。可悲啊,14年过去了,中国的大学生还在为出国代理而头疼。这14年,人家的Linux成为业界看好的黑马,而我们的许多学生除了 Microsoft便不知道这个世界上还有一个GNU了。这就是号称要建立世界一流大学的大学,恐怕在现在很多问题已经不能用经费不足来做挡箭牌了吧。

这只是一个比较极端的例子,但是不可否认,我们的大学同世界最大的差距就是在观念上,在国外的大学open source 和 open access已经蔚然成风,而我们的学生恐怕还是用着很传统的方式在学习吧,我们的教学内容和传授方式恐怕已经很久没有改变了。

人是靠思想站立着的,倘若我们是没有思想的人,那么我们的大学中的房子也是徒有空壳的房子,而我们也是徒有空壳的人。只可惜现在我们在空壳中添进去似乎还有些同大学格格不入的东西。

所以我觉得把“什么都缺,就是不缺房子”改为“什么都没有,只有房子”倒是更可以形容国内的很多大学