David's profileprowyh's spaceBlogLists Tools Help

Blog


    August 30

    鹬蚌相争,渔人啥利?

    从春秋战国以来,都是“鹬蚌相争,渔人得利”!
     
    可如今这世道,规则已经成为了游戏……
     
    最近的一个小项目,客户要求能够在线播放rmvb格式的流媒体文件,而且有很多这种格式的文件都是从原来的系统迁移过来的,而这些文件在原来的系统上是可以播放的,却无法在新系统上播放!(原系统是Linux + JSP + Oracle)
     
    为这个问题困扰了好几天,将RealPlayer的<object>代码直接从原系统拷贝过来,仍然不行!邪了!!
     
    Google了半天,所获无多!客户头大,俺也头大!
     
    偶然在一篇资料上看到,rmvb的MIME类型是application/vnd.rn-realmedia-vbr。是不是IIS 6不支持这种类型呢?将这种MIME类型添加上,一切OK!
     
    如果说Microsoft和Real Networks竞争,体现在Player上互相排斥异己,也就罢了,大不了多装一个Player。可在IIS里把application/vnd.rn-realmedia-vbr排斥在外,却让我们吃尽了苦头!
     
    现代游戏规则:竞争就是让用户多点麻烦,多点frustrated的心情!等你麻烦够了,frustrated到底了,就会成为MVP!
     
    P.S.
    今天,oh,it should be yesterday,有两个朋友问同一个问题:你活明白了吗?不知道!活了这么多年,只能回答不知道!想想看,那唱出“道可道,非常道。名可名,非常名”的老者笑看人间百态:一切皆戏耳!……

    JavaScript Compiler

    上文《JavaScript代码优化一例(文)》曾引述过一个关于JavaScript性能的比较结果:
     
     JavaScript与其它语言相比较:
     
    • 比编译型的C程序慢5000倍;
    • 比解释型的Java程序慢100倍;
    • 比解释型的Perl慢10倍。

    而且还言及:

    随着Web 2.0以及Ajax概念的提出及相关技术的流行,Web页面应用程序化的趋势越来越明显,人们要求Web页面能够更多地体现传统桌面应用程序的风格与使用体验,而不再是传统Web页面的导航与刷新。在这种应用需求的推动下,原本只是在客户端起到补充与点缀作用的JavaScript代码,越来越成为Web程序设计的主角。而这就使得JavaScript的代码越来越庞大与复杂。

    既然如此,一个合理的推测就是:JavaScript Compiler将会成为未来编译器之战中的主角,或者说,JavaScript代码的编译会成为未来的技术趋势。

    为何JavaScript一直没有以compiled code形式出现,估计可能有如下几个原因:

    • 角色:早期的Web Page以展示型为主,JavaScript代码非常简单,性能并不是突出问题。
    • 安全:文本形式的JavaScript Code能够有效避免病毒和恶意攻击代码(虽然目前的带毒JavaScript代码并不少见)。
    • 形式:大部分的JavaScript代码都是嵌入在页面里的,没有做到代码与页面的分离。

    当然,可能还有其它原因。

    归结起来,角色可能是最主要的原因,因为安全可以通过Sandbox式的运行环境与系统隔离,即使是compiled code,也仍然只能访问DOM和BOM。形式是最不重要的,这只是一个编程习惯问题。

    角色正在起变化!随着Web 2.0以及Ajax的大量应用,Web Page正在演变为Web Application,JavaScript已经从原来不起眼的小角色,逐步成为编程的主导力量。这个时候,期待JavaScript Compiler就具有了合理性。

    非常巧合,刚好读到Richard MacManus的blog《Why Google and Microsoft need Javascript compilers》,文中称Google和Microsoft正在开发JavaScript Compilers,不过,作者所言并非我这里的意思,而是将其它高级语言(如Java、C#等)代码编译为JavaScript代码(所以,合适的名称应该是JavaScript Translator),以充分利用熟悉其它语言的开发者开发Ajax Application。

    Richard MacManus在文中提到Microsoft正在进行的一个项目Script#,是将C#语言代码编译为JavaScript代码。

    Nikhil Kothari(an architect on the Web Platform and Tools team at Microsoft)在其blog中介绍了Script#项目的情况。

    不管是Google的Java -> JavaScript编译器,还是Microsoft的C# -> JavaScript编译器(Script#),最终只能导致Client端的代码越来越重,Microsoft的spaces.live.com已经让我们体会到过重的Scripting的结果了。

    so, doing JavaScript code optimization, expecting JavaScript compiler!

    JavaScript代码优化一例(文)

    JavaScript(JScript,ECMAScript)主要作为Web的客户端编程语言,以浏览器为宿主运行环境,通过DOM(Document Object Model,文档对象模型)和BOM(Browser Object Model,浏览器对象模型)接口所呈现(expose)的对象和方法,来操纵页面的HTML元素。

    早期的JavaScript代码主要完成两方面的工作,一是在客户端进行输入验证(以避免由服务器进行验证而产生的网络传输);二是使页面产生一定的动态效果(如下拉菜单的动态显示,颜色与字体的变化等)。

    随着Web 2.0以及Ajax概念的提出及相关技术的流行,Web页面应用程序化的趋势越来越明显,人们要求Web页面能够更多地体现传统桌面应用程序的风格与使用体验,而不再是传统Web页面的导航与刷新。在这种应用需求的推动下,原本只是在客户端起到补充与点缀作用的JavaScript代码,越来越成为Web程序设计的主角。而这就使得JavaScript的代码越来越庞大与复杂。此时,JavaScript代码的优化就越发显得重要。

    所谓代码优化,主要是指代码所占空间(代码运行时所占的内存空间)和运行时间两个方面,早期由于机器内存资源的限制,算法研究者对空间和时间的优化给予同样的重视,空间上节省一个字节和时间上减少一次循环同样重要。现在,由于机器内存资源相对充裕(当然,只是相对而言),算法(代码)的优化,更多地集中于运行时间上,特别对JavaScript代码而言,更是如此。关于JavaScript的运行效率,Syracuse大学的Geoffrery Fox给出了一个比较结果[1]

     JavaScript与其它语言相比较:
     
    • 比编译型的C程序慢5000倍;
    • 比解释型的Java程序慢100倍;
    • 比解释型的Perl慢10倍。

    所以,要提高JavaScript的运行性能,除了寄希望于将来能有更高性能的JavaScript解释器之外,提高我们代码的效率也非常重要。关于JavaScript代码的优化,文献[1]给出了一些很好的建议,有兴趣者可以参考,此处不赘。


    优化实例

    下面通过一个工作实例,来具体看看JavaScript代码的优化。

    这是一个内部信息系统中的权限分配模块,界面如图1(见此文的代码部分,如果看不到,则有可能ask.com上的图片资源也被封掉了,唉.......)所示。
     
    其中,功能权限是指对系统功能模块(体现为菜单项)的使用权限,对象权限是指用户对信息对象的访问(读、写、改、删)权限。管理员通过此界面对项目组成员及其权限进行配置。代码的功能是找出选中的功能权限项目以及对象权限项目。最简单的办法是通过遍历HTML的<INPUT>元素。

    功能权限部分的遍历是相对简单的,通过INPUT元素的id的模式匹配,即可一次遍历所有元素,难点是对象权限部分。

    未优化的JavaScript代码是通过三重循环完成所有元素的遍历的,整个代码耗时1281毫秒,这显然是不能接受的,所以需要优化。

    下面是优化后的版本:


    // 功能权限及对象列表
    var functorListEx = new StringBuilder();
    var objectListEx = new StringBuilder();
     
    // 所有INPUT元素的集合
    var coll = document.getElementsByTagName("INPUT");
     
    // 用于模式匹配的正则表达式
    var fnRE = /functor_[0-9A-Za-z]{8}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{12}/i;
    var objRE = /object_[0-9A-Za-z]{8}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{12}$/i;
    var objRE_r = /radio_[0-9A-Za-z]{8}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{12}_r/i;
    var objRE_a = /object_[0-9A-Za-z]{8}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{12}_a/i;
    var objRE_m = /radio_[0-9A-Za-z]{8}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{12}_m/i;
    var objRE_d = /radio_[0-9A-Za-z]{8}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{12}_d/i;
     
    // 中间数据结构
    var aryObjList = new Array();
    var aryRList = new Array();
    var aryAList = new Array();
    var aryMList = new Array();
    var aryDList = new Array();
     
    for (var i = 0; i < coll.length; i++)
    {
     // 通过一次遍历所有元素,填充几个中间数据结构
    }
     
    // 对中间数据结构的后续处理
    for (var i = 0; i < aryObjList.length; i++)
    {
     var _id = aryObjList[i];
     var _r = aryRList[_id] == null ? "" : aryRList[_id];
     var _a = aryAList[_id] == null ? "" : aryAList[_id];
     var _m = aryMList[_id] == null ? "" : aryMList[_id];
     var _d = aryDList[_id] == null ? "" : aryDList[_id];
     objectListEx.append(_id + ":" + _r + ":" + _a + ":" + _m + ":" + _d + ";");
    }

    从结果显示的运行时间上来看,未优化的代码耗时1281毫秒(例中的coll.length == 318),而优化后的代码耗时47毫秒。可见,优化的效果是明显的。

    本例的优化主要是消除了代码的内循环,通过一次遍历就完成了functorListEx以及objectListEx所需要的几个中间数据结构(数组)的构建,后续的处理是由中间数据结构构建objectListEx,而aryObjList.length远远小于coll.length。所以,优化后的代码效率远远高于原来的代码。

    效率分析

    下面来简单分析一下优化前后的代码效率。

    令代码的数据规模(即coll.length)为n。优化前,构建functorList的运行时间为O(n),而构建objectList的运行时间为O(n3),所以,整个代码的运行时间

    Tnopt = O(n) + O(n3) = O(n3)

    优化后,构建functorListEx及中间数据结构的运行时间为O(n),构建objectListEx的运行时间为O(m),此处m < n。所以,整个代码的运行时间

    Topt = O(n) + O(m) = O(n)

    优化前,代码的运行时间为指数幂时间(这是最糟糕的!),优化后的运行时间为线性时间(这是相当好的结果!),由此可以看出,代码优化与否,差别是相当大的。

    当然,代码优化是以一个能够正确工作的代码基(code base)为前提的。所以,先让程序正确地工作,然后再努力使其快速地正确工作 [3]
     
    注:
    1、 上述代码中的StringBuilder对象录自文献[1],就像C#一样,这个StringBuilder对象也是构造字符串的高效对象。
    2、 由于篇幅的限制,文中省略了具体的代码实现,有兴趣者可以在笔者的blog(prowyh.spaces.live.com)中找到完整的代码实现。

    参考文献
    1. JavaScript高级程序设计,Nicholas C. Zaks著,曹力 张欣等译,人民邮电出版社
    2. JavaScript: The Definitive Guide, 5th Edition,David Flanagan,O’Reilly
    3. C++ Coding Standards, Herb Sutter, Andrei Alexandrescu, 人民邮电出版社
     
    【补注】 
     
    此文发于《程序员》杂志2007年第8期,并改正了杂志上几处小的排印错误。
     
    今天看到aimingoo的blog 再议《JavaScript代码优化一例》,对拙文的JavaScript代码优化进行了再探讨,从多个方面进行了更细致的优化,非常感谢!
     
    以前曾写过一文《JavaScript学习笔记(之一)》,是从阅读spaces.live.com以及gmail.com的JavaScript代码有感而发,谓之:现在的JavaScript代码让人看不懂。JavaScript是一个很小巧的语言,但由于兼有函数式和过程式语言的特点而使得Coding非常灵活,这也就使得代码优化大有可为的空间。
     
    正好今天读完Scott Meyers的Effective系列的最后一本《Effective STL》,Item 47: Avoid producing write-only code,读来深有感触。代码如何写得既correct,又effective,同时又不失readable,确实not easy,这样的代码才可以称得上beautiful code!
     

    August 14

    程序基于精确的数学

    【注】

    1、Dennis Ritchie == C,Bjarne Stroustrup == C++,Alex Stepanov == STL!

    2、本文是若干访谈的汇集,从中可以看出,我们的记者只会问一些无聊的问题,真正有意义的问题还是意大利记者提出的,不过,我删掉了一些内容,已经看不出来了。

    3、程序基于精确的数学,程序是描述算法和数据结构的,而不是描述继承性和多态性的——great idea!

    4、迭代器——非常重要的概念!

    5、OO和GP是C++中的两条线,或许GP比OO更重要一些,至少从美学上看是这样……

     

    程序基于精确的数学
    ——STL之父Alex Stepanov访谈录

     
    了解Alex和STL
    Alex Stepanov ,STL(标准模板库)之父,并因此而荣获第一届Dr. Dobb’s 程序设计杰出奖,现在是Adobe公司首席科学家。他曾是康柏计算机公司的副总裁和首席科学家,AT&T实验室副总裁和首席架构师,SGI服务和超级计算机业务首席技朮官。
     
    背景:Dr. Dobb’s程序设计杰出奖
    从1991 年起,每年《Dr. Dobb’s Journal》都会将荣誉给予那些对软件开发的发展做出了重要贡献的人。这就是著名的Dr. Dobb’s 程序设计杰出奖 (Excellence in Programming Award)。
     
    Alex Stepanov先生
    什么是STL呢?STL就是Standard Template Library(标准模板库)的简称,它是由Alexander Stepanov和Meng Lee在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前,Alex和David Musser已对该技朮进行了很长一段时间的研究。STL是多年来编程应用中常用组件的集合,STL的贡献是将各组件和接口泛化及标准化。这样可以极大地提高编程效率,STL现在是C++的一部分,任何C++平台都包含着它。
     
    中国.数学.未来
    对于STL之父Stepanov先生来说,他更像一位数学家,而他的经历也说明了这一点。和在上个月我们采访的C++之父一起,这次他是第一次来到中国,而他对古代中国和中国数学家的了解,更是让人佩服;当然,更有他对中国程序员们的祝愿!除了祝愿,还有大师的点滴看法,毕竟不能只说好听的!——真正的朋友都是这么做的。
     
    Stepanov先生告诉记者计算机科学是建立在数学之上的精确的学科,他说:“程序设计就像同未理顺的复杂性问题打的一场战斗,既然要打这场战斗,而数学首当其冲,几个世纪以来,数学的作用正在于此。如果将现在生动的数学体系作为实验证据,对于解决人类遇到的复杂性问题,数学还是最有效的。”
     
    当我们问他对中国和中国的程序员的认识时,他的回答还是和数学相关。他告诉记者:中国是一个伟大的国家。曾有过许多伟大的数学家:秦九韶的《数书九章》就是古代数学中的经典;《孙子兵法》中已包含现代西方称之为中国余数定理的内容。现代中国也产生过许多真正的伟大的数学家,如关于哥德巴赫猜想(Goldbach conjecture)所做出杰出贡献的陈景润先生。
     
    Stepanov先生的编程信条是:程序设计是基于精确的数学训练的。他的建议更是浅显而简洁:好好学数学,好好学计算机,好好学英语。
    谈到未来时,他虽然并没有明确回答什么,但对美好未来的憧憬,还是和大家的期待一样。关于将来要用的计算机语言,他也有自己的答案。他说:C++和Java会在近几年得到最大广泛的应用,我更期望最终会有某些新的、更完美的语言出现。
     
    大师和成长历程
    1950年11月16日,Stepanov先生生于苏联莫斯科,在莫斯科大学研究数学,但他从未成为一名数学家。因为他实在不能对Tamagawa算朮、Coxeter群等一些纯数学的东西感到兴趣。Stepanov先生的想法很单纯,他要脚踏实地干事。对他来说最幸运的事情是,他能够看到很多伟大的数学家是如何做学问的,也就使他更清楚地看清计算机科学中一些司空见惯的伪数学。因此,能成为一名程序员对他和计算机科学来说真是一件好事。
     
    另两位大师对他的影响是显而易见的,一位是计算机程序设计艺朮教授高德纳(Donald Knuth)先生,另一位则是计算机科学大师Edsger Dijkstra。他深情地说:“前者告诉我答案,后者则引我深思。”而他对高德纳先生的《计算机程序设计艺朮》一书的推崇,也使我们找到了提高自己编程水平的杀手锏。
     
    1984年,他成为纽约布鲁克林理工大学助理教授。他说:“教授计算机科学使我受益匪浅,我要对付各种研究生课程。在此过程中,我学到了很多新东西。我还用Scheme语言开发了一个巨大的数据结构和算法库,这项工作导致了Ada泛型库的诞生(这是和Dave Musser合作的)。在贝尔实验室短暂地研究了一段时间,设计了一个新的C++算法库,在1998年去了位于Palo Alto的惠普实验室。在那儿,先花了四年时间研究存储系统。1993年,得到了一个回头研究泛型编程的机会。而STL就是这次研究的结果。1995年又到了Silicon Graphics,在此,组建了一个小组继续进行STL的开发工作。”
     
    高德纳先生的《计算机程序设计艺朮》一书,正是Alex Stepanov先生极力推荐的一部作品,不论电邮中还是面对面时,他反复强调这部著作是一个珍宝库,想要什么,里面便有什么,而他在和这本书打交道的三十多年,从中受益无穷。从他对高德纳先生《计算机程序设计艺朮》的巨大推崇上,也对他的个性有所印证。
     
    STL故事
    STL是Stepanov先生一生中浓墨重彩的一笔,而这一笔在他的描述中却是那样地不经意。STL也是他个性的重要体现,独立思考,缜密逻辑。要了解STL之父,首先要知晓什么是STL。
     
    有一位意大利记者曾向Stepanov先生问过此问题:STL究竟是指Standard Template Library(标准模板库)还是 Stepanov and Lee?
    Stepanov先生笑着解释他的玩笑:哦,它真的是指Standard Template Library。我曾经在Dr. Dobb的杂志做的那个专访里开玩笑说,STL是指“Stepanov and Lee”,但它只是个玩笑而已。
     
    而真正的STL实质上包含了二者的意思。Meng Lee是他的一位无可挑剔的合作伙伴,她使Stepanov先生更专注,她在代码和文档上花了大量的令人筋疲力尽的时间。正是由于像Lee这样的合作者,使得STL最终广为世人传播。
     
    Stepanov 先生在互联网上很低调,既没有个人主页,也很难搜索其电邮。
     
    对话STL之父Alex Stepanov

    问:您认为编程的好的方法是什么?对于编程来说,一种工具是不是必需的?
    Alex:我认为学习多种不同的编程语言是非常重要的。我用过Algol-60, Common Lisp, Scheme, Ada, C, C++, Java,和多种汇编语言。然而,也不能仅仅局限于程序语言,它仅仅是种表达算法和数据结构的工具——并且是种有缺陷的工具。一如Niklaus Wirth有句精辟见解:程序=算法+数据结构。
     
    问:您认为计算机语言和人类的语言有什么区别?
    Alex:没有人尝试过用计算机语言写出诗歌来。计算机语言发展到能允许我们解决一些真正美好的现实生活中的东西,还有很长的路要走。
     
    STL和OO

    问:STL一开始被设想为今天这个样子吗?即所谓的C++标准库,或者,它是从别的什么项目来的?告诉我们一些关于STL的历史好吗?
    答: 1976年,又要说回到苏联了,我因为吃生鱼片得了严重的食物中毒而住院,在精神恍惚中,我忽然意识到并发的加法计算能力是基于加法是结合性的。(因此,STL可以说是细菌传染的结果)同时,我意识到并发的减法运算是和半群结构类型有关联的,这就是最基本的重点:算法是定义于代数结构基础之上的。我又花了一些年头,意识到必须在正规公理上加入复杂性必要条件以扩展结构的概念,接着又花了15年之久才完成全面的架构。(我直到现在都不能确定我是否成功地让我朋友小圈子之外的任何人理解了这一点)。我相信迭代器理论是计算科学的中心就象环或Banach区间理论是数学的中心一样。每次当我找到一个算法时,我都要努力去寻求它所定义的结构基础。我想做的就是泛化地描述算法,并乐此不疲。我可以花一个月时间去精确地描述一个众所周知的算法的泛化表示。迄今为止,在向人们解释我这种行为的重要性方面,我是异乎寻常的失败。然而,不知何故,这种行为的结果─STL却是如此成功。
     
    问:有一件事情我一直都很惊奇—C++标准委员会那么快就采纳了STL。我的意思是,这些委员会可都是以谨慎和保守而出名的。这一点,你怎么解释?
    答: Bjarne Stroustrup的支持是至关重要的。如果说Bjarne想要什么东西的话,那就是他真的想把STL弄到标准里,他办到了。他象骡子一样固执。甚至逼着我去改STL——我从来都不会为第二个人这么做——我也是个顽固分子。但他是我所认识的最有主见的人,他花了一些时间去理解STL是干啥的,当他理解之后,他决定使其成功地被大家接受。他对STL的贡献还在于他支持“不止一种编程方法是‘合理的’”的观点——这对立于十来年认同“唯一”方法的无休止的争执和夸大——而坚持把弹性、效率、重载、类型安全结合在模板里以致于STL成为可能。我很乐意明白地声明Bjarne是我这一代人里卓越的语言设计家。
     
    问:您是由于什么原因而发明了STL?发明的过程是什么样子的?它对您的生活和研究有什么影响吗?
    Alex: STL的发明源于我多年对程序灵活性和参数化探索的结果。我对此仍不太满意:因为C++语言上的一些缺憾,使得我不能完全表达我要表达的意思。STL应当做将来要设计的库的草稿。我不知道在我有生之年是否能看得到,但我坚信最终会有一个关于算法和数据结构的标准架构,说不定作为读者的你就是这一发明人呢!
     
    我觉得很难形容STL对我生活和研究的影响。STL并未从本质上改变我的生活,因为我没有通过它赚到任何钱。我想向我的几个朋友展示一下正确的编程方法,而 STL正是为他们而做的。事实上将这项工作完成带给我很多快乐,当我听说它帮助某人解决了问题时,我更加快乐。当然也有人说如果让他们设计他们可以设计出更好的东西来,也有人对STL嗤之以鼻。这些攻击也确实伤害到我。
     
    问: 您对面向对象是怎样理解的?它是不是一种好的可接受的编程思考方式?有没有学习OO必须的有用的工具?
    Alex:我尽量避免用OO思考问题,我对他们编程的方法不感冒。在对意大利的一家期刊采访时我曾说过:“我发现 OOP在技朮上是有问题的,它妄图用基于单一类型的不同接口来分解世界,为了处理不同的实际问题,你需要不同种类的代数方法以横跨不同类型的接口族;我发现OOP在思想上是不健全的,它声称一切都是一个对象。即使真的是这样这也没什么意思─说一切都是对象跟什么都没说一样;我发现OOP的方法论是错误的,它从类开始。就好像数学要从公理开始一样。你不是从公理开始─你是从证明开始。直到你找到了一大堆相关证据你才能归纳出公理,以公理结束。编程上存在着同样的事实:你要从有趣的算法开始。只有很好地理解了算法,你才有可能提出合理的接口以让其它组件共同工作。”我再重复强调一点:程序是描述算法和数据结构的,而不是描述继承性和多态性的。
     
    August 12

    旅途中的“逍遥”

    【注】由杭返沪,为了克服旅途的无聊,总会买上一份《南方周末》(呵呵,虽然有人说现在的《南方周末》已经被阉割了,但在车站的报摊上还能指望什么呢?),间或会有一二篇可看的文章。即如本文……
     
    在身体随着D车奔驰的同时,精神则在刘再复的“六经”中“逍遥”……
     
    刘再复:返回古典,就是返回我的六经

    前年秋天,我到台湾中央大学担任驻校学者与客座教授,去年又到台中市东海大学担任讲座教授。此次台湾之行,其因缘首先是正在担任中央大学校长的刘全生教授的邀请。他本是美国马里兰大学的副校长,1996年我到马里兰探望也在该校任教的女儿剑梅时,结识了他,并一见如故。他本是物理学家,可又很有人文理想。谈吐之间,我感受到他那种整个身心拥抱教育事业的赤子之情。他告诉我,美国总统托马斯•杰弗逊临终前嘱咐,倘要铭记他,请在墓碑上写下他是《独立宣言》和《弗吉尼亚宗教自由法》的作者、弗吉尼亚大学之父,不要外加一个字。当然也不要外加“总统”这一至尊名号。这是奠定美国自由思想的天才领袖的价值观,也是刘全生校长的价值观。这很容易融入我的情感深处。于是,我们成了很好的朋友。此次我应邀到他主持的大学,既是遵从友人的召唤,也是遵从内心的命令。
     
    中央大学的工作尚未结束,刘全生校长又把我介绍给东海大学校长程海东。这两位校长精神气质非常相近,而且都是在美国深造自然科学取得成就之后再转向教育,不同之处是程海东教授还是一个虔诚的基督教徒。东海大学有贝聿铭设计的教堂,我在那里听他阐释《圣经》,其声音之纯正让人如闻天乐,一下子就把我在台湾听到的政治噪音全都化解掉了。
     
    全生校长非常谦卑,我到达台湾的那一天,他亲自到桃园机场迎接。一上小车,他就介绍中央大学对故国人文传统极为重视,大学本科一年级的学生都在诵读四书五经。台湾未经历大陆那种横扫一切的“文化大革命”,中国传统的人文香火一直没有熄灭过。校门外虽常有政治喧嚣,校园内还是念念不忘“子曰诗云”。听他这么一说,我立即回应说:中国文化整体,具有两大血脉,如同人体有动、静两脉。一脉重秩序、重人伦、重教化。这是以孔孟为灵魂的四书五经和之后的程朱理学,一直延伸到曾国藩、康有为等;另一脉则重自然、重自由、重个体生命,此脉以老子、庄禅为灵魂,上可追溯《山海经》,下可连接《红楼梦》和五四新文化运动。我到台湾,想多讲第二脉,可给现有的教学内容结构作一平衡和补充。他听了很高兴,说有了另一脉,对中国文化的认识就更为完整了。
     
    中国文化的两大血脉都极为丰富,不管讲哪一脉,都很难在一个学期里讲清楚。所以我早在美国备课时就想好,第二脉就讲“我的六经”。
     
    我不喜欢沿袭他人的习惯性思维,所谓六经,也是我自己的选择与界定。这六经包括《山海经》、《道德经》、《南华经》(庄子)、《六祖坛经》、《金刚经》和我的文化圣经《红楼梦》。六经中,唯《金刚经》属大乘般若体系中的佛典,产生于印度,但因为它早在公元402年便由鸠摩罗什从梵文译为中文,一千六百年来在中国广泛流传,不仅中国化,而且中国心灵化,完全成为中国精神文化系统的一部分血肉。而禅宗伟大的思想家慧能,则因闻他人诵读《金刚经》“应无所住而生其心”而豁然开悟,投奔弘忍后又以《金刚经》为精神基点,把禅的思想推向顶峰,也才有深刻影响中国世道人心的《坛经》。一千多年来,中国的佛教著作虽多,但唯有六祖的《坛经》被尊崇为“经”,于是,抓住《坛经》则抓住构成中国大文化“儒、道、释”三维中的释家一维,倘若再抓住《金刚经》这一经中经和典中典,那就离“佛”很近了。
     
    历来的禅宗研究者,都把慧能视为宗教改革家,而我的朋友高行健,则彻底地把他视为思想家。行健发现慧能创造了一种新的思想可能性,这就是无须逻辑、无须实证、无须分析也有思想的可能性,即通过感悟而抵达真理的可能性。此外,他又发现慧能给中国智者树立一个伟大典范,这就是通过自性的开掘达到把握生命本真当下存在的典范。高行健的戏剧代表作之一《八月雪》,其主人公便是慧能。他是个宗教领袖,但拒绝任何偶像崇拜;他名满天下之后,唐中宗、武则天请他入宫当“大师”,更是拒绝。最后他甚至打碎传宗接代的衣钵。慧能很了不起,他拒绝进入任何政治框架,拒绝参与任何权力游戏。他的清明意识告诉他,一旦进入就会失去人间最为宝贵的思想自由与表达自由。慧能的人格力度,不是表现在“造反”,而是表现在力透金刚的拒绝。《八月雪》表现的正是人如何得大自由、大自在的真理。

    我在课堂上讲《金刚经》、《六祖坛经》,正是把这两者视为个体生命得大自在之经。在我看来,《金刚经》与《坛经》分别完成了两大发现。《金刚经》发现人的身体是人的终极地狱,而《坛经》则发现语言(概念)是人的另一终极地狱。身体产生欲望,有欲望,才有各种烦恼与妄念,才有“我相”、“人相”、“众生相”、“寿者相”等媚俗之相。所谓“空”,就是去掉欲望和它所派生的各种妄念俗相而回到生命的本真状态。对空最大的误解是以为空是空虚,不知“空”恰恰是拒绝妄念遮蔽的内在智慧的充盈。
     
    在此基础上,慧能还发现,人的智慧并非人们熟知的那些概念,其实,许多大概念都是大陷阱,都可能让你产生语障、眼障、心障,让你的慧根善根全然灭绝。“本来无一物”,是说生命本来是没有概念的,有了概念,才有尘埃,才有毒素,才有遮蔽与堵塞。我对同学们说,我和我的同龄人,正是在概念的包围中迷失的一代,整个青年时代全在“继续革命”、“阶级斗争”、“全面专政”的概念地狱中穿行。如果不是经历过这种刻骨铭心的迷失和地狱体验,如果不是尝尽概念的苦果苦汁,就不能理解《坛经》,也不会认识慧能这个主张“不立文字”的天才。
     
    对于《道德经》与《南华经》的理解,其实也是尝尽概念苦汁的心得。台湾的国学家们对老庄两经很有研究,也曾在东海大学任教过的学者徐复观先生,他的名著《中国艺术精神》对庄子的阐释就极为精彩。抓住庄子《逍遥游》中的一个“游”字,把庄子逍遥自在的游世态度说得再明白不过了。人生一世,不过是到人世间游览一回。地球之行,在某种意义上也可以说是“地狱之行”。名利场,权力场,政治较量场,哪样不是地狱?面对地狱,只可游观,不可卷入。徐复观先生自然也有自己的人生遭遇,但就尝尽概念苦果一事而言,其体验未必有我们深刻。也许因为切肤之痛,所以我在《道德经》中就读出一个文眼,一个精神之核,这就是“反”字。“反者,道之动”。反,是一切事物运动的根本规律。“反”字如此重要,那么它是什么意思呢?钱锺书先生在《管锥编》中曾汇集了历来的种种解释。在多重意义中,它的主要意思是“相反相成”的“反”,还是“返回”的“反”呢?
     
    我敢斩钉截铁地回答,是返回的反,是复归的反。《道德经》的主题就是返回,就是复归,复归于朴,复归于婴儿,复归于太极。扬弃人为的东西,返回自然状态,返回赤子状态,返回质朴状态,不仅要返回质朴的生活,而且要返回质朴的内心。对于人来说,最难的是拥有财富、权力、名声之后仍然保持质朴的内心,仍然保持生命之初的那片婴儿的天真天籁。守持生命的本真,这才是诗意的存在。海德格尔晚年那么崇尚老子,就因为老子告诉他,人应当怎样诗意地栖居在人间大地之上。关于如何“诗意栖居”这个大哉问,老子比海德格尔所喜爱的荷尔德林回答得更加清楚,而且早了整整两千年。我真感谢老子,正是这个“返”字,使我找到了生命的大方向。所谓五十而知天命,对我来说,就是知道这个“返”字。所以我把返回童心视为此生此世最大的凯旋。
     
    在返回生命本真的路上,什么是真正的障碍呢?老子和庄子的回答是一样的:障碍就是那些人为制造出来的东西,不仅是技术和技术派生出来的兵器、战车,而且是概念和概念派生出来的巧智、心机和权术。一部《南华经》,说尽了人生的悲剧和历史的悲剧,而悲剧的根本,便是人被人自己制造出来的东西所主宰、所统治、所消灭。“绝圣弃智”的命题与其说是反文明,不如说是反野蛮:反对机器对人的异化,反对在神圣概念掩盖下使用先进武器所进行的血腥战争。反对为“窃钩者诛,窃国者侯”的历史事实所作的一切知识包装和知识面具,反对阻挠人们向生命本真靠近的各种理论和理由。我感谢庄子,想起他的名字,不仅坐卧往来很自然,连颠沛流离也很自然。
     
    台湾的教授与学生,大约没想到我会把《山海经》也列入一经,对《红楼梦》也称为经。《红楼梦》一开篇就讲大荒山,就讲女娲补天的故事,直接连上《山海经》。其实,《山海经》不仅是《红楼梦》的审美原型,而且给庄子、楚辞等许多中国文学典籍也都提供了审美原型。《山海经》是神话,不是历史,但它却是中国最本真的精神历史和最本真的精神文化。与希腊、希伯来的神话相比,《山海经》显得单薄,然而中国的原始神话虽少,却很有力度。女娲补天,精卫填海,夸父逐日、刑天舞干戚,这些失败的英雄全都力透乾坤。所以,它既是审美原型,又是中华民族的精神原动力。中华民族历经无数苦难,为什么不会灭亡?关于这个问题,钱穆等历史学家做了许多精深的研究,但都没有揭示出一个原始原因,这就是中华民族在它的童年时代就有一种伟大精神:知其不可为而为之的精神。补天、填海、逐日,都是不可能的,但是正是把不可能化为可能的不屈不挠的精神,使中华民族从未被艰难困苦的命运所击倒,数千年来终于不依仗上帝的肩膀而靠自己的肩膀扛住黑暗的闸门和挑起历史的重担,一直走到被称为21世纪的今天。
     
    我曾说过,没有禅宗,就没有《红楼梦》,其实,没有《山海经》,也不会有《红楼梦》,至少不会有《红楼梦》的连接鸿濛之初的恢宏与苍茫,也不会有那一块多余石头的奇丽想象。我把《红楼梦》当作文学圣经,一是因为它是中国文学与人类文学的经典极品,是与《荷马史诗》、但丁《神曲》、莎士比亚《哈姆雷特》、托尔斯泰《战争与和平》、陀斯妥耶夫斯基《卡拉玛佐夫兄弟》同一级的反映人类精神水准的坐标。二是因为它的情节大框架与《圣经》同构。其主人公贾宝玉林黛玉来到人间之前也有一个伊甸园时期,他俩就是中国的亚当与夏娃,不过,曹雪芹赋予他们更富文采的名字,叫做神瑛侍者与绛珠仙草。伊甸园的上方也有一个造人的创世纪之神,不过,她不叫上帝,而叫做女娲。更为重要的是,《红楼梦》中也有一个基督,只是尚未成道。这个准基督就是贾宝玉。他爱一切人、宽恕一切人。他疏远一些人只是出自本能,而非仇恨。他是一个没有敌人、没有偏见,没有妄念,没有功名心、报复心、机谋心的特异生命,换句话说,在他身上没有常人的嫉妒、贪婪、猜疑、算计等生命机能。探春称他为“卤人”,其“愚鲁”就在于缺少这些机能。
     
    巨著中的诗意生命,除了宝玉之外,还有黛玉等一群站立于泥浊世界彼岸的青春少女。曹雪芹发现了青春少女的绝对价值,塑造了一群具有高度生命质量的“女儿”形象。西方《圣经》的主角基督的十二门徒全是男性,《红楼梦》这一文学圣经的主角周围则是布满青春气息的“十二钗”,全是女性,清一色的女性。曹雪芹在自己的伟大作品中,惟一牵挂的就是这些女子的生命。在曹雪芹的审美眼睛里,所谓美,就是青春生命。《红楼梦》是人类有史以来最伟大的青春生命的颂歌与挽歌。它不仅具有说不尽的文学内涵,而且具有说不尽的哲学内涵。它太特别了,它既吸收了庄、禅甚至儒的哲学精萃,又完全超越了各家哲学的局限,它大于儒、大于道、大于释,它高于道德、高于政治、高于种种理念,从而获得宇宙般的没有时空边线的大境界。它有宗教般的恢宏与境界,有信仰,但不是宗教。它信仰的是美,是人之美与情之美,是青春生命和诗意情感之美。曹雪芹是自古到今中国文明史上第一个以审美代宗教的伟大发明者,他的卓绝千古的文学实践导致了蔡元培提出“以美育代宗教”的理念。有《红楼梦》作参照系,一切文学作品的高低深浅,都可以看得清清楚楚。这样的伟大作品,不是文学圣经是什么?我一直庆幸自己出生在《红楼梦》之后,倘若在这之前,人生没有贾宝玉、林黛玉、晴雯、鸳鸯等相伴,日子该多乏味。
     
    在课堂里讨论时,我对同学说,你们熟读四书五经,再加上这六经,灵魂就有了张力场,不仅生命会更为完整,而且想什么、写什么都会深一些。在《红楼梦》里,薛宝钗投射的是四书五经文化,林黛玉投射的是“我的六经”文化,两者都有充分理由。林、薛之争可视为曹雪芹灵魂的悖论。说“钗黛分殊”是对的,说“钗黛合一”也没有错,只是曹雪芹心灵的天平更向黛玉一边倾斜而已。就个人而言,我更是倾心于绛珠仙子,拒绝向薛宝钗靠近。
     
    我把出国前界定为第一人生,出国后界定为第二人生。于是,常与朋友开玩笑说,第一人生中我天天读“老三篇”(毛泽东的《愚公移山》、《为人民服务》、《纪念白求恩》),第二人生则天天读“老三经”(指《山海经》、《道德经》、《六祖坛经》),甚至老六经。由于天天读,这六经便融入自己的身心,整个生命感觉便全然不同了,连吃饭睡觉的感觉也不同了。时至今日,我与六经仿佛已是血肉一体,真分不清是我注六经还是六经注我,正如分不清是庄周梦蝴蝶还是蝴蝶梦庄周。此时我着笔说六经,是我注六经,而放下笔,无论是衣食住行,还是读书思想,又觉得六经注我。王夫之说“六经责我开生面”,我也常有此种感觉。重自然、重自由、重个体生命的六经,只进入心灵深处,就感到解脱,感到新的活力又如黎明升起。很奇怪,离故国的土地愈远,愈觉得故国古典文化的魅力。西方文化确有它的长处,尤其是它的逻辑文化与理性文化。其逻辑文化发展到极致,便产生电脑所负载的程序文化,从而给人类世界又开辟另一番天地。但是,人毕竟是人,人需要听程序的指令,更要听从内心的绝对命令。因此,程序文化还需要感悟文化的补充与平衡。我相信将有更多的西方智者会像海德格尔那样倾心于中国文化中的大智慧。
     
    近几年,我与李泽厚先生常常一起呼唤“返回古典”,这一古典主要是指故国的古代人文经典。不过,他落脚的重心,第一是孔子,第二才是庄子,而我则是先返回“六经”,再参照四书五经,换句话说,厚重“六经”,不薄五经,并努力打通中西文化血脉,这便是我今天的精神之路。
     
    August 08

    巨人何以成为巨人?

    【注】朋友推荐摩罗的《耻辱者手记》,惭愧的是书和作者一样陌生!Google一下,才发现是内蒙古人民出版社1998年出版,想来书是不容易找了。只找到其中一篇文字,帖在这里,以作记录。

    不管是俄罗斯,还是中国,文中讲述的几个小故事几乎都是我所不知道的,汗!

    忙中偷闲于杭州下沙

    巨人何以成为巨人——读赫尔岑《往事与随想》第一册

      在俄罗斯历史上,赫尔岑属于影响了一个时代的巨人。他的思想和血性直接来源于十二月党人。沙皇当局绞死十二月党人五位领袖时,赫尔岑只是一个十几岁的少年,可他像当时最有良知的知识分子一样,感到了最深切的耻辱、仇恨和痛苦。执行死刑后,当局在莫斯科克里姆林宫举行了一次盛大的祈祷式,以示庆祝。三十年后,赫尔岑写道:“我参加了祷告式,我当时只有14岁,隐没在人丛中,就在那里,在那个被血淋淋的仪式玷污了的圣坛前面,我发誓要替那些被处死刑的人报仇,要跟这个皇位、跟这个圣坛、跟这些大炮战斗到底。”少年赫尔岑的整个精神生活几乎完全被这个重大事件所占领,内心时刻不停地激荡着为光明和正义而奋斗的伟大冲动。一个少年难以长期独自品味这样大的冲动和梦想,他必须把它说出去,必须以某种方式与这个世界发生联系并得到反应和验证。他郑重地向他的老师倾诉了他的感情和决心。这位老师平时总是训斥赫尔岑说:“您不会有出息的。”可当他了解到赫尔岑的精神世界后,禁不住说:“我的确以为您不会有出息,不过您那高尚的感情会挽救您。但愿这些感情在您身上成熟并且巩固下来。”这位不苟言笑的老师还以激动的拥抱将他的革命热情和自由主义信念传导给这位十四岁的贵族少年。

      这段故事,是赫尔岑《往事与随想》中最吸引我的一节,但每次读后,我都禁不住有点后怕。倘使这位老师是个怯弱而又世故的人,他对赫尔岑的倾诉不予理睬;倘使他是一个愚昧而又迂腐的人,按着官方立场来解说那场起义和镇压,用官方意识对赫尔岑的高贵激情给予挫伤和清洗,那么,还会有后来的赫尔岑吗?倘若雷列耶夫、别林斯基、车尔尼雪夫斯基、米海依洛夫斯基、涅恰耶夫、托尔斯泰、巴枯宁、克鲁泡特金、陀思妥耶夫斯基、普列汉诺夫等人在其成长道路上不曾得到这样的鼓励和支持,他们作为革命家和文化英雄的形象还能站立得起来吗?而没有这些人的挺立和闪耀,俄罗斯的十九世纪究竟还有多少光彩可言呢?赫尔岑的这个故事,让人不能不对领袖与人民的关系有所领悟。领袖不只是代表人民,而且的的确确是由人民培养出来的.有什么样的人民就会有什么样的领袖,从而也就有什么样的民族和社会。在这个意义上,被赫尔岑称为“老布肖”的那位目睹过法国大革命的老师不仅造就了赫尔岑,还造就了俄罗斯。十九世纪的俄罗斯之所以那样奇光异彩,令人景仰,其决定因素究竟是什么?我们平时总是将注意力集中在上文所列的那些显赫人物身上,但是在读《往事与随想》的时候,我的目光不知不觉中就投向了那些普通人,那些从来不被看作英雄的、既无人为之建造铜像、也无人为之开设纪念馆的普通人身上。

      亚历山大一世时期,艺术院长以阿拉克切夫伯爵离皇上最近为由,提名他作名誉院士,艺术院秘书反驳说:“要是这个理由站得住的话,我就推荐马车夫伊里亚·巴依科夫为院士,他不单离皇上最近,还总是坐在皇上前面。”拉勃津秘书虽因此遭到流放,却捍卫了艺术的尊严和自己的良心。亚历山大一世的弟弟尼古拉(后继位为皇帝,正是他绞杀了十二月党人 5位领袖)有一次想来点粗鲁行为显显威风,要抓一位禁卫军军官的衣领,军官沙莫依洛夫伯爵威严地说:“殿下,我的佩刀在手里呢!”一语将尼古拉击退。莫斯科要塞司令斯塔阿尔将军受命主审赫尔岑等人一案,他在审读案卷后这样向皇上直陈己见:这些青年人是清白无罪的,侦讯委员会所做的事情是极不光彩的,我不能为此违背自己的良心,玷污自己的满头白发。他愤然退出侦讯委员会,事后还一直为这群青年人的厄运耿耿于怀,上书尼古拉要求释放他们。试想,如果换成另一个民族的将军或坦克手,情形将会怎样呢?而如果失去了赫尔岑,正如我们所知道的,俄罗斯革命史和俄罗斯思想史都将是断裂而又残缺的。看一下沙皇枢密院总检查官祖布科夫的书房也许是十分有意思的。赫尔岑写道:“他的书房里挂满了所有革命名人的肖像,从汉普登和伯伊到菲艾斯基和阿尔芒·卡列尔。在这个革命圣像壁下方有一个完备的禁书库。一具骷髅、几只鸟标本、几只制作过的两栖动物和若干保存在酒精里的动物内脏——它们给这间气氛非常热烈的书房加上一种思考和研究的色彩."这位大臣的书房所表现出的现代气息和人文气息,与《祝福》里鲁四老爷的书房实在大异其趣。

      在《萨哈林旅行记》中,契诃夫这样描绘这个流放之岛和监狱之岛的岛区长官科诺诺维奇将军:“谈吐高雅,文笔优美,给人的印象是一位诚挚的、充满人道精神的人。”一位少校典狱长冒着生命危险,从傍晚到凌晨两点一直巡游海上寻救一位被波浪卷入大海的苦役犯的故事,契诃夫记述得更加详备.上述这些人,无论是艺术院秘书还是禁卫军军官,无论是要塞司令、岛区长官、典狱长,还是总检查官,他们无不表现出强烈的尊严意识和人道主义倾向。他们即使身居要职也改变不了沙皇政权的专制体制和非人性质。但他们以自己良好的人文素质和历史良知,在国家机器与历史要求、民族利益、革命思想之间构成了一种弹性,正是这弹性使得新思想新力量不但未遭毁灭,反而勃然发展。这些官员作为人民的一部分,实际上可以看作是反对他们的那些思想家革命家的精神资源和社会基础,即使是亚历山大一世这样的沙皇,面对着日趋强盛的革命团体和思潮,也一直在观望和思索,而不让他的僚属举起屠刀,他表现出强烈的历史良知。在处死普加乔夫之后,俄国实际上废除死刑达50年之久,这为培养人道主义精神和生命意识开辟了一片政治空间。可以说,俄罗斯思想家革命家只是把深蕴在人民心中的心理倾向明白地表述出来并担当起来。他们在政治上是沙皇和将军和大臣的敌人,但在人文素质和人道倾向上,敌对的双方却是颇为相近的。

      十二月党人起义被镇压以后,俄罗斯社会一度出现了严重的政治黑暗和道德堕落。可是这个民族对于正义事业的崇仰和对于英雄人物的热爱还是以某种方式表达了出来。赫尔岑带着深深的敬意写道:“那些给判处苦役的流放人的妻子被剥夺了一切公民权利,抛弃了财富和社会地位,动身到西伯利亚东部去,一辈子忍受那里可怕的气候,和当地警察的更加可怕的压迫。姐妹们没有权利到她们的哥哥或者兄弟那里去,她们就退出宫廷,过着隐居生活,许多人离开了俄国;几乎所有妇女的心里都保留着对那些受害者的热爱……”特鲁别茨卡雅公爵夫人第一个动身去西伯利亚,追随着她的英雄丈夫并死在那里。法国姑娘唐狄在巴黎得悉昔日情人伊瓦谢夫被判流放西伯利亚,立即来俄国要求去西伯利亚与情人结婚.尼古拉一世虽甚感恼怒,终于还是同意了她的请求。这对年轻的情侣后来双双死在苦难深重的西伯利亚。赫尔岑的记述使我想起后来车尔尼雪夫斯基的两件事。在给车尔尼雪夫斯基执行象征性死刑的刑场边上,一位少女把一束鲜花递给了这位囚徒。在随后奔赴西伯利亚的途中,一位马车夫用这样的话跟车尔尼雪夫斯基告别:“谁拥护人民,他就被流放到西伯利亚去,这一点我们早就知道。”俄国革命家能在流血牺牲的同时享受到如此伟大的幸福,真叫人妒羡不已。这些精神巨人最需要的并不是世俗的功德圆满,而恰是这种被理解,这种在精神上与世界的联系和沟通。他们因为有了这样的人民而伟大,也因为有着这样的人民而幸福.

      而在另一个民族,情形则远不是这样。像邹容、陈天华、秋瑾、徐锡麟这样的人,既没有赫尔岑那样丰厚的精神资源,更没有特鲁别茨卡雅公爵和车尔尼雪夫斯基式的安慰和幸福。他们永远遇不到老布肖那样的老师、要塞司令那样的办案者、少校典狱长那样的官员、特鲁别茨卡雅夫人那样的家属、马车夫那样的老百姓等。秋瑾的叔父就是她的告密者,她死后不但没有得到鲜花,而且被老百姓吃了她的鲜血,徐锡麟更是给办案者分吃了心肝。1978年,当李九莲那颗决不放弃思考的头颅倒在血泊中时,她的同时代人都在准备着高考,甚至没有一个人听见枪声。在她漫长的囚徒生涯中,家里没有一个人来看过她一次,没有一个人送过一次饭、一次衣。而她的厄运最初的起因,竟是她的男朋友的出卖。在中国绵延不绝的政治运动中,互相揭发、互相诬陷、卖友求荣、卖亲求荣的现象是如此普遍。一个人只要受到权力的敌视或迫害,几乎马上就要从社会结构和伦理关系中开除出去,谁也不敢拜访你,谁也不敢跟你打招呼跟你握手跟你聊天,谁也不敢给你写信,谁也不敢喊你为老师为同志为父亲为叔叔。虽然还有人谈到你,但那是按着官方口径进行诬陷和诽谤,也许还有人来敲门,但那是为了宣布跟你划清界线。难怪鲁迅吞吞吐吐地说,他没敢说出全部的真话,因为他还要在这社会中居住。他不敢真的被这社会和伦常所开除。鲁迅绝非多虑。一位因在庐山讲了几句大白话而丢官的政治人物,很快就被自己的妻子从家里开除了出去。在中国想做一条好汉,确实比别国更难。鲁迅曾感叹中国的监狱比别国的难坐,实际上何止如此。对于一位优秀人物来说,中国生活的千万个环节中,每个环节都杀机四伏。中国社会对于优秀人物怀着本能的仇恨和恐惧.顾准的遭遇很能说明问题.顾准受到迫害后,他的妻子绝望地自杀了。子女宣布与他断绝亲缘关系,还逼着顾准签字同意。他的老母亲住在妹妹家里,可因为妹婿是官场中人,为了照顾官员的前途,这对同住一城近在咫尺的母子终生不得相见。顾准拖着病体,蜷曲在孤室寒窗之中,形单影只地写着那些先知般的文字.他一再要求与子女恢复关系,均遭拒绝。他只能从别人那里收集子女的照片,以此寄托他的慈父之情。他临终的时候,又一次吁请子女“宽恕”他(倒好像他真有什么罪过似的)并来看看他,自然是又一次遭到拒绝。无休的政治迫害,无穷的精神凌辱,无限的感情折磨,这就是一个文化英雄的境遇和结局。如果他的母亲来给予抚慰,妻子来给予照顾,兄弟姐妹们来给予帮助;如果他的子女来为他骄傲,他的朋友来与他切磋,我相信这个顾准一定可以写出更加坚定、彻底的文字,也许当我们回顾“文革”时,就可以因为有了一位精神巨人和文化英雄而感到骄傲和安慰。然而,顾准终于没有得到这样的幸运,这个民族终于没有得到这样的幸运,因为这个民族像他的子女一样,一直在遗弃着他、拒绝着他。直到他逝世20年之后,《顾准文集》才在中国一个最偏僻的角落里勉勉强强问世。

      我们平时谈论那些优秀人物时,常说他们“孤胆”、“孤勇”、“仅仅凭着个人就敢于与整个世界对抗”,其实这都是片面而又夸张的说法。优秀人物自己也爱作如是说,那更是饱含愤激之情了。有恃才能无恐,谁能够在精神上无所凭依就自然地强大起来呢?越是精神强大的人,越是需要拥有最丰厚的精神资源。一个巨人不但需要通过研读典籍占有历代前贤的精神财富,不但需要通过研究人性和社会来把握人性的需要和历史的走向,他还同时需要周围那些有血有肉的人的理解、支持、温暖、尊敬、鼓励,他需要从这样的心灵交流中得到勇气和力量.如果没有这些条件,再伟大的人也会枯竭夭亡而无从成其伟大.在这样的意义上,任何一个伟大的人都是凭着他的族群并代表他的族群成为伟人的。所以,那些产生了巨人的民族必是像巨人一样可敬可仰的民族。

      1827年的某个黄昏,15岁的少年赫尔岑和他的朋友奥加略夫郊游来到了莫斯科旁的麻雀山上。太阳正在徐徐西沉,圆屋顶闪闪发光,美丽的莫斯科铺展在山下一望无际的地面上,清新的微风迎面吹来,诗意盎然。这对少年想到了全人类的命运和幸福,想到了俄罗斯的现状与未来。他们意识到了自己的灵魂的纯洁与高尚,意识到了自己是命中注定应该担当大任的优秀人物。他们站在夕阳微风之中,互相依靠,突然间热烈地拥抱起来,他们对着伟大的莫斯科发誓,一定要为自己的使命奋斗到底,直至献出生命。在后来的岁月中,俄罗斯人民果然将赫尔岑造就成了一代巨人。这位巨人的力量,正如我们所已经知道的,不仅来自十二月党人的鲜血和老布肖的祝福,也来自要塞司令斯塔阿尔将军的理性与公正,还来自追随丈夫流放到西伯利亚去的妇女们和对革命家表示尊敬的马车夫们,甚至还来自亚历山大一世对起义前的十二月党人的理解、宽容与尊重。一句话,他的力量来自全体人民的人文理想和整个民族的历史良知。中国的优秀人物却不曾得到赫尔岑式的条件和幸运,无论是谭嗣同、陈天华、秋瑾、徐锡麟,还是李九莲、遇罗克、王申酉、顾准,他们无不在缺乏精神滋养和力量源泉的绝境中无望地死去。中国要想诞生真正的精神巨人,遥矣远矣。

    P.S.

    《耻辱者手记》找到了,读过,却没有当初期待时的心情,或者说,有点失望。整本书,还是这篇文章写得最好,所以,有这一篇也就够了。

    正在忙中偷闲地读赫尔岑,以前对这些大部头的经典总是望而却步……