2008年10月29日星期三

lex and yacc

section of lex
1 lex程序中,位于%{ %}符号之间的内容会被拷贝到生成的c语言文件中。
2 %%用来标记一个部分的结束。
3 第二部分通常是正则表达式,{}之间的内容是一旦yytext与表达式匹配,会发生的动作(实际上也是C程序)。
4 第三部分实际上也是一段C程序,通常会直接被拷贝到编译所得的lex.yy.c,主函数通常都在这一部分,主函数中需要调用yylex()函数,yyin也在这里指定。
5 调用yylex()达到输入文件的尾端时,将调用yywrap(),该函数返回1时表示程序完成没有后续输入,如果返回0,则yylex继续读取yyin。
6 atoi是用来读取字符的,atof是用来读取数字的。
7 %option
8 yyless()的作用
9 yylval在y.tab.c中被定义为YYSTYPE类型(实际上是在*.y文件头部定义的共用体或者结构体,编译后会出现在y.tab.h中)
section of yacc
1 yacc拥有与lex相似的语法规则。
2 在yacc的主函数中,需要调用yyparse(),来处理语法解析,如果语法解析有误则通过yyerror来返回错误,yyin则是其标准输入。
3 yacc的标记定义段和规则定义段是从下向上解析
4 %left是左结合,%right是右结合,%nonassoc用于声明非结合操作符,UMINUS是代表一元减号的伪标记,%prec是什么意思
5 在以下两种情况中使用优先级:在表达式语法中或者解决虚挂的else冲突

2008年10月28日星期二

小试ORACLE JDEVELOPER 11G

昨天下载了正式版的JDEV 11G,晚上忍不住兴奋,小试了一下,感觉比技术预览版的变化还是很大的(我下载了base版的,同时在windows和linux平台上试用了一下)。最大的区别在于以前JDEV内置了OC4J,都是使用OC4J来做默认的应用服务器,但是现在是试用weblogic server10.3,安装JDEV的时候会默认安装WEBLOGIC。感觉虽然WEBLOGIC做得很庞大,但是启动速度一点不比OC4J慢。看来以后ORACLE应该还是会走WEBLOGIC+JDEV的路线,而WORKSHOP和OAS肯能会逐渐被边缘化。

功能上跟技术预览版差不多,只是运行起来更稳定,消耗的内存更少。新版的JDEV集成了SPRING和STRUTS,ORACLE ADF,ORACLE TOPLINK(部署的时候可以更换成ECLIPSELINK,以前的版本与HIBERNATE冲突),对JSF的支持很好,并且集成了最新版的SQL DEV,自己觉得如果是做基于ORACLE的应用程序的话,那么JDEV是一个值得尝试的工具。

ORA-12705错误

ORA-12705: "invalid or unknown NLS parameter value specified"

Cause: There are two possible causes:

- An attempt was made to issue an ALTER SESSION statement with an invalid NLS parameter or value.

- The NLS_LANG environment variable contains an invalid language, territory, or character set. (大部分人碰到的是这种情况)

Action: Check the syntax of the ALTER SESSION command and the NLS parameter, correct the syntax and retry the statement, or specify correct values in the NLS_LANG environment variable.

以下是metalink给出的碰见下列情况就有可能会报这个错误:
1. ORA-12705 with incorrect NLS_LANG parameter
2. ORA-12705 with incorrectly specified ORA_NLSx
3. ORA-12705 from incorrect Oracle install or configuration
4. ORA-12705 when using Special Character sets
5. ORA-12705 when connecting with SQL*Net
6. ORA-12705 during migrations
7. ORA-12705 when connecting with SQL*Plus
8. ORA-12705 when connecting with language pre-compilers
9. ORA-12705 during Export/Import

通常情况的解决办法(检查并修改NLS_LANG,NLSPATH,LANG):
unix下(也包括linux):
NLS_LANG=american_america.we8iso8859p1
export NLS_LANG

NLSPATH=NLSPATH=$NLSPATH:/usr/xxx
export NLSPATH

LANG=en_US
export LANG

如果是windows平台下则需要修改注册表:\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,修改相应的参数即可。
也可以使用如下命令:C:>set NLS_LANG=

如果是.net连接ORACLE报这个错误,请看这篇文章。如果是在ECLIPSE平台的DATA EXPLORER里连接ORACLE数据库报这个错误,则需要检查相应的配置文件eclipse.ini,将Duser.language设置为合适的值。

关于oracle字符集的问题

Oracle 建库时,有三个中文字符集供选择,通常选择ZHS16CGB231280,因为经过测试得知,常见的“朱镕基的镕”“~”等字符只有在这个字符集下才能正常储存。

为什么说“通常”,因为三个字符集都不大完整(???),都有各自保存不了的汉字,用户只能根据自身需要进行试验和调整了。

仅Oracle数据库设置字符集还不够,如果用户在客户端用SQLPlus连接数据库,则需要设置客户端的环境变量,否则汉字也无法完全正常显示。

增加系统环境变量

NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280

设置方法:控制面板->系统->高级->环境变量->系统变量->增加

如果用户有需要用到ODBC(如开发网站、应用程序等),系统有提供两个Oracle的ODBC驱动,一个是微软的,一个是Oracle公司的。

在这必须使用微软提供的ODBC for Oracle驱动,否则一样会出现部分汉字无法正常显示、储存的问题。

Oracle字符集问题总结
一、什么是oracle字符集
  Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。

  影响oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下:

  NLS_LANG = language_territory.charset

  它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:

  Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK

  从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。

  二、如何查询Oracle的字符集

  很多人都碰到过因为字符集不同而使数据导入失败的情况。这涉及三方面的字符集,一是oracel server端的字符集,二是oracle client端的字符集;三是dmp文件的字符集。在做数据导入的时候,需要这三个字符集都一致才能正确导入。

  1、查询oracle server端的字符集

  有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以下这种:SQL>select userenv(‘language’) from dual;

  结果类似如下:AMERICAN _ AMERICA. ZHS16GBK

  2、如何查询dmp文件的字符集

  用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:

  SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;

  ZHS16GBK

  如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上):

  cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6

  然后用上述SQL也可以得到它对应的字符集。

  3、查询oracle client端的字符集

  这个比较简单。在windows平台下,就是注册表里面相应OracleHome的NLS_LANG。还可以在dos窗口里面自己设置,比如:

  set nls_lang=AMERICAN_AMERICA.ZHS16GBK

  这样就只影响这个窗口里面的环境变量。

  在unix平台下,就是环境变量NLS_LANG。

  $echo $NLS_LANG

  AMERICAN_AMERICA.ZHS16GBK

  如果检查的结果发现server端与client端字符集不一致,请统一修改为同server端相同的字符集。(也不建议使用,有可能会导致ORA-12705错误。)

  三、修改oracle的字符集

  上文说过,oracle的字符集有互相的包容关系。如us7ascii就是zhs16gbk的子集,从us7ascii到zhs16gbk不会有数据解释上的问题,不会有数据丢失。在所有的字符集中utf8应该是最大,因为它基于unicode,双字节保存字符(也因此在存储空间上占用更多)。

  一旦数据库创建后,数据库的字符集理论上讲是不能改变的。因此,在设计和安装之初考虑使用哪一种字符集十分重要。根据Oracle的官方说明,字符集的转换是从子集到超集受支持,反之不行。如果两种字符集之间根本没有子集和超集的关系,那么字符集的转换是不受oracle支持的。对数据库server而言,错误的修改字符集将会导致很多不可测的后果,可能会严重影响数据库的正常运行,所以在修改之前一定要确认两种字符集是否存在子集和超集的关系。一般来说,除非万不得已,我们不建议修改oracle数据库server端的字符集。特别说明,我们最常用的两种字符集ZHS16GBK和 ZHS16CGB231280之间不存在子集和超集关系,因此理论上讲这两种字符集之间的相互转换不受支持。

  1、修改server端字符集(不建议使用)

  在oracle 8之前,可以用直接修改数据字典表props$来改变数据库的字符集。但oracle8之后,至少有三张系统表记录了数据库字符集的信息,只改props$表并不完全,可能引起严重的后果。正确的修改方法如下:

  $sqlplus /nolog

  SQL>conn / as sysdba;

  若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器,然后执行以下命令:

  SQL>STARTUP MOUNT;

  SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;

  SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

  SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;

  SQL>ALTER DATABASE OPEN;

  SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;

  SQL>ALTER DATABASE national CHARACTER SET ZHS16GBK;

  SQL>SHUTDOWN IMMEDIATE;

  SQL>STARTUP

  2、修改dmp文件字符集

  上文说过,dmp文件的第2第3字节记录了字符集信息,因此直接修改dmp文件的第2第3字节的内容就可以‘骗’过oracle的检查。这样做理论上也仅是从子集到超集可以修改,但很多情况下在没有子集和超集关系的情况下也可以修改,我们常用的一些字符集,如 US7ASCII,WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK基本都可以改。因为改的只是dmp文件,所以影响不大。

  具体的修改方法比较多,最简单的就是直接用UltraEdit修改dmp文件的第2和第3个字节。比如想将dmp文件的字符集改为ZHS16GBK,可以用以下SQL查出该种字符集对应的16进制代码:

  SQL> select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from dual;

  0354

  然后将dmp文件的2、3字节修改为0354即可。

  如果dmp文件很大,用ue无法打开,就需要用程序的方法了。网上有人用java存储过程写了转换的程序(用java存储过程的好处是通用性教好,缺点是比较麻烦)。我在windows下测试通过。但要求oracle数据库一定要安装JVM选项。有兴趣的朋友可以研究一下程序代码。

SELECT Z.* FROM T_EQUIPSPEC Z,T_EQUIPPRICE A,T_PROJECTINFO B,T_FACTORYSINFO C WHERE Z.SPECCODE = A.SPECCODE AND A.AUDITFLAG = 2 AND Z.AUDITFLAG = 2

2008年10月26日星期日

诡异的ORA-12638错误

今天碰见了这个错误:
ORA-12638: Credential retrieval failed
查了一下OTN:
Cause: The authentication service failed to retrieve the credentials of a user.
Action: Enable tracing to determine the exact error.
这里有一个帖子专门讨论这个问题。

碰见这个问题可以先试着重启数据库服务,如果还是不行的话,则可以检查sqlnet.ora文件,将
SQLNET.AUTHENTICATION_SERVICES= (NTS)
改为:
SQLNET.AUTHENTICATION_SERVICES= (NONE)
然后再重启监听器应该就可以了。

sqlplus登陆ORACLE的方式解析

This article describes the different ways you can connect to Oracle as an administrative
user. It describes the options available to connect as SYSDBA or SYSOPER.

Oracle 8.1 was the last release to support the 'CONNECT INTERNAL' syntax :
therefore you must use SYSDBA or SYSOPER privileges in current releases.

1) Administrative Users
~~~~~~~~~~~~~~~~~~~~~~~
There are two main administrative privileges in Oracle: SYSOPER and SYSDBA
These are special privileges as they allow access to a database instance even
when it is not running and so control of these privileges is totally outside of
the database itself.

SYSOPER privilege allows operations such as:
Instance startup, mount & database open ;
Instance shutdown, dismount & database close ;
Alter database BACKUP, ARCHIVE LOG, and RECOVER.
This privilege allows the user to perform basic operational tasks without the ability to look at user data.

SYSDBA privilege includes all SYSOPER privileges plus full system privileges
(with the ADMIN option), plus 'CREATE DATABASE' etc..
This is effectively the same set of privileges available when previously
connected INTERNAL.


2) Password or Operating System Authentication
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Password Authentication
~~~~~~~~~~~~~~~~~~~~~~~
Unless a connection to the instance is considered 'secure' then you MUST use a
password to connect with SYSDBA or SYSOPER privilege.
Users can be added to a special 'password' file using either the 'ORAPWD'
utility, or 'GRANT SYSDBA to USER' command.
Such a user can then connect to the instance for administrative purposes using
the syntax:

CONNECT username/password AS SYSDBA
or
CONNECT username/password AS SYSOPER

Remote connections require the database to be configured to allow remote DBA
operations. The remote user will have to supply a password in order to connect
as either SYSDBA or SYSOPER. The only real exception to this is on MS Windows
where remote connections may be secure.


To allow remote administrative connections you must:

- Set up a password file for the database on the server
- Set up any relevant init.ora parameters

Operating System Authentication
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If the connection to the instance is local or 'secure' then it is possible to
use the operating system to determine if a user is allowed SYSDBA or SYSOPER
access.
In this case no password is required.
The syntax to connect using operating system authentication is:

CONNECT / AS SYSDBA
or
CONNECT / AS SYSOPER

2008年10月20日星期一

韩国怎么了? 韩国要面对的流氓聚多的国家

原文请看这里



很久以前写的文章,感觉写得很恶心。呵呵 更新而已



在网上突然看到了一个很让我失望的调查,有中国官方背景的杂志在网上进行了问卷调查,调查中国人不喜欢国家的排名,第一是韩国,第二是日本,第三是印尼。初看这个调查我没有感到震惊,因为随着两个国家交流的增加难免会出现摩擦。但是看完了网上的报道,我感到非常恶心的是中国人说出的几个不喜欢韩国的理由竟然是疯狗,脑子不好的几个中国人编造出来的谎言,中国的脆弱爱国主义再次的散发出它的恶臭了,真他娘的臭啊~!!


举例子 一

很多中国人憎恨韩国人的原因之一是 流传甚广的端午节被韩国人国际哪个组织上先被注册了。


很多脑子不好的中国人说韩国人把中国文化传统给偷走了,并且冠以变态民族,恶心的民族,或者乱七八糟的中国式污蔑。


如果有点独立思考能力,并且有点对一件事物的怀疑精神的话,人们应该多去维基百科,或者去Google去查一下,韩国的的江陵端午祭是庆祝丰收,朝鲜舞蹈,面具雕刻等等,跟中国的赛龙舟,吃粽子,纪念屈原都是两码事,唯一的共同点是,庆祝的日期是一样的,都是在农历的同一天。


10月1日是共强盗们规定的国庆日,但是又是哥斯达黎加的国难日,人家哥斯达黎加也没有像中国一样那么脆弱,要求中国跟着哥斯达黎加一样举国哀痛,换了韩国,脆弱的中国人就坐不住了,妈的,那些脑残中国人到底怎么了?


举例子 二

韩国人把中国古代发明的几乎所有的发明全部给说成韩国发明的了。

印刷术:谁他妈的不承认中国发明了印刷术了?那些整天用有事不说事的疯狗们有没有去韩国人的网站看看,人家到底说了什么?反正我在韩国网站上看到的信息是,古朝鲜根据古代中国的先进技术,进行了小小的改进,把那些刻着字的木块换成金属,更久的保存和使用。真他娘的脆弱。

举例子 三


孔子,屈原等中国的名人全部变成韩国人。

真不详继续敲键盘骂那些脆弱的中国人,妈的! 哪个官方网站,电视台,报纸明确的说这些人是韩国人了?忍辱负重去了百度查了查,一看有2,200,000片文章,95%都是骂韩国人抢走中国的孔子,而且如果不出什么意外的话,没有一篇文章是官方消息。

和韩国同学接触的时候我顺便问了一下他们知不知道中国现在有很高的反韩情绪,他们瞪着天真的眼睛不解。呵呵,原来疯狗性的网民自己在意淫啊,哈哈,让它们在狭隘的民族主义泥潭里面挣扎吧,看他们傻逼下去,其实很好看的。

而且我听瞧不起那些崇拜孔子的行为,孔子那小子不是什么圣人,而是会拍皇帝马屁的小人物。

还有,中国人大义凌然的把成吉思汗,忽必烈等蒙古族的英雄说成中国人,妈的,你他妈的想没想过蒙古人的感情?

举例子 四


地震的时候韩国网民说风凉话,我操,我也看过说风凉话的帖子,但是懂得一点点韩语的人都知道在帖子下面的留言几乎都是骂写帖子的人的留言,当然了,人家是自由的国家,不会随随便便的和谐帖子。韩国不像某些国家....^_^

再唠叨两句,如果去中国的门户网站看看的话,韩国崇文门烧掉的跟帖上99%都是畜生们的留言。按照我个人的想法,中国想成为一个大国,要走很长的路。

notes:其实我觉得反韩情绪是媒体炒作出来的。现在中美关系一片大好,中俄中日关系欣欣向荣,当然都不能说。于是我们的媒体就拿英国,法国,德国,韩国这些国家说事,特别是在我们大部分脑残没有能力读懂外国人写的东西的情况下。我们的政府总是把矛头对外。

加速yum

引自shunz,原文请看这里

用yum更新系统是一件很痛苦的事情,缓慢的进度都让你想把鼠标扔出去。不过我们通过两个办法就能极大地提高yum安装软件的速度。

首先,安装yum-fastestmirror插件

yum -y install yum-fastestmirror

然后,安装多线程下载工具axel

wget http://alioth.debian.org/frs/download.php/2621/axel-2.2.tar.bz2
bzip2 -d axel-2.2.tar.bz2
tar xvf axel-2.2.tar
cd axel
./configure
make && make install

最后,安装yum的axelget插件

svn co http://cnfreesoft.googlecode.com/svn/trunk/axelget/ /etc/yum/axelget
cd /etc/yum/pluginconf.d/
ln -s /etc/yum/axelget/axelget.conf .
cd /usr/lib/yum-plugins/
ln -s /etc/yum/axelget/axelget.py .

修改/etc/yum.conf,设置plugins=1,一切搞定,运行yum -y update,享受一下高速的感觉吧。最后,感谢wesley写的axelget插件。

PostgreSql源码学习(4)

PG源码之parser(1)

解析sql语句是数据库服务器需要做的第一步工作。通常来说首先需要建立数据库链接,而建立数据库链接的程序可能是psql,jdbc,odbc等等。解析阶段主要是检查应用程序提交的sql的正确性以及创建查询语法树。接下来才是查询重写和执行计划优化,最后才是执行相应的查询。先分析查询解析器的原因主要是它是处理查询的第一步,必须对它了解清楚。还有一点小小的私心,据我所知,parser这部分的内容是当年由两个加大伯克利分销的中国学生完成的(用伟光正的话说是奠定了坚实的基础,当然肯定改进了不少)。

pgsql始终是以一用户一进程的c/s模式来实现建立链接。pgsql的开发者们各处的解释是:”由于我们并不清楚需要建立多少个链接,所以我们必须使用一个管理者进程来为每一个链接请求创建一个新的服务器进程。“这种方式很类似于ORACLE的专用服务器模式,似乎对WEB环境下的应用支持的不是很好,而且由于linux/unix本身的进程开销不大,所以在*nix上使用似乎比在windows上使用pgsql更好。当然在windows上pgsql始终是一个进程,并且使用线程来处理各个问题,性能如何没有详细的测试报告。所谓的管理者进程在pg7的时候是指postmaster进程,这个进程会在指定端口监听数据库链接请求。在pg8以后这个进程是postgres进程,在*nix上通常是:/urs/local/pgsql/bin/postgres -D DATA DIR。比如(在fedora上使用ps -aef |grep postgres):

postgres 4162 1 0 13:44 ? 00:00:00 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
postgres 4164 4162 0 13:44 ? 00:00:00 postgres: writer process
postgres 4165 4162 0 13:44 ? 00:00:00 postgres: wal writer process
postgres 4166 4162 0 13:44 ? 00:00:00 postgres: autovacuum launcher process
postgres 4167 4162 0 13:44 ? 00:00:00 postgres: stats collector process
postgres 5269 4162 0 14:04 ? 00:00:00 postgres: fy fangyuan [local] idle

可以看到实际上第一个进程是其他所有进程的父进程,因此这个进程就是管理者进程。每一个postgres进程之间使用共享内存和信号量来保证数据一致性(这个方法有点像ORACLE的SGA,只是SGA里有共享池用于存放数据,而PG只有每个进程的私有数据)。

解析器(parser)首先检查查询语句(实际上是一个ASCII字符串)的语法正确性。如果语法是正确的则会建立一个parse tree,否则就返回语法错误。在这一步里,pgsql的开发者们使用lex和yacc来进行语法解析。文件scan.l(src/bankend/parser目录下)主要用于识别相应的标示,比如sql关键字,操作符,PLSQL关键字等等。lex会为每一个关键字或者标示符创建一个token并且返回给parser。gram.y里定义来parser并且包含了一系列的语法规则和不符合/符合规则就会触发的动作(可以用来给出语法错误或者建立语法树)。在编译的时候scan.l会被编译为scan.c而gram.y则产生gram.c文件,最终被编译入postgres程序中。

由于本文并不是对lex以及yacc的详细介绍,在此不再详述。如果有兴趣的话,可以参考《lex和yacc(第二版)》(机械工业出版社,翻译的老美的书,质量很高,并且专门有一章来讲解析sql),另外IBM的网站上也有好些文章介绍这两个工具,可以搜来看看。要理解parser是如何工作的必须对这两个工具有深入的认识,否则根本无法理解parser部分的源码。另外lex和yacc也是老美讲授编译原理的时候必定会讲到的工具,因此花一点时间来学习这两个工具还是物超所值。

parser还没有写完,下次接着写。
fanngyuan于2008/10/19 15:12

同事的高论

今天下午坐班车回家的路上,和同事讨论问题。我说ORACLE数据库调优很重要,而且也很有意思。她立刻反问我调优是做什么。我回答说ORACLE数据库的调优主要包括数据库实例的调优和SQL调优,每一部分都很有意思。于是她就让我举个例子,我就大概说了压缩索引,调整热点数据块和SQL查询重写。最后她语重心长的说,没什么意思,没什么技术含量。(这位女同事是做前台显示的,她们从来没做过海量数据和多用户并发访问测试,换句话说,她对数据库很不了解)在这里我不想论证数据库调优到底有没有意思或者说到底有没有技术含量。我只是想说,如果我不了解一门技术,或者说我对一件事不了解的话,在别人讨论问题的时候我不参与讨论也是一个比较健康的态度。

记得刚开始学ORACLE的时候拜读过TOM的大作,EXPERT ORACLE ONE ON ONE,受他的影响很深。他说过项目组的每个程序员都必须要熟悉数据库,因为数据库是一般项目的核心。其实这话一点也没错,如果没有数据库的话我们几乎什么应用程序都做不了。而应用程序说白了只是在应用数据库里的数据而已。据我所知,她们项目组里没有一个开发DBA,(不过她们的数据库设计都是由韩国人来做并且会写好每个SQL,因此她们只需要把页面做好就好了),我不知道她们的项目在海量数据的情况下能不能正常运行(她们全部都用了悲观锁定)。她似乎觉得应用技术更有意思,但是从软件业发展来看,过去几十年里,只有操作系统和数据库傲然挺立,也许今天大红大紫的技术,到了几年后就是昨日黄花(比如struts),因此多花点时间在数据库上不是坏事。

前几天,我听见了另一条高论,学数据库只要把怎么写SQL学好就行了,至于数据库运行的原理没什么价值(原话不是这么说的,但是基本是这么个意思)。我真的不想评论这句话说的有多蠢,但是还是实在忍不住要说几句。其实写SQL固然重要(他们组的项目经常会做报表,经常会写500行左右的复杂SQL,我也会经常帮他们做SQL调优),但是数据库原理绝对是需要好好学习的内容。我个人认为数据库高手并不在于会写复杂SQL,会用分析函数,会做备份恢复,而在于能预见到SQL对数据库带来的影响以及对未来数据增长做出规划和架构,前面说的都是数据库的“小学”,后面才是数据库的“大学”,当做“大学”而不是做“小学”。如果因为学习了如何写SQL就不去学习ORACLE的基本知识的话,那么真就是捡了芝麻,丢了西瓜。

2008年10月16日星期四

支持微软 打击盗版

最近,微软好像要开始打击盗版了,包括盗版的瘟抖死xp和office,消息来源请看这里。说实话,我自己挺支持微软这么做的,毕竟别人的劳动应该得到相应的价值。如果你觉得win xp 和office贵的话,不用就好了。盗版实际上跟做小偷没什么区别。昨天跟同学聊天,他们都觉得微软这么做不好,很垄断,感觉就像小偷在指责强盗。

其实我们离开了微软的产品也不是不能活了。现在很多发行版的linux比如fedora,ubuntu之类的比之winxp不知强了多少,当然在易用性上也不差。之所以有人觉得linux难用,一方面是因为大家很早就接受了微软操作系统的一些观念,另一方面也是因为linux在市场上的宣传不够。而且linux本身的安全性能要远远好于windows系统。

而OFFICE的替代品就更多了,有OPEN office,WPS office等等,当然也可以使用google的在线文档来代替office。当然这些产品都是免费的。

其实软件业的两大巨头微软和oracle,一直都采用盗版的策略来占领市场。不知道什么时候oracle也会禁止盗版的数据库。也不知道有多少公司都在用盗版的oracle数据库,虽然说IDC的统计数据是ORACLE的装机数量不如sql server,但是它只统计了正版用户,如果加上盗版的话,ORACLE数据库的装机数量肯定会高于sql server。哪天等ORACLE公司也像微软这样打击盗版了,我们民族软件产业才可能会有所发展。

2008年10月15日星期三

中国文化冷风景(节选)

作者:李劼
原文点击这里

绪论:商周之交和百年激变

中国的历史时空,说复杂,很复杂,厚厚叠叠的二十四史,大有一种让人读一辈子都读不完的望史兴叹。说简单又很简单,从商周之交到二十世纪前后一百多年的激变,不过是翻了一页而已。换句话说,假如历史的时间向度可以转换为空间存在的话,那么商周之交和一百多年的中国近现代历史,乃是处在同一个历史空间里。就好比一个圆周的起点和终点一样,两者正好相交。

由于在时间上的漫长、在书写上的重重叠叠,中国历史不像美国历史那么简单明了,而像一座由冗长的唠唠叨叨编织成的言语迷宫。无论是本国的阅读者还是来自西方的研究者,迷失在这座迷宫里的人物之众多,与厚厚叠叠的二十四史相得益彰。对于本国的史家来说,孔子像一堵墙。司马迁也罢,司马光也罢,史家们大都被孔子的史见和孔子删定的经典挡在历史真相之墙外。孔子这堵墙给中国历史的解读造成许多盲点。

有关中国历史研究的一个最大盲点,在于把专制读成中国历史的传统,把孔子读成中国文化的首席代表。好像中国是个天然的专制国家,仿佛中国文化与生俱来就是从孔子开始的。当人们强调所谓中国的国情时,其言下之意,无非就是专制在中国是天经地义。而所谓的新儒家的理直气壮,又在于标榜只有孔儒才是中国文化的正宗传承。哪怕新儒家承认专制的政治制度需要变革,也要坚持与专制政治相应的专制伦理却是亘古不变的。君不见,就连在美国的中国城里,所竖立的象征性雕像,都是孔夫子,而不是老子或者其他圣贤。总而言之,在中国历史的专制迷宫里流连忘返,已经成了一种古怪的学术乐趣和奇特的心理情结,以致于有人只好把中国文化比作一个大染缸,掉进去就变色。换句话说,一走进中国历史,一头扎进中国文化,就会在人为的迷宫里迷失。

古希腊神话中的英雄忒修斯,是依靠了阿里阿德涅公主给的线团,走出了迷宫。走出中国历史或者中国文化的迷宫,也有一根阿里阿德涅之线。这根线就近而言,是从《红楼梦》到王国维再到陈寅恪那个绵绵不断的人文精神承传。就远而及,可以从《红楼梦》上溯到禅宗兴起之后的中国式的文艺复兴。然后还可以从魏晋风度、汉末党锢精神上溯到《道德经》的自然无为哲学、《山海经》的自由人格风貌、以及《尚书》记载中残留着的民主政治传统等等组成的文化景观。这是中国历史依稀可辨的一脉文化香火,凭借这脉香火的微光,烛照出专制不是中国的国情,孔子不是中国文化的始源和象征。

集中国文化之大成、对于中华民族的重要性尤如莎士比亚之于英国历史和整个西方文化一样的《红楼梦》,在对中国专制文化传统提出永世长存的怀疑的同时,将中国人有关自身形象的记忆,一下子追溯到了《山海经》神话故事。小说以女娲补天开篇,把中国历史简化到最为本真的状态。神话通常是一个民族的集体无意识写照,正如梦境里蛰伏着梦者的下意识。中国人最为本真的民族形象,不是由孔儒塑造的,而是镌刻在由《山海经》提供的历史记忆里。从那样的历史记忆里,《红楼梦》构筑出一个全新的人文世界,构筑出由晶莹透亮的少女们所组成的大观园,从而力透纸背地写出这样的大观园如何被专制及其伦理所毁灭的悲剧。从某种意义上说,大观园是中国式的伊甸园。《红楼梦》所讲说的全部故事,乃是一个由水一般清纯的少女组成的诗意盎然的伊甸园,如何变成一片白茫茫大地的历史寓言。

这个寓言到了王国维的学术世界里,被无意间指向了一个饶有意味的历史揭秘。王国维是个古今罕见的学术天才,如果说,他的《人间词话》写得相当清晰,那么他的《〈红楼梦〉评论》则写得有些懵懂,虽然开了从文化气韵和审美精神上勾画《红楼梦》人文景观的先河。及至他的《殷周制度论》,更是凭着学术上的天赋无意中触及到了一个极具人文价值和历史颠覆性的重大秘密:在周之前的中国,专制不是传统,大一统的中央集权不是周王朝之前的国家政体。换句话说,只消从《殷周制度论》所揭示的殷周之异稍稍跨前一步,人们就可以发现,中国曾经是一个民主的联邦国家。虽然那样的民主联邦与美国式的联邦合众国颇有异趣,但在本质上却是完全相同的。也即是说,民主和联邦,并不是西方文化的特产,并不是美国特有的国情,而同样也是中国文化和中国历史最为始源的传统。正如当年“五四”新文化运动的领袖们怎么也不会想到,他们竭力想要推倒孔儒传统的一个基本支撑点,恰好来自于他们从来没有认真注意过的那个拖着辫子的王国维;王国维本人可能也没有料到,他的《殷周制度论》乃是对他所效忠的专制王朝的历史合理性的根本质疑。

这样的质疑在陈寅恪,是由他晚年沤心沥血写就的《柳如是别传》提出的。陈寅恪是继王国维之后的又一个文化守灵人。他的守灵结果不是乔伊斯式的《芬尼根之还魂》,而是这部以严谨的史笔写就的文学巨制。有关明末的历史,著述纷然。有同时在讴歌李自成的,也有后来断定多尔衮乃真豪杰的。但没有人能够像陈寅恪那样,从历史的风云之中,慧眼独具地看出了一个风尘女子的人文价值和历史内涵。正如《红楼梦》把族群的记忆推回到《山海经》神话,《柳如是别传》把中国历史置于一个身为下贱、心比天高的女子的审视之下。当一部有男人主宰的历史,当一部从来不以妇女儿童为然的历史,突然被放进女性的眼光里,其虚伪,其残暴,其毫无人性,其独立之人格、自由之思想的严重缺如,暴露无疑,一览无余。陈寅恪的过人之处,不在于精通多少种语言,不在于学术根底如何深厚,那些都是许多学人经过努力可以达到的。陈寅恪的难以企及之处,在于其非凡的历史洞见力,其深透一如卡夫卡之于人类处境的洞若观火。

从《红楼梦》揭示的民族始源形象,从王国维《殷周制度论》论述的殷周之异,从陈寅恪提供的女性视角和文化心胸,重新反观由二十四史编写的中国历史,商周之交的历史转折就不再像以前人们公认的那样,是一个先进的朝气蓬勃王朝推翻了一个落后的腐朽落没王朝的传奇,是一个英明伟大的周公替代了荒淫无耻的纣王的故事,而是一个来自西岐的荒蛮小国替代了地处中原、代表着黄河流域最为正宗的华夏文化的殷商王朝的历史变故,而是一个先是由周武王以暴力方式扫平诸候各国、灭掉作为诸候之长的殷商、然后再由周公旦以极其霸道极其专制的方式,终结原先的诸侯联邦,建立起中央集权的专制帝国的历史转折。王国维的《殷周制度论》开宗明义的第一句话就是:“中国政治与文化之变革,莫剧于殷周之际”。王国维接下去详细罗列了殷周之际的变革细节,他只是没有意识到,这场变革的实质究竟是什么。王国维没有意识到,正是这场所谓的变革,把中华民族推入了一个长达三千年左右的历史轮回里,遍体鳞伤地体味了什么叫做专制,什么叫做集权,什么叫做皇帝,什么叫做大一统,什么叫做儒家道德。如此等等。这样的轮回,一直到了近百年的激变,才渐渐地走向终结。

从商周之交到百年激变,要而言之,乃是由周公建制和孔子立言所设定的权力话语方式和话语权力梏桎、从君临天下到黯然解体的一个历史过程。在这个过程中,各式各样的历史人物,扮演了各不相同的历史角色。有坚决维护专制的,有坚决反对专制的;更有从坚决反对专制开始,最后却以努力重建专制、疯狂加强专制而告终的;有坚决追随孔儒的,有坚决反对孔子的;有开始反孔后来又尊孔的,更有以反孔开始、却最后不得不以跟所谓的新儒家眉来眼去地调情来标榜自己有文化的。

历时三千多年的历史,说白了,不过是由周公和孔子当初心照不宣地先后制作的一个简单平面。帝王将相,文人墨客,在这个平面上有滋有味地绕了数千年。一直绕到今天,人们才刚刚看见曙光。环顾四海,周公奠定的中央集权专制依旧,倒是从孔子到朱熹再到所谓的新儒家的儒教传统,在话语权力上的式微,清晰可辨。

进入二十一世纪之后,中国的国运在继续上升。唯独周公孔子当年设定的那个历史框架,始终不见有什么起色。从某种意义上说,中国人确实站起来了。近无来自东邻的威胁,远无来自西方的炮舰;西伯利亚的寒流,将随着油田的开发而变暖;与地球另一边那个大国的利益相逐你来我往,再激烈再剑拔弩张,也跳不出近攻远交的外交方略。没有能够同时跟进的,是陈旧的历史框架,是僵硬的政治制度。由于为既得利益所困的抱残守阙,至死不变,整个民族在心理上的持续变态、在精神上的不断沦落,无以缓解,更遑论何日消解。制度上的僵而不死,精神上的空前萎琐,与蒸蒸日上的国运,与日渐繁荣的经济形成了越来越巨大、越来越鲜明、越来越刺眼的反差。自鸦片战争以来的中国,一直处在历史的十字路口,如今,这样的徘徊已经到了结束的时刻,到了必须作出选择的时刻。

历史需要彻底变革,平面的循环理当结束。

被周孔架构所封闭的历史空间,曾经遭受过佛教文化尤其是禅宗文化的挑战。作为对此挑战的应战结果,产生了程朱理学。程朱理学在维护周孔历史架构的同时,也把孔儒之教本身推向了没落,走入了穷途末路。“五四” 新文化运动乃是儒家的话语权力开始退出历史舞台的一个鲜明标记。

被周孔架构所封闭的历史空间,不是自行瓦解的,而是被来自西方的商业文明强行敲破的。早在商业文明以炮舰威逼之前,西方的传教士就已经开始把对中国人来说相当陌生的基督教文化,在中国大地上悄悄地心平气和地传播了。但那样的传播还远远及不上当年佛教传入后的深入人心。尤其对于满族宫廷来说,他们可以接受儒家教义,可以向佛祖顶礼膜拜,但他们不知道也不想知道,基督是怎么回事。直到西方的炮舰开到国门跟前,愚昧的满大人才发现,基督并不仅仅是个被钉在十字架上的死人。这些被汉化了的满大人更没想到的是,跟在炮舰后面的,还有一整套现代的民主政治及其思想理念。相形之下,不仅专制制度和专制观念显得陈腐和过气,即便是假借基督名义造反的天平天国,都充满由于因袭草莽传统而无可避免的落后和野蛮。而与此相反的例子却是,紧挨着中国的那个东瀛岛国,以惊人的喜新厌旧抛开了学了很久很久的中国文化,转而把大量的留学生派往西方,并且野心勃勃地向不列颠帝国悄悄看齐,准备有朝一日跟盎克鲁撒克逊民族比试高低。但是在当时,他们暗中瞄准的是原来的老师。那时,向西方学习,一度成了中日两国的文化角力和历史竞赛。最后经由一场意味深长的甲午海战,分出了胜负。

不知是因为命定如此,还是由于因袭过重,中国历史的百年激变始终以阴差阳错的方式蹒跚而行。历史的诡异在于,理学出身的曾国藩们,在扼制以草根造反来更新王朝的历史逆流时,只会做,不会说。接踵而止的整个一场洋务运动,更是找不到一套相应的改革话语。更为诡异的是,当人们终于说出政治改革的诉求时,那个领导变法的精神领袖,却是一个迂腐透顶的孔儒信徒,竟然有本事按照儒家的教义,制作出叫做“大同世界”的乌托邦。那场变法以悲剧告终的根本原因之一,来自变法领袖本身的因循守旧:将一场权力话语的变革,诉诸话语权力的复辟。就算没有慈禧太后横加阻断,那场变法最终也会一步步地走向专制和与专制相应的意识形态。更不用说变法领袖本身的帝师情结和手持话语权力君临天下的野心,与其在实际的政治斗争中的操作能力之间,存在着巨大的反差。曾国藩们是做得成功,说得木讷;康有为们却是行动的矮子,不管康氏如何扮演语言上的巨人。

令人感叹的诡异历史,还没有到此为止。一九一七年,“五四”启蒙运动的领袖们终于找到了以科学和民主为标帜的现代话语,并且以不同的姿态、以相同的白话文表达了出来。殊不知,那边厢的江湖革命家却迫不及待地膜拜北方那个国家的暴发户为师,按照苏联的列宁主义原则建党建军建立军校,以现代的政党政治方式,打造陈旧的专制集权;用极具恐怖主义色彩的暴力革命,扫平小荷才露尖尖角的联省自治。那个中国历史上罕见的有野心没头脑的江湖革命家,为了实现大总统的美梦,不惜断送联邦前景,复辟一统天下。须知,当时的联省自治在精英阶层已经达成了共识,以致当年曾经互相争论得难解难分的保皇派主将梁启超和革命论主笔章太炎,不约而同地站到了同一立场上,成为联省自治的激烈鼓吹者和坚持者。即便是初出茅庐的毛泽东,都龙飞凤舞地高声疾呼联省自治,湖南独立。

从北大“新青年”到黄埔军校,从文化启蒙到弄不清楚究竟算是三民主义还是列宁主义的北伐。中国历史的河床由此改道,从联省自治形式的联邦政治重新回到大一统,从民主诉求重新转向专制集权,不管那样的集权是姓孙还是姓蒋,是在当时叫做三民主义还是到后来变成了共产主义,骨子里都是一回事。

从某种意义上说,早年倾心于曾国藩,随后向往过北大,喊过陈独秀万岁,晚年却妄想着“解放全人类”、称霸全世界的毛泽东,最早是由孙中山所策划的北伐战争所塑造的。从孙中山的想当大总统,到毛泽东的崛起和晚年称霸世界的疯狂,其中不过相距五十步和一百步而已。这就好比同一张赌桌上的两个赌徒,一个赌的是一百万,一个想赌一千万甚至千千万。

毛泽东早年对北大的向往,得到的是思想的启蒙。孙中山的黄埔军校及其酝酿的北伐战争,使毛泽东转向湖南农民运动;最后,蒋介石的大屠杀,使毛泽东得出了枪杆子里面出政权的结论。在中国历史上,像曾国藩那样坚持书生立场,坚持改革立场,从而坚决不打江山主意的,实在难得。同样,要培养出一个像毛泽东这样的枭雄这样的绝代帝王,也很不容易。对此,孙中山建了头功,所以毛泽东口口声声地把孙中山称之为“革命的先行者”。换句话说就是,榜样的力量是无穷的。毛泽东的成功,首先应该感谢的还不是大日本皇军,而是想当大总统的江湖革命家孙中山。

二十世纪中国历史有一个至关重要的秘密,就是如何理解共产党对国民党的胜利。或者说,为什么在国共两党的竞争中,最后共产党胜利了?有关这一问题,不仅两党双方从来没有讲清楚过,就是所有的专家学者,包括西方世界的教授们,也没有给出正确的答案。

人们过去以为,共产党对国民党的胜利,是共产主义对三民主义的胜利,或者说是整个共产主义阵营对西方资本主义阵营的胜利。人们后来认为,那是湖南蛮子毛泽东太精于权术,其翻云覆雨的本事远为仅具宁波生意人那点小精明的蒋介石难以企及。或者干脆说,在谁比谁更流氓的历史竞赛中,最后是毛泽东胜出。比较新近的研究则是集中在毛泽东如何利用日本侵略中国的机会,以明里高喊抗日、暗里扩大地盘的权谋,击败了对手蒋介石。

人们没有看清楚的是,在这场以到手江山为目标的传统逐鹿中,或者说,在这场权力话语的争夺中,话语权力起了决定性的作用。

当年周公建制,最大的苦恼在于话语权力的缺乏。权力和制度好比国家的硬件,话语和意识形态好比其软件。武王伐纣更换了王朝,却并没有得到话语权力。在周公发布的一个又一个诰令中,从来没见到他引用任何先贤所言。因为在这之前的圣贤,不言而喻地认同无为而治式的民主政治,根本不知道中央集权式的专制和相应的意识形态应该如何表达,就好比后来的专制者们茫然于民主政治是怎么回事一样。而也正是这种话语资源的缺乏,这种历史合法法和话语上的权威性的悬置,致使姬发在打下朝歌之后,一面高声宣布刀枪入库、马放南山,一面以非常谦卑的姿态,前去拜访前朝的圣贤箕子亲王。也是这种在话语资源上的缺乏,致使周公建制建得非常辛苦,不得不公开违背兄长姬发原先信誓旦旦放弃暴力手段的承诺,不得不使用极其野蛮的手段,镇压所有反对他建立姬姓中央集权的人们,甚至不惜野蛮到了监禁、流放乃至于屠杀自己亲兄弟的地步。

为周公建制提供话语软件的孔子,直到周公死了数百年之后才出现。在这数百年的时间里,制度是专制的,话语却依然是自由的。这样的自由风貌,残存在被孔子删改得惨不忍赌的《诗经》三百篇里,也点点滴滴地散见于后来的一些历史记载中。比如《召公谏弥谤》,就是一个明显的例子。防民之口甚于防川,其实并不是召公的高见,而是时人的共识,也是周之前的民主政治社会留下的历史传统。这即是说,言论自由即便到了周朝,也依然是不言而喻的。因此,当这种自由面临侵犯的时候,才有了召公谏弥谤的故事。

比起周公建制的辛苦,毛泽东实在是太幸运了。毛泽东从一开始就握有了蒋介石再努力也无济于事的文化资源和历史资源,即“五四”启蒙运动,从而挟“五四”以令天下。加上毛泽东在语言上的天赋,把白话文写得出神入化,就连终其一生与专制政治格格不入的“五四”领袖胡适,都对毛泽东的白话文章佩服得五体投地。而面对民众,毛泽东又能够以中国老百姓喜闻乐见的方式即兴演讲。一面龙飞凤舞地写着古典诗词,一面信口雌黄地写着生动活泼的白话文,毛泽东籍此在历史舞台上有声有色地制造着语言神话,扮演着话语英雄。而可怜的蒋介石,却还在像小学生一样地温习着毛泽东早在年青时就烂熟于心的曾文正公。比起毛泽东的灵气十足,才华横溢,蒋介石就像个附庸风雅的乡绅,十分吃力地搬弄文言文,朝着部下和国民之乎者也,谁也不知道他在讲些什么东西。

毛泽东和蒋介石,一个是从书生到流氓,一个是从流氓到书生;一个是踌躇满志地话语权力在手,只等着何时缚住江山那条苍龙;一个却是从青红帮脱颖而出的赳赳武夫,只懂杀人,不懂攻心。二者之间,谁能赢得“五四”以后的中国民众尤其是热血青年,谁能最终坐拥天下,一目了然。

毛泽东确实在抗日上耍了花招,但他又确实拥有耍花招的资本。除了谋略上的高明,还有文化上的资源和话语上的权力。作为白话文的绝代高手,毛泽东乐得以话语抗战,让他的部下让他的军队去放手发动群众,壮大自己的力量。而之乎者也的蒋介石,不仅身处的位置使他必须站在抗日的最前面,而且还不得不以领导军队参战的实际行动来证明自己的抗日立场。有人以此吹捧蒋介石为民族英雄,这在蒋介石却是受之有愧的。因为他既然得了天下,就要为这天下承担责任。国家元首带头御敌,此乃天经地义。夸大蒋介石的履责,毫无必要。但指责蒋介石下山摘桃子,却是颠倒黑白。在民众的抗日请愿面前,蒋介石缺乏的是说服民众相信他会承担责任的言语能力。他最强有力的表达,不是演讲,而是下跪。蒋介石在下跪的那一刻,应该后悔自己的不懂白话文。之乎者也的文言文和喜闻乐见的白话文,在历史的紧要关头,极其微妙地分出了高低。蒋介石想要说得像毛泽东一样漂亮,还必须从白话文学起。顺便说一句,假如三千年前的那个周公旦也具有毛泽东的话语能力,后来的孔子就可能是多余的,可有可无的。

当然,历史学家们通常不喜欢这么看问题。他们总是纠缠在主义的对错或者实力的强弱上。他们不懂得文化资源之于历史创造的无形力量。文化是柔软的,武力是强硬的。枪杆子里面出政权只是一个方面,假如没有相应的笔杆子,枪杆子创造的政权是靠不住的。在中国历史上,任何一个打下天下的帝王,最终都会求诸王道治国。叫做以马上得天下,不能在马上治之。孙中山不懂这个道理。蒋介石知道了这个道理却无法得到应有的话语资源。当年蒋经国从苏联回国,蒋介石叫儿子读的是曾国藩的家书,而不是孙中山文章。蒋介石心里非常明白,他的恩师孙中山跟他一样,都是江湖出身的草莽。要不是他需要一个法统支撑他的权力,他早就把孙中山一脚踢开了,就像他掌权后断然与孙中山的恩师苏联顾问分道扬镳一样。从某种意义上说,孙中山是个比洪秀全更加没有文化的造反者。洪秀全还挑战过孔夫子,孙中山连孔夫子是怎么回事都没有弄清楚过,更不用说他跟“五四”新文化之间的巨大隔膜。

在孙中山盲盲然、蒋介石束手无策的地方,毛泽东却如鱼得水。毛泽东在延安的号召力并不在于他真的掌握了什么马列主义,可以说,毛泽东至死都不知道马列主义尤其是马克思主义究竟是怎么回事。但这并不重要。重要的是他和“五四”新文化有很深的渊源。毛泽东的延安为什么会吸引无以计数的有理想有热情的青年男女,不是因为马列主义,也不是因为毛泽东,而就是因为“五四”新文化的号召力。

当年孙中山的黄埔军校虽然抢了北大的风头,但以“新青年”为象征的“五四”新文化,却依然如同一盏明灯,默默地点亮在一代代青年男女的内心深处。从巴金的小说里,不知走出多少个“觉新”和“梅表姐”,义无反顾地投奔延安。而站在蒋介石那一边的,就算不全都是高老太爷,却也不乏杨森那类人渣。更不用说陈其美、张道藩那票货色,更不用说戴笠式的特务流氓。流氓学做书生虽然值得鼓励,但毕竟本性难改。不说别的,就以相当有教养有地位的宋家子文为例,都挨过蒋介石的耳括子。蒋介石玩弄枪杆子是拿手的,但在文化上却是相当弱智的。共产党不管怎么说,当年其基本成份毕竟是有理想的热血青年。不能因为共产党成为执政党之后的一系列作孽,而把他们看作是妖魔降世。更不能因为共产党执政的失败,反过来为蒋介石当年的屠杀叫好。

一场江山争夺过后,能够让国民党的遗老遗少们骄傲的,不过就是个黄埔军校罢了。他们跟其领袖孙中山和蒋介石一样,茫然于“五四”新文化,不把那样的文化启蒙当回事。他们不懂那样的文化启蒙之于历史,有着如何惊人的创造力。从某种意义上说,毛泽东对蒋介石的胜利,中国共产党对国民党的胜利,是崛起于中国晚近历史的启蒙文化之于孔儒之教的胜利。当年在白话文面前坚持文言立场的林抒是可爱的,但只学文言不会白话的蒋介石却是愚昧的。

在中国历史上,像毛泽东这样集权力话语和话语权力于一身的人,可说是绝无仅有。从周公到秦始皇,从秦始皇到后来历代帝王,他们坐拥天下,却不得不说别人教给他们的陈词滥调。而从孔子到朱熹,到朱熹到后来的新儒家,手中握有的都不过是话语权力。而他们的话语核心,又恰好是权力崇拜。孔儒学问家钱穆和蒋介石站在一起,毕恭毕敬的永远是钱穆而不是蒋介石。这既可以说,蒋介石学曾国藩学得很不到家;也可以说,钱穆的儒学根底也实在是太深湛了一点。

不管怎么说,历史上没有一个人,可以像毛泽东那样,既做帝王,又演圣人。然而,权力和话语两者相加,不可能成全什么人,而只可能毁掉一个人。权力话语加上话语权力,好比一剂旷古的春药,不要说毛泽东这样一个凡夫俗子,就算是神仙喝了,都会致疯。这剂春药的药性之强,好比一颗原子弹在一个人的身体里爆炸。无数吨当量的欲望,火山一般喷发出来。假如能够把这样的能量转化为文化创造,无疑是功德无量。可是这样的假设恰恰是不成立的。跟权力连结在一起的,只能是欲望,蓬蓬勃勃的欲望,无穷无尽的欲望。由这样的欲望所导致的专制和独裁,古今中外,唯此一例。

中国的政治,要永远记取毛泽东独裁专制的教训,虽然中国的文化永远需要毛泽东那样的想像力和创造力。

毛泽东假如在开国之后能够像美国首任总统华盛顿那样弃位,断然转向文化研究,一定功德圆满。但那时候的毛泽东,早已不知不觉地跟“五四”启蒙文化南辕北辙得不知有多远了。当他对着天安门城楼底下的中国民众向全世界宣布、中国人民站起来了的时候,他强烈地意识到,中国人民是在他的脚底下站起来的。

当年的周公,没有这样的狂妄。周公建制,并不是理直气壮的。当年的秦始皇一统天下时,也没有这样的狂妄。秦始皇手中没有话语权力,所以只好以坑儒发泄自己在文化上的残疾之苦。但毛泽东一站到天安门城楼上,就算他自己不想狂妄也会变得狂妄,更不用说他早就在狂妄了。又是帝王,又是圣贤,古往今来,仅此一帝。数风流人物,还看今朝。想想看吧,天真无邪的独生子女,都可能被宠成小皇帝;更何况一心要天下苍生还看今朝的毛泽东,面对着山呼海啸般的万岁声。

历史走到这一刻时,画面上的双方,全都无法让人心生敬意。被万岁的那个人其实是可笑的,在胜利面前抑止不住的喜形于色,让人不由想起小人得志的成语。而山呼万岁的人们,又是极其可怜的。改朝换代换了几千年,竟然还在那么狂热。

老子在《道德经》中有言:“杀人之众,以悲哀泣之。战胜以丧礼处之。”历史上,在胜利面前怀有悲戚之心的开国君主,也许只有周武王姬发。姬发拜见箕子,本意并非是请教治国方略,而是不无悲悼之意的请求原谅。与这种心境相应的,是他的放下屠刀,给纣王之子武庚以封地,以示自己没有灭绝之心。为此,他还特意把姬氏家族中对商纣不抱敌意的二个兄弟,封在武庚的封地边上,以示友好。

然而,即便姬发向殷商前朝的圣贤、遗孤、民众表示了他的悲伤,请求他们原谅,也没有换得山呼万岁的效应。将毛泽东和周武王姬发相比,已经令人相当感慨;将殷商民众与一九四九年之后的中国民众相比,却让人更加感慨。虽然今天能够读到的商周史书,大都经过了孔子的删改,但从残剩的蛛丝马迹里,依然可以读到,殷商被灭之后,殷民自始至终没有臣服周朝的统治。

首先,殷商的圣贤们,相当于今日所谓的知识分子吧,无论是箕子还是伯夷叔齐,全都拒绝认同周武王的胜利。伯夷叔齐早在姬发出征时,就在半路上拦截加以劝阻。及至姬发打下朝歌,伯夷叔齐断然出走,至死不食周粟。对姬发讲说了一通“洪范九畴”的箕子,之后也远离被姬发占领的故国,到北方一个岛上了却余生。其次,武庚和殷民更是以不断的反抗,向姬姓征服者表明自己的立场。在周武王姬发逝世、周公姬旦摄政掌权之后,武庚和姬发姬旦的二个兄弟管叔蔡叔一起,率领殷民向周公姬旦发难。这场反抗使姬旦意识到,殷民难服。即便他镇压了反抗,杀了武庚管叔,囚禁了蔡叔,依然忧心忡忡地在《酒诰》中告诫幼弟康叔,不要让殷民喝酒,并且十分残暴地命令康叔,把不服从禁酒令的殷民抓起来送到周京,由他来把他们给杀了。饶是如此,姬旦还是无法让殷民臣服。最后,姬旦只好把所有的殷商遗民全部集中起来,迁送到西岐之地成周,亲自监管。武王伐纣和周公建制在当时的不得人心,由此可见一斑。而没有被孔儒之教污染过的先民之纯朴之自由之独立不羁之桀傲不驯,则与《山海经》记载中的中国人最为初始的形象,极其吻合。

相比之下,毛泽东的革命简直是太得人心了。这与其说是毛泽东的革命有魅力,不如说是国人的人心太易得。贤人们,也就是知识精英,早在国共内战时,就开始一个个以斡旋的名义百般讨好。及至毛泽东坐了江山,他们更是竞相巴结,以在毛泽东手下混个一官半职为荣。这些知识精英并不是那些受了“五四”启蒙文化影响而投奔延安的热血青年,而是梁漱溟、罗隆基、章乃器一类无论在学识上还是思想上都是自视甚高、自以为是的人物。假如仅仅是热血青年式的理想主义冲动,倒还情有可原。可这班精英并不年轻,从他们斡旋时的理性上看,显然也不冲动。他们到底出了什么毛病呢?

相比之下,陈寅恪的既不去台湾,也不北上高就,而像伯夷叔齐那样低调处世,选择南方的一所学校壁立千仞,成了绝无仅有的绝唱。另一个绝唱是林昭,其背景是毛泽东对知识分子的迫害。假如这样的迫害发生在商周之交,那么林昭式的宁死不屈就会由箕子伯夷叔齐那样的圣贤来担当。可是在毛泽东的淫威底下,这样的故事却只是发生在一个文弱的女学生身上。知识越多越反动固然是谬论,但知识越多越怯懦却好像是事实。这就好比财富越多越小心,越要战战兢兢地期盼着神明保佑。

毛泽东到手的江山也许依旧,但他治下的民众,却已经愚昧到了令人不可思议的地步。一生不愿与孔子为伍的毛泽东,非常幸运地得到了被孔儒调教了数千年的民众。他们向往的不过是能有个鸡窝,哪怕得到一座监狱,也会安之如素。孔儒之教好比一种家禽哲学,一种家禽伦理。其核心是服从纲常和等级观念。千变万变,等级不变。上下高低,从不含糊,更不马虎。造反和革命改变的只是把上面的人拖下来,让下面的人爬上去。等级依旧。国民党时代讲等级,共产党文化也照样等级。即便是毛泽东那种大闹天宫式的造反,乱到文化大革命那样的程度,等级依然森严。因为等级观念已经深深地刻在了中国人的内心深处。不管身处乡村还是城市,不管城市受西方文明影响有多深,等级观念依然如故。以受西方文化影响最深的上海为例,不要说住在什么样的房子里,即便是住在不同的马路边,都会在人们的心中构成巨大的等级差异。1949年前后的上海和上海人,变化多多,唯有等级观念,始终不变。

埃及的金字塔是石头做的,做在沙漠里,为死人建造永恒。而中国人的金字塔是圣人圣言做的,做在了人们的灵魂里,为国人制作嫉妒,让他们丧失尊严。要人服从纲常,必然伴随嫉妒。孔子本人就是一个嫉妒大家。有尊严的民众,绝对不接受专制统治,就像殷民那样,无论周公如何残暴,绝不屈服。与专制匹配的是短于尊严、长于嫉妒的民众,就像被孔儒所调教而成的那样。被嫉妒主导的中国人,长于内斗,怯于外敌。嫉妒成性的中国式爱国主义,喜欢爱在嘴上,或者写成诗歌,或者做成标语口号,骨子里其实是在鼓励他人去御敌。这种吵吵嚷嚷的爱国传统,从宋朝开始,沿袭至今。

嫉妒在基督教文化中是一大罪孽,嫉妒在孔儒文化中却成了不言而喻的美德。嫉妒是中国人长年累月所积的心理创伤。不要说毛泽东早年是个嫉妒者,即便是国民性批判者鲁迅,在嫉妒心理上也未能免俗。历次造反,种种革命,发生在中国都以嫉妒作为最为根本的心理动力。最早叫做“帝王将相,宁有种乎?”然后又叫做“苍天已死,黄天当立”。最后是“数风流人物,还看今朝”。一脉相承。

嫉妒在本质上是家禽的特征。你吃多了,我吃少了。你占多了,我占少了。你去打仗,我来鼓噪。家禽变成虎狼,不是为了寻求尊严和维护尊严,而是因为嫉妒得不行。鹰是有尊严的,家禽没有尊严。殷民是鹰,孔儒调教的是家禽。家禽安之若素时,是顺民;家禽因为嫉妒而造反,变成暴民。顺民和暴民,是家禽的两种状态,也是家禽的两张面孔。这是被孔教毒害的中国人区别与其他任何民族的一个根本标志。

爬上等级金字塔顶尖的毛泽东,不会不知道他所面对的民众,是早就被养家了的鸡鸭鱼肉。毛泽东不费吹灰之力,就可以享受数亿家禽的种种美味。老子当年说的治大国若烹小鲜,到了毛泽东时代,变成了治理家禽般的民众,怎么个做法都好吃。改造知识分子,就像炖蹄膀一样;文火,久炖,炖到最后连骨头都炖烂炖酥。教育民众,教育到后来,一个个全都变成了小毛泽东。这样的民众,哪怕是经历过文革那样的灾难,都不会以毛泽东为耻,反而会以毛泽东为荣,或者以自己不能成为毛泽东而嫉恨能够成为毛泽东的那个人。就历史而言,毛泽东是个现象。但就文化心理而言,毛泽东成了中国人难以摆脱的一个情结。假如说毛泽东是个疯子,那么疯掉的并不是毛泽东一个。多如牛毛的毛泽东颂歌颂词,既不是毛泽东自己制作的,也不是毛泽东逼着人们写下的。由此可见,孔子之前的中国人和孔子之后、尤其是距离孔子数千年之后的中国人之间,有着什么样的天壤之别。

从商周之交到百年激变,不仅是历史时空的相交,也是两种不同的人文景观之间的强烈反差和触目惊心的对比。历史作为一门学问,说乏味很乏味,说精彩又会很精彩。一旦越过二十四史的云遮雾障,历史的秘密和历史的真相,就会极为峥嵘地显露出来。所谓的史识,有时仅仅在于变换一个角度。读史须读出历史的视野,否则就会被历史所读,迷失在历史的迷宫里。假如不把这二段历史放在同一空间里作比较,那么不仅真正读懂商周之交和百年激变会很困难,就连真正读懂孔子是怎么回事,都不太容易。至于《山海经》,老子的《道德经》,残存的《尚书》篇什以及其它古老的典籍,更是无从读起。在读史方面,毛泽东是个相当有见地的阅读者。他能看出纣王并不像《封神演义》里写得那么不堪,还能读出曹操也不是《三国演义》里描写的花脸奸雄。这与他对“五四”启蒙运动的敏感和向往,是完全一致的。要不是他的帝王之心太重,为太多太强烈的欲望所苦,毛泽东倒是很有可能成为一个非常出色的学者和思想者。可惜的是,他还没来得及消化“五四”的启蒙意味,就像其他共产党人一样,被匆匆忙忙地卷进了从西伯里亚刮来的革命狂飚里。用毛泽东的话来说,叫做“十月革命一声炮响,给我们送来了马思克主义”。历史证明,十月革命送给毛泽东的,并不仅仅是什么主义。

毛泽东手中的“五四”资源,最后是在他发动的文化大革命中挥霍殆尽的。毛泽东能够动员全国民众卷入一场浩劫,让每一个人都有作乱的机会,都有犯罪的机会,除了当时日益高涨的个人崇拜之外,毛式话语起了关键作用。笔者在十多年前,1989年,发表的《中国晚近历史上的语言革命和语言复辟》一文中,专门分析过毛泽东如何把“五四”白话文龙飞凤舞地写成了毛式话语,简称毛语。笔者在文中指出:“语言革命的一个根本要领是在白话汉语中构建出语言的理性结构从而使之具有逻辑性质”。(《李劼思想文化文集》第五卷,第90页“论毛泽东现象”)毛泽东虽然极力反对孔儒,但他的话语方式却深受孟子影响。笔者特意引出孟子文章加以例证,指出,孟子式的圣人圣言,通常诉诸于黑洞式的表达方式,其特征在于:“概念的含混、表述的直观、结构的单向、命题的先验、论证的随意……”(同上,第98页)洞悉这种黑洞式表达方式的毛泽东,把汉语语言的经验性和实用性发挥到了极致,从而十分巧妙地颠覆了白话文创立者们倡议的理性结构和逻辑性质,复辟了汉语语言原有的非理性非逻辑的圣人圣言传统。

毛泽东在语言上的复辟,严格说来,还不完全是把毛语说得如同孟子那么霸气十足,而是在毛语中掺进了许多痞气,流氓气。前文之所以说林抒是可爱的,是因为林抒从白话文刚刚产生时,就十分敏感地感觉到了白话文的“引车卖浆者流”气息。要是林抒能够活到文化大革命时代,他一定会为自己的先见之明开心得哈哈大笑。毛语一方面有着孟子式的不容置疑,另一方面又带有强词夺理的流氓气和无赖相。“别了,司徒雷登”,“八亿人口,不斗行吗”,“不须放屁,试看天地翻覆”;如此等等。毛语把白话文口语化到这种程度,不仅让林抒笑死,而且也会让当年提倡大众语言的瞿秋白一类左翼文人无地自容。孟子虽然霸道,却还斯文。毛语的霸气里全然一付我是流氓我怕谁的腔调。从某种意义上说,毛泽东把毛语说到这种程度,也是一种媚俗。因为他深知什么才是被《三国演义》和《水浒传》熏陶出来的中国民众喜闻乐见的话语方式。这么说话,借用后毛时代那些小毛泽东们的口头禅来形容,爽,或者叫做,爽翻。

当年的林彪,深谙毛语的这种特点,特意把毛泽东的所有文章,归结为“老三篇”和一本叫做红宝书的语录手册。既然早先的圣人圣言都是语录式的,那么毛语也应该复辟到语录体。林彪还特意为语录写了著名的前言。现在重读那篇前言,与其说觉得肉麻,不如说觉得幽默。林彪显然不是不知道这种语录的荒唐、虚假和欺骗性,但他摆明了承认自己跟着做了共犯。林彪的这种幽默当时别人也许听不出来,但毛泽东却听出来了。单凭林彪这种不动声色的调侃,毛泽东就有足够的恼怒将他置于死地。

毛泽东耗尽“五四”资源的另一个原因,还在于他的思想成了所谓的体系。话语没有逻辑还不算致命,思想一旦做成体系就变成了精神的绞索架。这样的例子在中国有孔教,在西方有黑格尔以及把黑格尔倒过来之后君临天下的马克思主义。真正的思想家,话语应该是有空隙的,或者说,是留有余地的。当一种话语被讲到滴水不漏的地步,就会走向权威,就会变成帝王式话语。圣贤的可疑,通常是由于其话语有了帝王的威严。就此而言,孔子最后是被程朱理学给毁掉的。毛泽东则是经由他的“无产阶级专政下继续革命”的理论和“解放全人类”的狂言,最终走火入魔到了无以自拔的绝境里。

毛泽东以后,八十年代的中国文化又重新回到了“五四”式的启蒙。这场启蒙的一个重要特征,就在于划清“五四”启蒙话语和毛泽东话语之间的界线。“五四”资源从毛泽东逐渐流向了民间知识分子,同时也部分地流到党内改革派手中。虽然毛泽东改变了革命的“五四”方向,但许多共产党人依然保留着对“五四”的记忆。这是八十年代的党内改革派和知识分子为什么彼此很有共同语言的一个基本原因。但是,双方的遗憾也恰好在于,彼此都没能来得及由此对话出一整套改革话语,更没能来得及由此建立起权力话语和话语权力之间的反向制衡。

三千年的周孔架构留给中国人的一个历史教训在于,话语权力必须与权力话语制衡。也就是说,话语必须成为权力的监督,而不能成为权力的补充。权力除了权力之间的制衡之外,更为重要的另一制衡,就是来自话语。这同样也是毛泽东现象留给中国社会的一个沉痛教训,权力和话语不能集中在一个人身上。既是帝王又做圣贤,不想专制也已经成了专制。

专制的一个最大弊端,通常是权力者毫无约束地滥用权力。老子政治哲学中的无为而治,暗含的批评就是针对过度的用权。无为而治,并不是指无所作为,而是提醒权力者应当用做减法的方式而不要老是用做加法的方式甚至用做乘法的方式治理国家。可做可不做的事情,尽量不做。不可以做的事情,绝对不做。政治家的智慧有时不是以做什么来表达的,而是以不做什么来体现的。陈寅恪是深得老子无为而治要义的史学家,他一眼看出,东晋丞相王导在晋王朝东渡之后,以对江东士族无为而治的方式,得到他们的理解和拥护,最后使东晋王朝在江东站稳了脚跟。

专制话语的一个最大弊病,无论是程朱理学,还是毛式话语,都在于话语者将话语诉诸道德律令,使说话人动不动就成了一槌定音的道德法官。更使所谓的圣人圣言,成了绝对的、毫无商量余地的、极其不宽容的道德审判。使用话语、尤其使用具有权威意味的话语,与权力者使用权力一样,也必须是小心谨慎的。过去滥用话语权力的例子通常是诸如“饿死事小、失节事大”一类的道德专制。演变到毛泽东时代,则成了阶级划分、路线站队式的黑白分明,就连逍遥的权利都被剥夺干净,把人逼得无路可走。令人感叹的是,这样的话语方式,不仅是毛泽东时代的特产,后毛时代的人们也照用不误。甚至反对毛泽东、批判毛泽东的人们,也照样会使用这样的话语方式。

毛泽东的绝无仅有使毛泽东以后的中国历史出现了一个话语真空。这不仅对中国的知识分子形成一个挑战,当然,同时也是一个机会,同样也给毛泽东权力的继承者们带来在话语上的困难。由于权力和话语至今不见分离,一代代的掌权者,都面临着不得不说出自己话语的为难。仿佛说不出自己的话语,就没有了权力上的合法性一样。事实上,正如话语者不能够同时又是大权在握者,同样道理,权力者也并非必须成为话语者。话语是对权力的监督,权力者不必非得能说会道。执政者只消说清楚自己的施政纲领就足够了。执政者的职责,是用所做的实事和做出的政绩、哪怕是无为而治的方式,向民众表达自己的服务。

在权力和话语的两难之间,邓小平是聪明的。在法统上不放弃继承毛泽东的合法性,同时又在改革话语依然缺如的前提下,以不说不讨论的方式,实施改革。历史真是奇妙,兜了一圈之后,邓小平以改革回到了当年曾国藩们所做的事功上。毛泽东和蒋介石学曾国藩都没有学成功,倒是从来没有谈论过曾国藩的邓小平,扮演起了相近的历史角色。曾国藩们的事业是无言的,邓小平的改革开放也是无言的。

权力者的失语,使八十年代的中国知识分子变得异常活跃。他们只是没有学会在与权力相反的方向上说出改革话语,而是尝试着以挟总理或者总书记以令天下的方式,讲说改革的必要。改革话语被定位在出谋划策的古老座位上。康有为的帝师阴魂,在八十年代的知识精英脑子里徘徊不去。流向民间的话语资源,不知怎么搞的,就悄悄地向着权力的方向流回去了。美其名曰,新权威主义。仿佛得不到权力的认同,话语就变得一钱不值。更有不少知识精英,趁机秉持话语,向权力悄悄地换取生存利益。邓小平的改革改得很艰难,知识精英的说话也说得很辛苦。

一方面是政治体制改革的难以启动,一方面是话语和权力之间形不成制衡,毫无张力可言。就在这样的尴尬中,学潮爆发,学生们突然冲到了最前面。这让邓小平吃了一惊,也让知识精英束手无策。学生需要话语,可是足以制衡权力的话语却还没有产生。“五四”学生有“五四”话语,“六四”的学生却找不到“六四”话语。整个学生运动中,人们唱得最多的歌曲,竟然是《义勇军进行曲》和《国际歌》。那样的氛围让人联想起的是要求抗日的“一·二九”学生运动,或者法国人的巴黎公社。但这在邓小平的记忆中,却马上跟文化大革命中的红卫兵运动联到一起。一朝被蛇咬,十年怕草绳。毛泽东所热衷的群众运动,在邓小平恰好厌恶透顶。

毋庸置疑,学潮的兴起,八十年代的文化启蒙是个十分明显的原因。但有那么多学生卷入,几乎全国所有城市里的所有高校全体出动,却不仅仅是启蒙的原因。更为直接的动因,在于学生们在学校里受了太多太多的压抑。从教育体制到师资质量,从监狱般的学校制度到食堂里的粗劣伙食、还有公安人员、勤杂人员对学生那种工农兵管理学校时遗留下来的种种粗暴和蛮横,使自我感觉是天之骄子的大学生们,始终怀有被压在学校最低层的痛苦和愤闷。只要有机会,不管是为民主为自由,还是为了爱国主义,一找到借口就上街。因为只有在上街游行的时候,学生才感到扬眉吐气,才感觉自己是个人。

学生运动起来之后,谁也无法回避。知识精英无法回避,党内的政治精英无法回避,邓小平也无法回避。当时,唯一的双赢前途,在于双方的对话。学生和政府的对话,知识精英和最高权力的对话。然而,这场运动实在是太突然,突然到了连学生都不知道自己到底想要达到什么目的,不知道究竟在什么样的前提之下,可以班师回校。突然到了把知识精英们吓得不知应该怎么办,不是躲在后面指指点点,就是扑到广场上抱着学生痛哭流涕。紧要关头,就没有一个精英人物,没有一个在当时颇具号召力的知识领袖,坦然地站到广场上,告诉学生,你们回家吧,剩下的事情让我们来做。他们为了避嫌,不惜隔岸观火,骑墙观望。

达成以双方对话的方式圆满收场,不仅需要高度的政治智慧,而且需要对话者确实拥有对话的话语。学生当然不可能拥有那样的话语,而平日里能说会道的知识领袖却又躲得远远的,一个个在观望事态的发民,体察上面的风向,最多不过是表示声援。所谓声援,明里是支持学生,暗里却是在向政府表明心迹,这不是我们干的。最后,几乎全体知识精英将这样的表白变成了向学生劝退的苦口婆心,劝得比当年斡旋于国共两党之间的那些所谓民主派人士还要煞有介事,仿佛学生准备要发动又一次内战似的。普通的市民还知道劝说军队不要开枪,而不是规劝学生赶快回家。学潮已经闹到了这样的规模,平头百姓都在义无反顾,甚至连小偷都宣布了罢偷,可是世故透顶的中国知识分子尤其是知识精英知识领袖们,却依然不肯站到广场上,依然不肯像汉末党锢事件中的陈蕃李膺那样,挺身而出,担当天下兴亡。弄不清楚是孔儒的调教过于奏效,还是毛泽东的改造太过成功;在这个历史的紧要关头,德高望重的知识领袖们,一个也不肯断然登上历史舞台,致使诺贝尔和平奖的评委们,只好把那年的荣誉给了达赖喇嘛。

对话的可能丧失之后,邓小平早就按耐不住的武夫脾性发作了。邓小平以狭路相逢勇者胜的战争法则,解决了手无寸铁的学生运动。邓小平没有一整套改革话语,是完全可以理解的。但邓小平的断然开枪,也实在太过搞笑了。可别忘了,小平同志当年可是远涉重洋去巴黎勤工俭学过的留学生。这么一来,让马克思的老脸往哪儿搁?马克思的在天之灵被邓小平弄得哭笑不得:不是说好了来学习巴黎公社的么?怎么学到梯也尔那里去了呢?

当年段琪瑞手下的卫队,向学生开了几枪,结果开得段琪瑞痛心疾首,知道自己从政为人的底线给突破了。段琪瑞可是连袁世凯称帝都不曾痛心疾首地反对过的人物。当年学生为了要政府抗日,游行喊口号的也算闹得沸沸腾腾了,蒋介石也明知道共产党在后面怂恿,可他情愿下跪,也不肯开枪。毛泽东的文化大革命更算是史无前例的了,可是军队支左,只握语录,不带钢枪。毛泽东曾经斩钉截铁地说过:镇压群众运动,绝没有好下场。

在向学生开枪之后,邓小平犯的又一大错,在于慰问军队。周武王打下朝歌之后,立即刀枪入库,马放南山。一面发誓永远不再使用暴力,一面急急忙忙地拜访前朝圣贤。那还是两国之间的战争。假如邓小平确实是迫不得已,不以此不能让改革开放顺利进行,不以此无以让国家繁荣富强,那么在事情平息之后,他首先慰问的就应该是无辜的死难者家属,而不是军队。人民的军队,向人民开了枪,那是多大的讽剌?多大的伤害?假如说,共产党人当年的牺牲确实积累了道义上的巨大资源,那么这些资源在一夜之间,全部被射向平民的子弹打得精光。许多老共产党人,老革命,老军人,为此痛心疾首。那些将军们的联名信,应该不是谣言,从逻辑上都是成立的。至于流传的元老陈云所言:十年极右,一天极左,可能也非虚妄。

假如说,邓小平是个车间主任式的实干家,那么作为一国之长,也太没文化没头脑了一点。倒也并不是要求他能够读懂《红楼梦》,也没有要求他能够写出一手漂亮的白话文,更没有要求他读点历史,读懂商周之交的周武王为什么刀枪入库马放南山。只是假设他能够慰问一下无辜的平民,向民众说声对不起。也许他那么做了,中国民众也就真的就原谅他了。毕竟是家禽般的民众呀,很容易摆平的民众呀。要是他那么做了,也许就不会有天安门母亲了。且不说为人的良心,就算是政治的谋略,向民众那么道个歉,也能收回许多无形的道义资源。可是邓小平偏偏就是没有那么做。从法律的角度说,他丧失了为自己辩护的最后一次机会,也丧失了为自己辩护的最后一个理由。

说到天安门母亲,实在是只能让中国人伤心、无法让中国人骄傲的现象。天安门母亲产生的背景,除了邓小平的不肯道歉,不肯凭吊无辜死难者,还有就是政治精英和知识精英的不肯担当。政治精英跑到广场上对学生说,我们老了,无所谓了。知识精英躲进了美国大使馆,从而让全世界的传媒扎扎实实地炒作了一下。中国的历史,虽然黑暗残暴,但还从来没有如此这般地搞笑过。更让人啼笑皆非的是,某些个学生领袖竟然也有样学样,把同学们送到枪口上去,自己作为领袖让人给保护起来。精英们的国宝意识强烈到了这种地步,以致电影《列宁在一九一八》里那句不无搞笑的台词:让列宁同志先走,演化到“六S”当中,变成了让领袖先走,让精英先走。于是就产生了可怜的母亲们。那些逃之夭夭的领袖和精英,随即又反过来把她们当作资源,把她们叫做天安门母亲。

整个一场“六S”血案,中国普通老百姓最令人尊敬,而且文化越低越纯朴越精彩。连小偷都会喊出罢偷的口号。至于那个象征性的“六S”画面,也是由一个普通学生无意中塑造的:赤手空拳地站到坦克面前,站到本来应该是领袖们和精英们站的地方。据说,那个学生普通到了只是一个技校生,就算是个大学生,也绝不是来自哪个名牌大学。

那是多么感人的画面,多么令人肃然起敬的民众。就算是巴黎公社,也没有如此精彩的场面。雨果倒是在《巴黎圣母院》里栩栩如生地描绘过这些纯朴的底层民众。孔儒的调教,毛泽东的改造,在知识分子尤其是知识精英身上,极为奏效;而且越是精英,就越是见效。但对于底层平民,效应骤减。也许正是感觉出了这样的历史秘密,当今有位诗人专门采访贱民,撰写《底层采访录》。

“六S”就像是一次历史性的精神洗礼。在这场洗礼中显得最干净最朴实又最令人尊敬的,是无名无臭的普通百姓。尤其是因此而默默无闻地承担了开除、坐牢乃至牺牲的普通人。“六S”最让人难忘的不啻是那汨汨的鲜血,还有在那么多的死难者当中,没有一个精英、没有一个领袖的惊人事实。相信这样的事实,一定让诺贝尔评奖委员会的评奖者们困惑不已。如此波澜壮阔的历史场面,除了普通百姓流血牺牲,竟然没有英雄。那些无辜的死难者当中,即便有学生,也不是准备去扮演英雄的,或者去广场上宣布婚礼的,而是凭着良心暴露在枪口下,有的甚至仅仅是路过驻足而已。假如要对中国人进行历史性的评分,老百姓应该得满分。至于领袖和精英们的表现,交给大众和后人评判去罢。需要说明的只是,有关个别历史人物以后表现出的道德立场,虽然也是种骨气,但已经没有什么历史意味了。就像历史上的光绪皇帝和康有为,事件一结束,他们的意义也就随之消失了。

血案过后,八十年代曾经活跃过的一大批知识精英患了失语症。香港娱乐圈里有四大天王,北京文化圈里有人曾经自封“四大领袖”。九十年代以后,天王们依然风光无限,而“领袖们”却早已消声匿迹。假如有兴趣再回头瞥一眼,会发现这些不可一世的狂徒不过文化白相人而已,并且在白相的水平上,还没有一个能够超过在文化苦旅上苦得不亦乐乎的余秋雨。这场血案无意中清理了知识界的浮夸。

与“五四”一样,“六S”在骨子里也是以启蒙为标记的。“六S”既是一种文化资源,也是一盏精神明灯。九十年代奋起制衡专制的批判者,大都受了“六S”的感召。相反,八十年代的许多知识分子,到了九十年代大都躲到了“六S”灯光照不见的地方,悄悄地以各种各样的妥协方式,功成名就起来。开始还有些羞羞答答,后来就慢慢习惯了。其实早就准备好了宽衣解带,官人的手指轻轻一碰,衣服就全部掉到地上,看上去好像是自动脱落的一样。得到的封号叫做:文化精英。然而,即便如此,依然还有被开除的,还有当仁不让地坐牢的。起因不同,却都是因为自由的缘故。

九十年代初期,在邓小平心急慌忙地南巡之后,笔者曾经尝试过以重建人文精神的方式,再起制衡专制的自由话语。孰料被一些暗中准备宽衣解带的知识分子同行们,又世故又精明地把锋芒转向了商业文明。被吵吵嚷嚷的人文精神讨论挤到一边之后,笔者发现,这个年代原来是个比赛卖笑的年代。精神的卖笑和肉体的卖笑,笑贫不笑娼。最后,是在网络上勇猛卖相的一些女孩子们胜出。这是“六四”以后的又一种效应,知识分子彻底家禽化、乃至粉头化。

九十年代以降,自由的话语,不得不诉诸坐牢和流亡这两种方式。在“五四”时期的中国,说话的自由是有保障的。在北京不能说,可以跑到上海;上海说不了,还有广州。比如鲁迅,在北京呆不下去,跑到了广州。广州不行了,又转到上海。精英们的选择,也相当自由。比如以联省自治对抗孙中山大一统狂想的陈炯明,遭到排挤之后,马上就得到陈独秀的同情和友好表示。当时的联省自治虽然还不是法定的,但已经在各个精英阶层里达成了默契,彼此心照不宣。自由的空间相当开阔,根本不需要为了说话的自由,不得不去国流亡。要不是孙中山勾结苏俄的大一统罪孽,共产党完全可能会向着陈独秀设计的议会党方向发展。就算其中有些热衷于暴力革命,也不会革命到一统天下的地步。孙中山的大一统,把中国走向联邦制的历史进程推迟了将近一个世纪、也许还不止。须知,不仅是民主的政体,即便是话语的自由,也都跟联邦制密不可分。中国不走向联邦制,永远不会有民主,永远不会有自由。按照中国历史的轮回,中国必定要回到周以前的联邦形态,虽然在一个完全不同的历史层次上。这应该成为所有向往民主向往自由的中国人的共识。

就一种历史的透视而言,站在毛泽东身后的,就是孙中山,一如从邓小平的改革回溯上去,看到的乃是曾国藩们的身影。历史有时候是对称的。一九八九年,有人再次扮演了光绪,又有人像康有为那样逃进使馆。所幸的只是,中国的民众,已经不再像光绪时代那么愚昧了。从某种意义上来说,中国民众应该感谢毛泽东。正是毛泽东,把中国民众折腾到了愚昧得不能再愚昧的地步。而愚昧一旦愚昧到了不能再愚昧,觉醒也就开始了。“六S”乃是中国民众开始觉醒的标记。作为这种觉醒的成果之一,便是一波又一波并且越来越汹涌的民间维权浪潮。中国人一旦走出毛泽东的历史阴影,那么中国历史的周孔架构就全然解构了。一个全新的人文景观,将不可阻挡地展现出来。

海外有人在装模作样的问道,谁是新中国?意思是,国民党的中国才是新中国。问题是,什么叫做新中国?这既不是共产党说了算的,也不是国民党说了算了,更不是装扮成国民党的人说了算的。新中国有三个基本指标,一是联邦,二是民主,三是话语和权力之间形成反向制衡。没有这三个指标的中国,不是新中国,而不过是周公和孔子奠定的那个旧中国:中央集权,铁板一块的大一统,话语向权力献媚、以被权力奸淫为乐。

“六S”之后,有个相当搞笑的现象,就是新加坡的李光耀,兴冲冲地一次次访问北京,一度成了座上宾。李光耀可是海外新儒家树立的一个政治样板,叫做新加坡模式。听上去就像是毛泽东时代的大寨大队和大庆油田。李光耀的骤然爆红,从北京方面固然顺理成章。要是法国的梯也尔依然健在,相信也会受到隆重的欢迎。但在李光耀的爆红后面,却隐含着一个让新儒家的学者们感到有些尴尬的命题:反不反专制的结果乃是在专制上彼此殊途同归。海外新儒家的一个主要特点,包括一些站在国民党政治立场上的学者专家在内,就是反共不反专制。他们不认同共产党不是因为共产党专制,而是专制成了共产党的特权。有的学者以此写就的文学史,以作家是不是共产党或者跟共产党的关系远近来划线。关涉到对陈寅恪的评说,他们又以反共来定位陈寅恪的思想和学术。由于北京的执政者在“六S”中耗尽了文化资源,新儒家蠢蠢欲动,好像轮到他们前去进贡思想,进贡文化了。他们以为由于毛泽东的文化大革命,大陆人真的全部变成了文盲,需要新儒家去拯救。他们哪里知道,大陆人即便学习新儒家,也会学到走私二奶的道路上去。长此以往,还会有更加搞笑的事情闹出来让新儒家难堪。新儒家的学者们更不知道的是,毛泽东虽然让大陆人吃尽了读不到书的苦头,但他们一旦读起书来,其想像力和创造力,远在新儒家的学者们之上,不管后者受过如何精良的高等教育,在美国的名牌大学里如何风光地占有一席之地。这可能也是毛泽东无意间留下的一种历史遗产。文化大革命虽然以极端的方式、暴虐的方式走到了“五四”的反面,但“五四”的历史创造精神,却并没有磨灭,依然流动在历经沧桑的中国学人的血液里。就人文学科而言,中国如许年的动荡和变化,虽然令人悲痛,却是千古未有的创造时机。

中国晚近历史上的百年激变,有几条线索是有迹可循的。一条是从洪秀全到孙中山再到毛泽东的造反有理,一条是从曾国藩到邓小平的改革开放,还有一条是从“五四”到“六S”的文化启蒙,另有一条是自《红楼梦》以降,从王国维到陈寅恪直至今日的人文精神承传。这些线索不仅清晰,而且全都有史为镜,可以跟商周之交互为参照。孔子说,温故而知新。殊不知,以不古的眼光温故,无须知新,新也已经在其中了。如此对照商周之交和百年激变,未来中国的人文景观将会自然而然地展现出来。

是为绪论。

2005年8月9日写于纽约

2008年10月14日星期二

ORACLE jdeveloper 11g放出

今日上OTN,发现正式版的ORACLE jdeveloper 11g已经放出了,可以点击这里下载,看样子好像只支持jdk1.6,功能上跟technology preview 4版的没什么大的区别,只是对web logic server的支持更好了,而且修正了好些bug。

相对于其他免费java ide(当然jdev可以通过插件的形式支持PHP开发,而且可以用于sql/plsql开发),jdev的功能是很强悍的,很适合从.net转过来的程序员学习JAVA之用(很多功能都可以通过拖放来完成,不需要写多少代码),并且开发速度很是迅速,应该不弱于vs.net。特别是对ORACLE 数据库中一些特殊的数据类型支持的很好(我说的特殊数据类型是指xmltype,geometry,etc)。并且ORACLE提供了JDEV SDK可以用于扩展JDEV,因此如果有什么特殊需求,也可以自己定制JDEV。当然由于JDEV不开源而且免费地比较晚,因此插件不是很多(准确的说叫做扩展模块)。但是相信由于ORACLE在数据库方面的优势和现在收购BEA后在中间件方面的实力,以后用JDEV的人会多起来。(嘿嘿,当然ORACLE还有一个基于eclipse的workshop,不知道他们会怎么处理两者关系。)

毕业生该怎么找互联网行业的工作?

转自fenng,原文请看这里

"小样,才参加几场招聘会就想给同学们指路啊? " 尽管有的人或这样质疑,但还是在这里唠叨几句。IT 相关毕业生应该怎么找工作?其实这个话题我真的考虑了一段时间了。

基础课程不能丢掉

操作系统、数据结构、数据库理论这些基础课程不能学过之后就丢掉,温故而知新,这些是将来找工作面试时候的基础,而不靠什么《面试宝典》打通关。(notes:当然我觉得C语言,JAVA,C++等一门或者数门编程语言对程序员也是必须的,还有编译原理也很重要。)

学校里会学到很多有用的理论,但是学到一个理论一定要尽量尝试实践一下。我曾经问一个信息安全方面的同学公钥私钥是怎么回事,然后再问自称熟悉 Linux 的他是否尝试配置过 OpenSSH ,公钥私钥对应里面的哪些东西...结果还是让我挺失望的。(话说回来,我用linux也一年了,公钥私钥这些东西也没弄过,因为毕竟不是完全做运维,所以不需要用这些。像fenng举的这个例子太不合适了。)

业余时间投入小创业团队

任何一个城市都有很多起步中的互联网公司,尽可能的加入到他们的团队中锻炼一下自己,毛遂自荐,做了就比不做要好,跑去和他们聊一下也比你窝在宿舍玩一天游戏要好得多。

一旦能够加入这样的团队,哪怕干活不要钱也值得,何况从中能接触到整个网站各个环节的东西,能够很好的开拓技术视野,这些将来都是你的财富。(i think so.或者加入一些开源社区也不错。)

Tips: 比如南京地区就有途牛 ...
积极投入一些开源软件的开发、实践中去

Sourceforge.net 上的项目一抓一大把,优秀的项目更是比比皆是。加入其中,熟悉一下版本控制、文档书写、多人协作,看看分布在全世界的牛人、准牛人的代码是怎么写的,远比给导师做的那些小作坊项目更有价值(当然,你最好不要读研究生了)。

多留心企业招聘的职位描述

恐怕很少学校会专门设置有"配置管理"、"软件测试"之类的课程,但是企业需要这样的人。那些招聘需求上怎么写的? 那就可以是你的学习目标啊!现在网络这么发达,什么学习资料找不到?
形成差异化竞争。

一个年级假定有 100 人,所有人的课程都是一样的。那么你认为和 99 人竞争 5 个岗位容易,还是 5 个人竞争一个岗位容易?

如果做不到 100 人中的 Top 5,那或许可以尝试做一下100人之外的 Top5。一些看似偏门的东西其实挺管用的,学校的课程其实只是基础,现实却是复杂的。毕竟互联网行业不只是需要写代码的人。(其实DBA,SA,QA的需求也蛮大的)

建立一个个人站点

尝试记录一些学习心得,分享更多才能发现更多,才能得到更多,也锻炼一下自己的文档写作能力。

学习一下如何写 HTML、CSS 这些看似很土的东西,实践一下 TCP/IP 相关的东西。

再写下去就老生常谈了,或许以上这几个建议对要进入 IT 行业的同学有点帮助。

这篇文章不适用于如下几类同学:

* 天才 (没毕业就一堆公司排队请的同学)
* 立志做研究的人(一心想设计出中国自己的操作系统,自认为有能力自己从头打造一个 Linux 的)
* 家里足够有银子,毕业后自己做老板去招聘别人的
* 看了以上的建议觉得完全是胡说八道的同学

南大招聘面试感受

点击这里查看原文,notes是我自己的感受。

今天发现的一个事情是,现在大学的很多计算机专业的硕士生真的被一些王八蛋导师坑了。多数硕士生的功底反而不如本科生了(无论从昨天的阅卷还是今天的面试来看),尽管可能做硕士期间做过很多项目,但那些项目基本都是用 .net 之类的东西做的,或者就是"大作业"。研究生被用来用作赚钱工具,一两年下来,以前的很多东西基本也都丢掉了。他们很无辜。(notes:好像现在高校里都在用.net平台,没什么人用JAVA EE和LAMP,上次参加SUN在学校的一个讲座,主讲人让同学们回答四个开源操作系统,都没人能答上来。用.net平台几乎就意味着和windows操作系统以及sql server数据库绑定,基本都是傻瓜式操作,没什么技术含量。大部分.net程序员水平都不怎么地。)

另外是学校研究生的课程设置,真是有些骗人了。问所有研究生的研究生课程,多数都说不明白能研究生课程的内容,有的主打课程教材就是看导师弄的 PPT ... 教课的导师根本把握不住计算机行业的脉搏,真不知道都干什么吃的去了。(notes:反正我们学校的计算机教育差的可以,老师们都太让人难以接受了,我要是他们的话就找个柱子撞死得了。不过话又说回来,老师们不忙于把握学术前沿和行业脉搏,而是忙于骗钱或者争权。很多老师连mysql,pgsql,bdb这些东西的名字都没听说过,你怎么能指望他们的学生在这些方面能有深入的造诣呢。)

我是负责运维相关部分的面试。可能有一部分同学对"系统工程师"这个岗位理解有误,都以为是开发类要写代码的岗位呢,今天拿到的简历有一大部分是这样的,遇到这样的情况其实让我挺为难的,如果简单问几句就把人打发走,肯定会被骂,可多数同学都非常不愿意做"系统工程师"这样好像"没技术含量"的事儿,所以也不能强人所难,只好尽量让负责面试开发的同事再面试一下。毕竟大家都等了半天,不容易。(notes:呵呵,小孩子嘛。)

因为之前在浙大参加招聘之后,有牛人留言表达了很不愤的反馈,我今天还特地了解了一下学生们掌握的"我工作个 20 年也学不了"的那些东西到底咋样,结果大部分的回答还是让人很失望的。就拿 Linux 来说,很多同学都说自己有几年的经验了,可实际上一个最简单的最常用的命令也没几个人说清楚的,更不要说一些概念上的东西了,至于计算机课程上的内容也都忘光了。(notes:缺乏实践经验吧,学习计算机的最好的方法就是实践,如果自己肯安装个linux没事就把弄把弄,我相信还是都能学好的。哈,我就是这么学的。当然也可以安装一个数据库玩玩。)

其实挺羡慕现在的同学们,拎着《程序员面试宝典》,搂着女朋友 ... 只羡鸳鸯不羡仙啊。(notes:fenng这话就有问题了,其实肯学习的学生还是不少,只是老师太烂,教些无聊的东西,于是乎大家便失去了对学习的兴趣。)