Quantcast
Channel: 懒得折腾
Viewing all 764 articles
Browse latest View live

Installing Hadoop 2.4 on Ubuntu 14.04

$
0
0

Installing Hadoop 2.4 on Ubuntu 14.04

Hey all,

Another of my ‘getting my new operating system set up with all the bits of kit I use’ – this time we’ll be on Hadoop (and HDFS). There’s a very strong chance that this post will end up a lot like Sean’s post – Hadoop from spare-change. If there are any differences it’ll be for these reasons three:
1.) He was using Ubuntu Server 13.04 not Ubuntu Desktop 14.04
2.) He was using Hadoop 2.2 not Hadoop 2.4
3.) He was setting up a whole bunch of nodes – I’m stuck with this oft-abused laptop

Anywho – on with the show.

Step 1:

Download Hadoop from Apache: I’ll be using this mirror but I trust that if you’re not in England, you can likely find a more suitable one:
http://mirror.ox.ac.uk/sites/rsync.apache.org/hadoop/common/hadoop-2.4.0/hadoop-2.4.0.tar.gz

If you’re trying to stick to the terminal/don’t have a GUI then go with this:

wget http://mirror.ox.ac.uk/sites/rsync.apache.org/hadoop/common/hadoop-2.4.0/hadoop-2.4.0.tar.gz

Find your way to wherever you downloaded the tar.gz file and untar it using the following command:

tar -xzf hadoop-2.4.0.tar.gz

Sorry if I’m teaching you to suck eggs – everybody has to start somewhere right?

Has it worked up till here?

Run the following command in the same directory you ran the above tar command:

ls | grep hadoop | grep -v *.gz

If there’s at least one line returned (ideally hadoop-2.4.0) then you’re good up till here.

Step 2:

Let’s move everything into a more appropriate directory:

sudo mv hadoop-2.4.0/ /usr/local
cd /usr/local
sudo ln -s hadoop-2.4.0/ hadoop

We create that link to allow us to write scripts/programs that interact with Hadoop that won’t need changing if we upgrade our Hadoop version. All we’ll do is install the new version and point the Hadoop folder to the new version instead. Ace.

Has it worked up to here?

Run this command anywhere:

whereis hadoop

If the output is:
hadoop: /usr/local/hadoop
you may proceed.

Step 3:

Righty, now we’ll be setting up a new user and permissions and all that guff. I’ll steal directly from Michael Noll’s tutorial here and go with:

sudo addgroup hadoop
sudo adduser --ingroup hadoop hduser
sudo adduser hduser sudo
sudo chown -R hduser:hadoop /usr/local/hadoop/

Has it worked up to here?

Type:

ls -l /home/ | grep hadoop

If you see a line then you’re in the money.

Step 4:

SSH is a biggy – possibly not so much for the single node tutorial but when we were setting up our first cluster, SSH problems probably accounted for about 90% of all head-scratching with the remaining 10% being nits.


su - hduser
sudo apt-get install ssh
ssh-keygen -t rsa -P ""
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

So we switch to our newly created user, generate an SSH key and get it added to our authorized keys. Unfortunately, Hadoop and ipv6 don’t play nice so we’ll have to disable it – to do this you’ll need to open up /etc/sysctl.conf and add the following lines to the end:


net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Fair warning – you’ll need sudo privileges to modify the file so might want to open up your file editor like this:

sudo apt-get install gksu
gksu gedit /etc/sysctl.conf

If you’re set on using terminal then this’ll do it:

echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf

Rumour has it that at this point you can run
sudo service networking restart
and kapeesh – ipv6 is gone. However, Atheros and Ubuntu seem to have a strange sort of ‘not working’ thing going on and so that command doesn’t work with my wireless driver. If the restart fails, just restart the computer and you should be good.

(if you’re terminal only : sudo shutdown -r now )

Has it worked up to here?

If you’re stout of heart, attempt the following:

su - hduser
ssh localhost

If that’s worked you be greeted with a message along the lines of ‘Are you sure you want to continue connecting?’ The answer you’re looking for at this point is ‘yes’.

If it hasn’t worked at this point run the following command:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6

If the value returned is 0 then you’ve still not got ipv6 disabled – have a re-read of that section and see if you’ve missed anything.

Step 5:
I’m going to assume a clean install of Ubuntu on your machine (because that’s what I’ve got) – if this isn’t the case, it’s entirely likely you’ll already have Java installed. If so, find your JAVA_HOME (lots of tutorials on this online) and use that for the upcoming instructions. I’m going to be installing Java from scratch:

sudo apt-get update
sudo apt-get install default-jdk

Given a bit of luck, you’ll now have Java on your computer (I do on mine) and you’ll be able to set your environment variables. Open up your bashrc file:

su - hduser
gksu gedit .bashrc

and add the following lines:

export HADOOP_HOME=/usr/local/hadoop
export JAVA_HOME=/usr

and follow up with this command:
source ~/.bashrc

If you’ve deviated from any of the instructions above, those lines are likely to be different. You can find what your java home should be by running the following command:
which java | sed -e 's/\(.*\)\/bin\/java/\1/g'

Your Hadoop home will be wherever you put it in step 2.

Has it worked up to here?

So many different ways to test – let’s run our first Hadoop command:

/usr/local/hadoop/bin/hadoop version

If that worked with no error (and gave you your Hadoop version) then you’re laughing.

Step 6:

Configuration of Hadoop (and associated bits and bobs) – we’re going to be editing a bunch of files so pick your favourite file editor and get to work. First things first though, you’re going to want some place for HDFS to save your files. If you’ve going to be storing anything big/bought external storage for this purpose now is the time to deviate from this tutorial. Otherwise, this should do it:


su - hduser
mkdir /usr/local/hadoop/data

Now for the file editing:

(only necessary when running a multi-node cluster, but let’s do it in case we ever get more nodes to add)
1.) /usr/local/hadoop/etc/hadoop/hadoop-env.sh
Change export JAVA_HOME=${JAVA_HOME} to match the JAVA_HOME you set in your bashrc (for us JAVA_HOME=/usr).
Also, change this line:
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true
to be

export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.library.path=$HADOOP_PREFIX/lib"

And finally, add the following line:
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native

2.) /usr/local/hadoop/etc/hadoop/yarn-env.sh
Add the following lines:

export HADOOP_CONF_LIB_NATIVE_DIR=${HADOOP_PREFIX:-"/lib/native"}
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"

3.) /usr/local/hadoop/etc/hadoop/core-site.xml
Change the whole file so it looks like this:

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:9000</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/usr/local/hadoop/data</value>
</property>
</configuration>

4.) /usr/local/hadoop/etc/hadoop/mapred-site.xml
Change the whole file so it looks like this:

1
2
3
4
5
6
7
8
9
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

5.) /usr/local/hadoop/etc/hadoop/hdfs-site.xml
Change the whole file so it looks like this:

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>

6.) /usr/local/hadoop/etc/hadoop/yarn-site.xml
Change the whole file so it looks like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0"?>
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>localhost:8025</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>localhost:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>localhost:8050</value>
    </property>
</configuration>

Annnd we’re done :) Sorry about that – if I could guarantee that you’d be using the same file paths and OS as me then I’d let you wget those files from a Github somewhere but alas, I think that’s likely to cause more headaches than it solves. Don’t worry, we’re nearly there now :)

Has it worked up to here?

Run the following command:

/usr/local/hadoop/bin/hadoop namenode -format

If that works, you’re 20% of the way there.

Then, run:

/usr/local/hadoop/sbin/start-dfs.sh

If that seems to work without throwing up a bunch of errors:

/usr/local/hadoop/sbin/start-yarn.sh

If that’s worked, you can safely say you’ve got Hadoop running on your computer :)Get it on the LinkedIn as a strength as soon as possible ;)

Conclusion
Now you’ve got Hadoop up and running on your computer, what can you do? Well, unfortunately with that single node and single hard disk, not much you couldn’t have done without it. However, if you’re just getting started with Linux and Hadoop you’ll have hopefully learnt a bit on the way to setting up your cluster.



[Hadoop学习]Hadoop集群安装

$
0
0

[Hadoop学习]Hadoop集群安装

分类: Hadoop 安装文档 云GIS 2068人阅读 评论(0) 收藏 举报

关于Hadoop,是目前比较热的一个话题,从事IT行业的人自然需要对它进行研究,有关Hadoop的介绍,网上都非常详细,也非常专业,关于hadoop集群的安装配置,网上也有非常多,虽然例子比较多,但是我还是一步步的进行了安装和学习,自然在安装过程中遇到了不少问题,记录下来,毕竟看别人的东西不如自己写的来的深刻,就算是对hadoop的又一次认识和以后的参考吧。

  Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。

对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。

先说一下软件的下载地址

Hadoop:hadoop-1.2.0.tar.gz

http://www.apache.org/dyn/closer.cgi/hadoop/common/

说明:hadoop1.x版本与目前2.x版本的文件结构都不太一样,甚至有些命令都有所变化,所以在学习过程中用户看到的已经成熟的例子都是1.x版本的

比如配置文件中:

1.x:$HADOOP_HOME/conf/

2.x:$HADOOP_HOME/etc/hadoop/

1.x有master配置文件,2.x我却没有找到

所以一开始我安装的是2.x版本,在安装过程中出现很多问题,因为是初学,所以就为了先安装好在学习的原则,选择了1.x版本。
JDK:jdk-7u25-linux-x64.tar.gz

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

首先说明一下:因为我是在VM虚拟机下进行测试的,所以只需要先安装好一台机器后作为namenode,然后Clone出多台机器作为datanode即可,当然clone之后还有许多细节方面的东西,下面我都会一一说明,如果是真机安装部署,就需要特别注意,N台机器的操作系统、创建用户、密码、文件夹和文件权限等都需要保持一致,这样也很好理解,鉴于hadoop的一个namenode和N个datanode的机制,如果某个datanode宕机的话,不影响其他datanode功能,所以所有的datanode环境一致的话就不会出现那么多乱七八糟的问题。

说明,以下会说到datanode、tasktracker、master等,这里说说我的理解

HDFS角度:namenode,物理上:master,逻辑上的:jobtracker,其实这里都是一个机器,就是管理的机器

HDFS角度:datanode、物理上:slave,逻辑上的:tasktracker,其实这里指向的N个工作机器的一个,就是干活的机器

——————————————————————**************************分割线*****************************

———————————————————————————————–

安装环境结构如下:

从上面可以看出,我的hadoop集群是一个namenode节点,三个datanode节点。

各个机器的防火墙都需要关闭

从上面看jdk和hadoop的软件肯定不可少的,创建一个hadoop用户(/home/hadoop),将hadoop软件安装在该用户下,配置相关的环境变量。安装jdk,配置环境变量。

root用户下的环境变量

  1. export JAVA_HOME=/home/jdk/jdk1.7.0_25
  2. export PATH=$JAVA_HOME/bin:$PATH
  3. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib

hadoop用户下的环境变量

  1. export JAVA_HOME=/home/jdk/jdk1.7.0_25
  2. export PATH=$JAVA_HOME/bin:$PATH
  3. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib
  4. #Hadoop
  5. export HADOOP_HOME=/home/hadoop/hadoop-1.2.0
  6. export HIVE_HOME=/home/hadoop/hive-0.11.0
  7. export HADOOP_HOME_WARN_SUPPRESS=1
  8. export PATH=$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin
  9. ~

关于jdk和hadoop的安装就不说了,就是一个解压缩命令——————————————————————

**************************分割线*****************************

———————————————————————————————–
安装完毕后,就是需要修改配置文件了

1:$HADOOP_HOME/conf/hadoop-env.sh

添加jdk的环境变量

  1. export JAVA_HOME=/home/jdk/jdk1.7.0_25

2:$HADOOP_HOME/conf/core-site.xml
配置的是HDFS的地址和端口号

  1. <configuration>
  2. <property>
  3. <name>hadoop.tmp.dir</name>
  4. <value>/home/hadoop/hadoop-1.2.0/tmp</value>
  5. </property>
  6. <property>
  7. <name>fs.default.name</name>
  8. <value>hdfs://192.168.100.203:9000</value>
  9. </property>
  10. </configuration>

注意:默认是没有tmp文件夹的,需要自己创建。而且注意XML节点的开始和结束

3:$HADOOP_HOME/conf/hdfs-site.xml

  1. <configuration>
  2. <property>
  3. <name>dfs.replication</name>
  4. <value>1</value>
  5. </property>
  6. </configuration>

注意:配置的备份方式默认为3,replication 是数据副本数量,默认为3,datanode少于3台就会报错

4:$HADOOP_HOME/conf/mapred-site.xml
配置的是JobTracker的地址和端口说明:hadoop2.x没有mapred-site.xml只有mapred-site.xml.template,用户需要复制一份模板

  1. <configuration>
  2. <property>
  3. <name>mapred.job.tracker</name>
  4. <value>http://192.168.100.203:9001</value>
  5. </property>
  6. </configuration>

配置参数列表

参数 描述  默认  配置文件 例子值
dfs.name.dir name node的元数据,以,号隔开,hdfs会把元数据冗余复制到这些目录,一般这些目录是不同的块设备,不存在的目录会被忽略掉 {hadoop.tmp.dir}

/dfs/name

hdfs-site.xm /hadoop/hdfs/name
dfs.name.edits.dir  node node的事务文件存储的目录,以,号隔开,hdfs会把事务文件冗余复制到这些目录,一般这些目录是不同的块设备,不存在的目录会被忽略掉  ${dfs.name.dir} hdfs-site.xm ${dfs.name.dir}
 fs.checkpoint.dir secondary NameNode的元数据以,号隔开,hdfs会把元数据冗余复制到这些目录,一般这些目录是不同的块设备,不存在的目录会被忽略掉 ${hadoop.tmp.dir}

/dfs/namesecondary

core-site.xml /hadoop/hdfs/namesecondary
 fs.checkpoint.edits.dir secondary NameNode的事务文件存储的目录,以,号隔开,hdfs会把事务文件冗余复制到这些目录 ${fs.checkpoint.dir} core-site.xml ${fs.checkpoint.dir}
hadoop.tmp.dir 临时目录,其他临时目录的父目录 /tmp/hadoop-${user.name} core-site.xml /hadoop/tmp/hadoop-${user.name}
dfs.data.dir data node的数据目录,以,号隔开,hdfs会把数据存在这些目录下,一般这些目录是不同的块设备,不存在的目录会被忽略掉 ${hadoop.tmp.dir}

/dfs/data

hdfs-site.xm /hadoop/hdfs/data1/data,

/hadoop/hdfs/data2/data

mapred.local.dir MapReduce产生的中间数据存放目录,以,号隔开,hdfs会把数据存在这些目录下,一般这些目录是不同的块设备,不存在的目录会被忽略掉 ${hadoop.tmp.dir}

/mapred/local

mapred-site.xml /hadoop/hdfs/data1/mapred/local,

/hadoop/hdfs/data2/mapred/local

mapred.system.dir MapReduce的控制文件 ${hadoop.tmp.dir}

/mapred/system

mapred-site.xml /hadoop/hdfs/data1/system

5:$HADOOP_HOME/conf/masters

配置namenode机器说明:尽量使用IP,hadoop2.x没有masters文件

  1. [hadoop@namenode conf]$ more masters
  2. 192.168.100.203

6:$HADOOP_HOME/conf/slaves
配置datanode机器,只有namenode机器才适用

  1. [hadoop@namenode conf]$ more slaves
  2. 192.168.100.204
  3. 192.168.100.205
  4. 192.168.100.206

如果截至到现在,一台机器上的基本软件已经安装完毕了,我么可以使用scp命令将jdk、hadoop安装目录拷贝到各个datanode机器上,然后配置好相关的环境变量即可,参考第一台机器的环境变量,相关路径都要一致。参考命令:

  1. scp -r  /home/hadoop/hadoop-1.2.0 hadoop@192.168.100.204:/home/hadoop/

简单说明:scp命令是将一台机器的文件或者文件夹拷贝到另外一台机器的命令因为拷贝的是203的hadoop-1.2.0文件夹,所以需要添加-r参数,将这个文件夹拷贝到204的hadoop用户下的/home/hadoop文件下。

其他注意的:如果四台机器都完成,需要修改每台机器的/etc/hosts,添加四台机器的IP和对应机器名

  1. [root@namenode ~]# more /etc/hosts
  2. #127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  3. #::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. 192.168.100.203 namenode.com
  5. 192.168.100.204 datanode1.com
  6. 192.168.100.205 datanode2.com
  7. 192.168.100.206 datanode3.com

——————————————————————**************************分割线*****************************

——————————————————————

剩下的就是将一台namenode机器与三台datanode机器进行相互的无密码访问。SSH无密码访问

  1. Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。

相关原理

  1. Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。

需要安装的和启动SSH协议

  1. rpm –qa | grep openssh
  2. rpm –qa | grep rsync


以上面为例,我们假设要进行203机器与204机器的ssh无密码访问

1:验证203本身ssh自己

a:203机器hadoop用户使用ssh-keygen -t rsa -P ”命令

执行命令后,在hadoop的根目录下/home/hadoop生成一个隐藏文件.ssh,里面有两个文件

id_rsa,id_rsa.pub

b:我们需要使用cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys,生成这个文件,其实就是使用              这个文件进行无密码的连接访问的

特别注意:/home/hadoop文件夹的权限不能是777,我试过报错,建议755

/home/hadoop/.ssh文件夹的权限是700

/home/hadoop/.ssh/authorized_keys文件的权限必须为600

c:执行完后,需要切换到root用户下,修改/etc/ssh/sshd_config文件

  1. RSAAuthentication yes
  2. PubkeyAuthentication yes
  3. AuthorizedKeysFile .ssh/authorized_keys

将前面的#去掉d:重新启动ssh服务  service sshd restart

e:验证连接

  1. [hadoop@namenode ~]$ ssh 192.168.100.203
  2. Last login: Tue Jun 25 22:15:20 2013 from 192.168.100.111

以上因为我是在我本机putty连接虚拟机,所以会显示我本机的IP,不过这不重要,重要的是连接后不需要输入密码,如果需要输入密码,还是说明连接的有问题。简单调试:

查看ssh 登录的详细信息:ssh -v localhost
用root查询系统登录日志:$tail /var/log/secure -n 20

参考上面步骤,再看看上面的图,基本上就很容易理解了

2:203ssh连接204

a:同样的方法,204机器首先可以ssh连接自己

b:将203生成的id_rsa.pub,拷贝到204机器上,然后使用

cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys

说明:如果做了a步骤,里面已经有一个连接204的key值了,那么使用这个又生成了一个203连接204的key值,都放在一个文件里面是否可行,当然没有问题,因为我们使用“>>”(添加的)

c:测试连接

3:204ssh连接203

a:将204生成的id_rsa.pub文件拷贝到203,同样的命令,生成相关key即可

然后同样的方法,达到203相互连接204、205、206机器都可以无密码访问。这个如果没有做过的一开始比较繁杂,其实过程比较简单,只要理清流程就很容易了。

——————————————————————

**************************分割线*****************************

———————————————————————————————–

启动和验证hadoop

1:格式化HDFS文件系统:hadoop namenode -format

  1. [hadoop@namenode ~]$ hadoop namenode -format
  2. 13/06/26 00:21:20 INFO namenode.NameNode: STARTUP_MSG:
  3. /************************************************************
  4. STARTUP_MSG: Starting NameNode
  5. STARTUP_MSG:   host = namenode.com/192.168.100.203
  6. STARTUP_MSG:   args = [-format]
  7. STARTUP_MSG:   version = 1.2.0
  8. STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/c                                                                                                                             ommon/branches/branch-1.2 -r 1479473; compiled by ‘hortonfo’ on                                                                                                                              Mon May  6 06:59:37 UTC 2013
  9. STARTUP_MSG:   java = 1.7.0_25
  10. ************************************************************/
  11. Re-format filesystem in /home/hadoop/hadoop-1.2.0/tmp/dfs/name ?                                                                                                                              (Y or N) y
  12. Format aborted in /home/hadoop/hadoop-1.2.0/tmp/dfs/name
  13. 13/06/26 00:21:26 INFO namenode.NameNode: SHUTDOWN_MSG:
  14. /************************************************************
  15. SHUTDOWN_MSG: Shutting down NameNode at namenode.com/192.168.100.203
  16. ************************************************************/

说明:因为我的HDFS已经格式化过,所以初次格式化的信息可能与以上不太一样

2:启动hadoop:start-all.sh

  1. [hadoop@namenode bin]$ ./start-all.sh
  2. starting namenode, logging to /home/hadoop/hadoop-1.2.0/libexec/../logs/hadoop-hadoop-namenode-namenode.com.out
  3. 192.168.100.204: starting datanode, logging to /home/hadoop/hadoop-1.2.0/libexec/../logs/hadoop-hadoop-datanode-datanode1.com.out
  4. 192.168.100.205: starting datanode, logging to /home/hadoop/hadoop-1.2.0/libexec/../logs/hadoop-hadoop-datanode-datanode2.com.out
  5. 192.168.100.206: starting datanode, logging to /home/hadoop/hadoop-1.2.0/libexec/../logs/hadoop-hadoop-datanode-datanode3.com.out
  6. 192.168.100.203: starting secondarynamenode, logging to /home/hadoop/hadoop-1.2.0/libexec/../logs/hadoop-hadoop-secondarynamenode-namenode.com.out
  7. starting jobtracker, logging to /home/hadoop/hadoop-1.2.0/libexec/../logs/hadoop-hadoop-jobtracker-namenode.com.out
  8. 192.168.100.205: starting tasktracker, logging to /home/hadoop/hadoop-1.2.0/libexec/../logs/hadoop-hadoop-tasktracker-datanode2.com.out
  9. 192.168.100.206: starting tasktracker, logging to /home/hadoop/hadoop-1.2.0/libexec/../logs/hadoop-hadoop-tasktracker-datanode3.com.out
  10. 192.168.100.204: starting tasktracker, logging to /home/hadoop/hadoop-1.2.0/libexec/../logs/hadoop-hadoop-tasktracker-datanode1.com.out

Hadoop验证1:jps在namenode执行

  1. [hadoop@namenode ~]$ jps
  2. 5387 ResourceManager
  3. 8700 SecondaryNameNode
  4. 8921 Jps
  5. 8779 JobTracker
  6. 8539 NameNode

在datanode执行

  1. [hadoop@namenode ~]$ ssh 192.168.100.204
  2. Last login: Tue Jun 25 18:24:54 2013 from namenode.com
  3. [hadoop@datanode1 ~]$
  4. [hadoop@datanode1 ~]$ jps
  5. 5571 TaskTracker
  6. 5477 DataNode
  7. 5683 Jps

Hadoop验证2:hadoop dfsadmin -report

  1. [hadoop@namenode ~]$ hadoop dfsadmin -report
  2. Configured Capacity: 81075068928 (75.51 GB)
  3. Present Capacity: 74696994816 (69.57 GB)
  4. DFS Remaining: 74696896512 (69.57 GB)
  5. DFS Used: 98304 (96 KB)
  6. DFS Used%: 0%
  7. Under replicated blocks: 0
  8. Blocks with corrupt replicas: 0
  9. Missing blocks: 0
  10. ————————————————-
  11. Datanodes available: 3 (3 total, 0 dead)
  12. Name: 192.168.100.206:50010
  13. Decommission Status : Normal
  14. Configured Capacity: 27025022976 (25.17 GB)
  15. DFS Used: 28687 (28.01 KB)
  16. Non DFS Used: 2105032689 (1.96 GB)
  17. DFS Remaining: 24919961600(23.21 GB)
  18. DFS Used%: 0%
  19. DFS Remaining%: 92.21%
  20. Last contact: Wed Jun 26 00:27:56 EDT 2013
  21. Name: 192.168.100.205:50010
  22. Decommission Status : Normal
  23. Configured Capacity: 27025022976 (25.17 GB)
  24. DFS Used: 40945 (39.99 KB)
  25. Non DFS Used: 2105024527 (1.96 GB)
  26. DFS Remaining: 24919957504(23.21 GB)
  27. DFS Used%: 0%
  28. DFS Remaining%: 92.21%
  29. Last contact: Wed Jun 26 00:27:56 EDT 2013
  30. Name: 192.168.100.204:50010
  31. Decommission Status : Normal
  32. Configured Capacity: 27025022976 (25.17 GB)
  33. DFS Used: 28672 (28 KB)
  34. Non DFS Used: 2168016896 (2.02 GB)
  35. DFS Remaining: 24856977408(23.15 GB)
  36. DFS Used%: 0%
  37. DFS Remaining%: 91.98%
  38. Last contact: Wed Jun 26 00:27:56 EDT 2013

同样,也可以使用网页的形式来查看信息

访问”http:192.168.100.203:50030″
访问”http:192.168.100.203:50070″

Hadoop默认端口和描述

 

端口

描述

50030 mapred.job.tracker.http.address
JobTracker administrative web GUI JOBTRACKER的HTTP服务器和端口
50070 dfs.http.address

NameNode administrative web GUI NAMENODE的HTTP服务器和端口

50010  dfs.datanode.address
DataNode control port (each DataNode listens on this port and registers it with the  NameNode on startup) DATANODE控制端口,主要用于DATANODE初始化时向NAMENODE提出注册和应答请求

50020         
dfs.datanode.ipc.address
DataNode IPC port, used for block transfer DATANODE的RPC服务器地址和端口
50060      mapred.task.tracker.http.address

Per TaskTracker web interface TASKTRACKER的HTTP服务器和端口


50075         
dfs.datanode.http.address                 Per DataNode web interface DATANODE的HTTP服务器和端口
50090     dfs.secondary.http.address
Per secondary NameNode web interface 辅助DATANODE的HTTP服务器和端口

以上就是安装Hadoop的全过程,安装过程很简单,其实还没有体现多少hadoop的知识,更多的是linux的知识,但是通过安装后的分析,是一个很好的例子来为我们学习hadoop的架构、工作原理等。

http://blog.csdn.net/linghe301/article/details/9184453


[Hadoop学习]Esri/gis-tools-for-hadoop介绍

$
0
0

[Hadoop学习]Esri/gis-tools-for-hadoop介绍

分类: Hadoop ArcGIS小工具 3871人阅读 评论(1) 收藏 举报

上一篇,我们已经将Hadoop环境搭建好了,今天我们就根据Esri提供的gis-tools-for-hadoop来切身体会一下Hadoop的工作原理以及Hadoop与GIS的初次约会。

相关环境:

Esri/gis-tools-for-hadoop:https://github.com/Esri/gis-tools-for-hadoop

  • Sample tools that demonstrate full stack implementations of all the resources provided to solve GIS problems using Hadoop
  • Templates for building custom tools that solve specific problems

GIS Tools Breakdown

Resources for building custom tools

hive-0.11.0:http://www.apache.org/dyn/closer.cgi/hive/

在使用Esri提供的工具之前,我们需要安装HIVE

  1. hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

HIVE是Facebook贡献的,比较类似于MySQL的语法,其实经常使用数据库SQL语句的基本都不陌生,这也是Hive项目研究的原因,因为SQL的用户群太广泛了。——————————————————————

**************************分割线*****************************

———————————————————————————————–
安装Hive跟Hadoop一样,就是一个解压缩命令,而且只需要安装在namenode机器上(master)

安装完毕之后,需要配置相关文件

1:安装HIVE在hadoop用户下安装,确保hadoop用户对hive文件夹有权限

  1. drwxrwxr-x. 10 hadoop hadoop     4096 Jun 25 18:55 hive-0.11.0

2:我们需要将Hadoop和JDK的环境变量添加到如下文件中:

/home/hadoop/hive-0.11.0/conf/hive-env.sh
/home/hadoop/hive-0.11.0/bin/hive-config.sh

3:需要将HIVE_HOME的信息添加到hadoop用户的环境变量中

  1. export JAVA_HOME=/home/jdk/jdk1.7.0_25
  2. export PATH=$JAVA_HOME/bin:$PATH
  3. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib
  4. #Hadoop
  5. export HADOOP_HOME=/home/hadoop/hadoop-1.2.0
  6. export HIVE_HOME=/home/hadoop/hive-0.11.0
  7. export HADOOP_HOME_WARN_SUPPRESS=1
  8. export PATH=$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin
  9. export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib

4:默认情况下$HIVE_HOME/conf下面没有hive-default.xml、hive-site.xml文件,只有hive-default.xml.template文件,使用cp命令复制一份即可

  1. [hadoop@namenode conf]$ cp hive-default.xml.template hive-default.xml
  2. [hadoop@namenode conf]$ cp hive-default.xml.template hive-site.xml
  3. [hadoop@namenode conf]$ ll
  4. total 248
  5. -rw-rw-r–. 1 hadoop hadoop 75005 Jun 26 02:19 hive-default.xml
  6. -rw-rw-r–. 1 hadoop hadoop 75005 May 11 12:06 hive-default.xml.template
  7. -rw-rw-r–. 1 hadoop hadoop  2714 Jun 26 02:34 hive-env.sh
  8. -rw-rw-r–. 1 hadoop hadoop  2378 May 11 12:06 hive-env.sh.template
  9. -rw-rw-r–. 1 hadoop hadoop  2465 May 11 12:06 hive-exec-log4j.properties.template
  10. -rw-rw-r–. 1 hadoop hadoop  2941 Jun 26 02:38 hive-log4j.properties
  11. -rw-rw-r–. 1 hadoop hadoop  2870 May 11 12:06 hive-log4j.properties.template
  12. -rw-rw-r–. 1 hadoop hadoop 75005 Jun 26 02:19 hive-site.xml

5:用户可以修改warehouse的默认路径,修改$HIVE_HOME/conf/hive-site.xml,该文件比较大

  1. <property>
  2.   <name>hive.metastore.warehouse.dir</name>
  3.   <value>/user/hive/warehouse</value>
  4.   <description>location of default database for the warehouse</description>
  5. </property>

测试hive

  1. [hadoop@namenode ~]$ hive
  2. Logging initialized using configuration in file:/home/hadoop/hive-0.11.0/conf/hive-log4j.properties
  3. Hive history file=/tmp/hadoop/hive_job_log_hadoop_4317@namenode.com_201306261028_23687925.txt
  4. hive>

——————————————————————

**************************分割线*****************************

———————————————————————————————–
Esri的gis-tools-for-hadoop介绍

  1. [hadoop@namenode samples]$ ll
  2. total 20
  3. drwxr-xr-x. 4 hadoop hadoop 4096 Jun 26 04:54 data
  4. drwxr-xr-x. 2 hadoop hadoop 4096 Jun 26 04:54 lib
  5. drwxr-xr-x. 2 hadoop hadoop 4096 Jun 26 05:30 point-in-polygon-aggregation-hive
  6. drwxr-xr-x. 5 hadoop hadoop 4096 Jun 26 04:54 point-in-polygon-aggregation-mr
  7. -rw-r–r–. 1 hadoop hadoop   98 Jun 26 04:54 README.md

里面有data文件夹,包含一个地震数据(csv)和美国州立数据(json)

  1. [hadoop@namenode data]$ ll
  2. total 556
  3. drwxr-xr-x. 2 hadoop hadoop   4096 Jun 26 04:54 counties-data
  4. drwxr-xr-x. 2 hadoop hadoop   4096 Jun 26 04:54 earthquake-data
  5. -rw-r–r–. 1 hadoop hadoop 560721 Jun 26 04:54 samples.gdb.zip

lib文件夹里面是非常重要的两个Jar包

  1. [hadoop@namenode lib]$ ll
  2. total 908
  3. -rw-r–r–. 1 hadoop hadoop 794165 Jun 26 04:54 esri-geometry-api.jar
  4. -rw-r–r–. 1 hadoop hadoop 135121 Jun 26 04:54 spatial-sdk-hadoop.jar

point-in-polygon…-hive文件里面有一个SQL文件,该文件非常详细介绍了使用步骤

  1. [hadoop@namenode point-in-polygon-aggregation-hive]$ ll
  2. total 8
  3. -rw-r–r–. 1 hadoop hadoop 3195 Jun 26 04:54 README.md
  4. -rw-r–r–. 1 hadoop hadoop 1161 Jun 26 04:54 run-sample.sql

point-in-polygon…-mr里面有关于使用java开发hadoop的源代码

  1. [hadoop@namenode point-in-polygon-aggregation-mr]$ ll
  2. total 28
  3. -rw-r–r–. 1 hadoop hadoop 4885 Jun 26 04:54 aggregation-sample.jar
  4. -rw-r–r–. 1 hadoop hadoop 1012 Jun 26 04:54 build.xml
  5. drwxr-xr-x. 2 hadoop hadoop 4096 Jun 26 04:54 cmd
  6. drwxr-xr-x. 2 hadoop hadoop 4096 Jun 26 04:54 gp
  7. -rw-r–r–. 1 hadoop hadoop 1913 Jun 26 04:54 README.md
  8. drwxr-xr-x. 3 hadoop hadoop 4096 Jun 26 04:54 src

——————————————————————

**************************分割线*****************************

———————————————————————————————–
在执行相关SQL之前,需要将数据导入到HDFS里面,我们不能使用Linux系统的cp和mv来执行,必须使用hadoop自带的工具来完成

  1. [hadoop@namenode ~]$ hadoop fs
  2. Usage: java FsShell
  3.            [-ls <path>]
  4.            [-lsr <path>]
  5.            [-du <path>]
  6.            [-dus <path>]
  7.            [-count[-q] <path>]
  8.            [-mv <src> <dst>]
  9.            [-cp <src> <dst>]
  10.            [-rm [-skipTrash] <path>]
  11.            [-rmr [-skipTrash] <path>]
  12.            [-expunge]
  13.            [-put <localsrc> ... <dst>]
  14.            [-copyFromLocal <localsrc> ... <dst>]
  15.            [-moveFromLocal <localsrc> ... <dst>]
  16.            [-get [-ignoreCrc] [-crc] <src> <localdst>]
  17.            [-getmerge <src> <localdst> [addnl]]
  18.            [-cat <src>]
  19.            [-text <src>]
  20.            [-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>]
  21.            [-moveToLocal [-crc] <src> <localdst>]
  22.            [-mkdir <path>]
  23.            [-setrep [-R] [-w] <rep> <path/file>]
  24.            [-touchz <path>]
  25.            [-test -[ezd] <path>]
  26.            [-stat [format] <path>]
  27.            [-tail [-f] <file>]
  28.            [-chmod [-R] <MODE[,MODE]… | OCTALMODE> PATH…]
  29.            [-chown [-R] [OWNER][:[GROUP]] PATH…]
  30.            [-chgrp [-R] GROUP PATH…]
  31.            [-help [cmd]]
  32. Generic options supported are
  33. -conf <configuration file>     specify an application configuration file
  34. -D <property=value>            use value for given property
  35. -fs <local|namenode:port>      specify a namenode
  36. -jt <local|jobtracker:port>    specify a job tracker
  37. -files <comma separated list of files>    specify comma separated files to be copied to the map reduce cluster
  38. -libjars <comma separated list of jars>    specify comma separated jar files to include in the classpath.
  39. -archives <comma separated list of archives>    specify comma separated archives to be unarchived on the compute machines.
  40. The general command line syntax is
  41. bin/hadoop command [genericOptions] [commandOptions]

1:将数据导入到hdfs

  1. [hadoop@namenode ~]$ hadoop fs -put /home/hadoop/gis-tools-for-hadoop-master/samples/  /home/hadoop/hadoop-1.2.0/tmp/

以上就是使用-put将原来物理存储在/home/hadoop/gis-tools-for-hadoop-master/samples/ 文件夹里面的信息,导入到/home/hadoop/hadoop-1.2.0/tmp/里面。导入进去之后,我们可以在任意datanode节点机器看到很多碎文件

  1. [hadoop@datanode1 current]$ pwd
  2. /home/hadoop/hadoop-1.2.0/tmp/dfs/data/current
  3. [hadoop@datanode1 current]$ ll
  4. total 7052
  5. -rw-rw-r–. 1 hadoop hadoop      98 Jun 26 06:12 blk_2562006058303613171
  6. -rw-rw-r–. 1 hadoop hadoop      11 Jun 26 06:12 blk_2562006058303613171_1050.meta
  7. -rw-rw-r–. 1 hadoop hadoop  560721 Jun 26 06:12 blk_3056013857537171121
  8. -rw-rw-r–. 1 hadoop hadoop    4391 Jun 26 06:12 blk_3056013857537171121_1052.meta
  9. -rw-rw-r–. 1 hadoop hadoop    2047 Jun 26 06:12 blk_3813361044238402711
  10. -rw-rw-r–. 1 hadoop hadoop      23 Jun 26 06:12 blk_3813361044238402711_1063.meta
  11. -rw-rw-r–. 1 hadoop hadoop    2060 Jun 26 06:12 blk_5126515286091847995
  12. -rw-rw-r–. 1 hadoop hadoop      27 Jun 26 06:12 blk_5126515286091847995_1064.meta
  13. -rw-rw-r–. 1 hadoop hadoop  794165 Jun 26 06:12 blk_5144324295121310544
  14. -rw-rw-r–. 1 hadoop hadoop    6215 Jun 26 06:12 blk_5144324295121310544_1055.meta
  15. -rw-rw-r–. 1 hadoop hadoop    1913 Jun 26 06:12 blk_7055687596152865845
  16. -rw-rw-r–. 1 hadoop hadoop      23 Jun 26 06:12 blk_7055687596152865845_1062.meta
  17. -rw-rw-r–. 1 hadoop hadoop 5742811 Jun 26 06:12 blk_7385460214599207016
  18. -rw-rw-r–. 1 hadoop hadoop   44875 Jun 26 06:12 blk_7385460214599207016_1053.meta
  19. -rw-rw-r–. 1 hadoop hadoop    1045 Jun 26 06:12 blk_-787033794569559952
  20. -rw-rw-r–. 1 hadoop hadoop      19 Jun 26 06:12 blk_-787033794569559952_1056.meta
  21. -rw-rw-r–. 1 hadoop hadoop    3195 Jun 26 06:12 blk_8646433984325059766
  22. -rw-rw-r–. 1 hadoop hadoop      35 Jun 26 06:12 blk_8646433984325059766_1048.meta
  23. -rw-rw-r–. 1 hadoop hadoop     772 Jun 26 06:12 dncp_block_verification.log.curr
  24. -rw-rw-r–. 1 hadoop hadoop     159 Jun 26 03:30 VERSION

2:列出HDFS文件

  1. [hadoop@namenode ~]$ hadoop fs -ls /home/hadoop/hadoop-1.2.0/tmp/
  2. Found 6 items
  3. -rw-r–r–   1 hadoop supergroup         98 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/README.md
  4. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/data
  5. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/lib
  6. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:38 /home/hadoop/hadoop-1.2.0/tmp/mapred
  7. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/point-in-polygon-aggregation-hive
  8. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/point-in-polygon-aggregation-mr

3:列出HDFS目录下某个文档中的文件

  1. [hadoop@namenode ~]$ hadoop fs -ls input /home/hadoop/hadoop-1.2.0/tmp/data
  2. ls: Cannot access input: No such file or directory.
  3. Found 3 items
  4. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/data/counties-data
  5. drwxr-xr-x   – hadoop supergroup          0 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/data/earthquake-data
  6. -rw-r–r–   1 hadoop supergroup     560721 2013-06-26 09:30 /home/hadoop/hadoop-1.2.0/tmp/data/samples.gdb.zip

4:查看HDFS目录下某个文档文件的内容

  1. hadoop fs -cat  input /home/hadoop/hadoop-1.2.0/tmp/data/earthquake-data/earthquake.csv

5:删除HDFS目录下的文档

  1. hadoop fs –rmr /home/hadoop/hadoop-1.2.0/tmp/data

说明:进入HDFS里面的文件夹结构后,就不能使用Linux的命令比如查看某个文档下的文件不能使用ls,或者cd到某个路径下

使用上面的方法可以验证用户的数据是否上传到HDFS上面去。

——————————————————————

**************************分割线*****************************

———————————————————————————————–

接下来就是用esri提供的SQL语句来进行操作了

  1. // 添加jar包
  2. add jar
  3.   /home/hadoop/esri-geometry-api.jar
  4.   /home/hadoop/spatial-sdk-hadoop.jar;
  5. //创建临时函数,以下SQL语句会用到ST_Point和ST_Contains,如果还用到其他,按照下面方法创建即可
  6. create temporary function ST_Point as ‘com.esri.hadoop.hive.ST_Point’;
  7. create temporary function ST_Contains as ‘com.esri.hadoop.hive.ST_Contains’;
  8. //创建一个外部表,指定相关结构,然后根据上面提供的csv文件,将该文件导入到该表中
  9. //特别注意这个路径需要指定导入到HDFS里面的路径
  10. //如果成功导入,可以使用Select * from earthquakes1;是会有记录返回的,如果
  11. //没有记录返回说明没有导入成功
  12. //HIVE的表类型有托管表和外部表,外部表可以理解为如果删除数据,并没有删除实际数据,只是将HDFS里面的元数据信息删除掉,具体参考HIVE帮助
  13. CREATE EXTERNAL TABLE IF NOT EXISTS earthquakes1 (earthquake_date STRING, latitude DOUBLE, longitude DOUBLE, magnitude DOUBLE)
  14. ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’
  15. LOCATION ‘/home/hadoop/hadoop-1.2.0/tmp/data/earthquake-data’;
  16. //同样道理创建一个counties1表
  17. CREATE EXTERNAL TABLE IF NOT EXISTS counties1 (Area string, Perimeter string, State string, County string, Name string, BoundaryShape binary)
  18. ROW FORMAT SERDE ‘com.esri.hadoop.hive.serde.JsonSerde’
  19. STORED AS INPUTFORMAT ‘com.esri.json.hadoop.EnclosedJsonInputFormat’
  20. OUTPUTFORMAT ‘org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat’
  21. LOCATION ‘/home/hadoop/hadoop-1.2.0/tmp/data/counties-data’;
  22. //执行如下SQL语句即可
  23. SELECT counties1.name, count(*) cnt FROM counties1
  24. JOIN earthquakes1
  25. WHERE ST_Contains(counties1.boundaryshape, ST_Point(earthquakes1.longitude, earthquakes1.latitude))
  26. GROUP BY counties1.name
  27. ORDER BY cnt desc;

说明:其实HIVE比较类似于我们常用的SQL语句,大家在使用过程中可以类比SQL尤其是学过MySQL就更加熟悉了,我们都知道SQL语句的有简单的比如Select * from table;insert into …;delete from table等,也有复杂的,其实也就是用户自己编写存储过程等,那么上面的这个步骤就是HIVE一个非常典型的用户定义函数(user-defined function,UDF)这个也可以类比一下SQL的存储过程,有了这种我们就可以编写复杂的语句来完成我们的功能了,因为HIVE本身是Java写的,那么用户编写UDF也必须使用Java来编写,本身UDF分为三种,这个具体看帮助。
编写好的UDF我们怎么使用呢?参考上面的例子
1:我们需要将Java开发的UDF打成jar包
2:在Hive注册这个文件  add jar
3:我们还需要为java的类名起一个别名
create temporary function ST_Point as ‘com.esri.hadoop.hive.ST_Point';
以上步骤2、3每次启动hive都需要重新执行这两步骤

4:在Hive里面创建表并导入数据

5:执行相关语句获得相关功能

感兴趣的话大家也可以进入以下目录来查看相关的源代码
%Hadoop%\spatial-framework-for-hadoop-master\spatial-framework-for-hadoop-master\hive\src\com\esri\hadoop\hive

而且Esri提供的这个工具包包含了基本类似于oracle ST_Geometry的空间构造函数、空间关系函数

可以查看%Hadoop%\spatial-framework-for-hadoop-master\spatial-framework-for-hadoop-master\hive\function-ddl.sql

  1. create temporary function ST_AsBinary as ‘com.esri.hadoop.hive.ST_AsBinary’;
  2. create temporary function ST_AsGeoJSON as ‘com.esri.hadoop.hive.ST_AsGeoJson’;
  3. create temporary function ST_AsJSON as ‘com.esri.hadoop.hive.ST_AsJson’;
  4. create temporary function ST_AsText as ‘com.esri.hadoop.hive.ST_AsText’;
  5. create temporary function ST_GeomFromJSON as ‘com.esri.hadoop.hive.ST_GeomFromJson’;
  6. create temporary function ST_GeomFromGeoJSON as ‘com.esri.hadoop.hive.ST_GeomFromGeoJson’;
  7. create temporary function ST_GeomFromText as ‘com.esri.hadoop.hive.ST_GeomFromText’;
  8. create temporary function ST_GeomFromWKB as ‘com.esri.hadoop.hive.ST_GeomFromWKB’;
  9. create temporary function ST_PointFromWKB as ‘com.esri.hadoop.hive.ST_PointFromWKB’;
  10. create temporary function ST_LineFromWKB as ‘com.esri.hadoop.hive.ST_LineFromWKB’;
  11. create temporary function ST_PolyFromWKB as ‘com.esri.hadoop.hive.ST_PolyFromWKB’;
  12. create temporary function ST_MPointFromWKB as ‘com.esri.hadoop.hive.ST_MPointFromWKB’;
  13. create temporary function ST_MLineFromWKB as ‘com.esri.hadoop.hive.ST_MLineFromWKB’;
  14. create temporary function ST_MPolyFromWKB as ‘com.esri.hadoop.hive.ST_MPolyFromWKB’;
  15. create temporary function ST_GeomCollection as ‘com.esri.hadoop.hive.ST_GeomCollection’;
  16. create temporary function ST_GeometryType as ‘com.esri.hadoop.hive.ST_GeometryType’;
  17. create temporary function ST_Point as ‘com.esri.hadoop.hive.ST_Point’;
  18. create temporary function ST_PointZ as ‘com.esri.hadoop.hive.ST_PointZ’;
  19. create temporary function ST_LineString as ‘com.esri.hadoop.hive.ST_LineString’;
  20. create temporary function ST_Polygon as ‘com.esri.hadoop.hive.ST_Polygon’;
  21. create temporary function ST_MultiPoint as ‘com.esri.hadoop.hive.ST_MultiPoint’;
  22. create temporary function ST_MultiLineString as ‘com.esri.hadoop.hive.ST_MultiLineString’;
  23. create temporary function ST_MultiPolygon as ‘com.esri.hadoop.hive.ST_MultiPolygon’;
  24. create temporary function ST_SetSRID as ‘com.esri.hadoop.hive.ST_SetSRID’;
  25. create temporary function ST_SRID as ‘com.esri.hadoop.hive.ST_SRID’;
  26. create temporary function ST_IsEmpty as ‘com.esri.hadoop.hive.ST_IsEmpty’;
  27. create temporary function ST_IsSimple as ‘com.esri.hadoop.hive.ST_IsSimple’;
  28. create temporary function ST_Dimension as ‘com.esri.hadoop.hive.ST_Dimension’;
  29. create temporary function ST_X as ‘com.esri.hadoop.hive.ST_X’;
  30. create temporary function ST_Y as ‘com.esri.hadoop.hive.ST_Y’;
  31. create temporary function ST_MinX as ‘com.esri.hadoop.hive.ST_MinX’;
  32. create temporary function ST_MaxX as ‘com.esri.hadoop.hive.ST_MaxX’;
  33. create temporary function ST_MinY as ‘com.esri.hadoop.hive.ST_MinY’;
  34. create temporary function ST_MaxY as ‘com.esri.hadoop.hive.ST_MaxY’;
  35. create temporary function ST_IsClosed as ‘com.esri.hadoop.hive.ST_IsClosed’;
  36. create temporary function ST_IsRing as ‘com.esri.hadoop.hive.ST_IsRing’;
  37. create temporary function ST_Length as ‘com.esri.hadoop.hive.ST_Length’;
  38. create temporary function ST_GeodesicLengthWGS84 as ‘com.esri.hadoop.hive.ST_GeodesicLengthWGS84′;
  39. create temporary function ST_Area as ‘com.esri.hadoop.hive.ST_Area’;
  40. create temporary function ST_Is3D as ‘com.esri.hadoop.hive.ST_Is3D’;
  41. create temporary function ST_Z as ‘com.esri.hadoop.hive.ST_Z’;
  42. create temporary function ST_MinZ as ‘com.esri.hadoop.hive.ST_MinZ’;
  43. create temporary function ST_MaxZ as ‘com.esri.hadoop.hive.ST_MaxZ’;
  44. create temporary function ST_IsMeasured as ‘com.esri.hadoop.hive.ST_IsMeasured’;
  45. create temporary function ST_M as ‘com.esri.hadoop.hive.ST_M’;
  46. create temporary function ST_MinM as ‘com.esri.hadoop.hive.ST_MinM’;
  47. create temporary function ST_MaxM as ‘com.esri.hadoop.hive.ST_MaxM’;
  48. create temporary function ST_CoordDim as ‘com.esri.hadoop.hive.ST_CoordDim’;
  49. create temporary function ST_NumPoints as ‘com.esri.hadoop.hive.ST_NumPoints’;
  50. create temporary function ST_PointN as ‘com.esri.hadoop.hive.ST_PointN’;
  51. create temporary function ST_StartPoint as ‘com.esri.hadoop.hive.ST_StartPoint’;
  52. create temporary function ST_EndPoint as ‘com.esri.hadoop.hive.ST_EndPoint’;
  53. create temporary function ST_ExteriorRing as ‘com.esri.hadoop.hive.ST_ExteriorRing’;
  54. create temporary function ST_NumInteriorRing as ‘com.esri.hadoop.hive.ST_NumInteriorRing’;
  55. create temporary function ST_InteriorRingN as ‘com.esri.hadoop.hive.ST_InteriorRingN’;
  56. create temporary function ST_NumGeometries as ‘com.esri.hadoop.hive.ST_NumGeometries’;
  57. create temporary function ST_GeometryN as ‘com.esri.hadoop.hive.ST_GeometryN’;
  58. create temporary function ST_Centroid as ‘com.esri.hadoop.hive.ST_Centroid’;
  59. create temporary function ST_Contains as ‘com.esri.hadoop.hive.ST_Contains’;
  60. create temporary function ST_Crosses as ‘com.esri.hadoop.hive.ST_Crosses’;
  61. create temporary function ST_Disjoint as ‘com.esri.hadoop.hive.ST_Disjoint’;
  62. create temporary function ST_EnvIntersects as ‘com.esri.hadoop.hive.ST_EnvIntersects’;
  63. create temporary function ST_Envelope as ‘com.esri.hadoop.hive.ST_Envelope’;
  64. create temporary function ST_Equals as ‘com.esri.hadoop.hive.ST_Equals’;
  65. create temporary function ST_Overlaps as ‘com.esri.hadoop.hive.ST_Overlaps’;
  66. create temporary function ST_Intersects as ‘com.esri.hadoop.hive.ST_Intersects’;
  67. create temporary function ST_Relate as ‘com.esri.hadoop.hive.ST_Relate’;
  68. create temporary function ST_Touches as ‘com.esri.hadoop.hive.ST_Touches’;
  69. create temporary function ST_Within as ‘com.esri.hadoop.hive.ST_Within’;
  70. create temporary function ST_Distance as ‘com.esri.hadoop.hive.ST_Distance’;
  71. create temporary function ST_Boundary as ‘com.esri.hadoop.hive.ST_Boundary’;
  72. create temporary function ST_Buffer as ‘com.esri.hadoop.hive.ST_Buffer’;
  73. create temporary function ST_ConvexHull as ‘com.esri.hadoop.hive.ST_ConvexHull’;
  74. create temporary function ST_Intersection as ‘com.esri.hadoop.hive.ST_Intersection’;
  75. create temporary function ST_Union as ‘com.esri.hadoop.hive.ST_Union’;
  76. create temporary function ST_Difference as ‘com.esri.hadoop.hive.ST_Difference’;
  77. create temporary function ST_SymmetricDiff as ‘com.esri.hadoop.hive.ST_SymmetricDiff’;
  78. create temporary function ST_SymDifference as ‘com.esri.hadoop.hive.ST_SymmetricDiff’;
  79. create temporary function ST_Aggr_Union as ‘com.esri.hadoop.hive.ST_Aggr_Union’

确保数据都导入进去之后,执行SQL语句后,信息如下

  1. hive> SELECT counties1.name, count(*) cnt FROM counties1
  2.     > JOIN earthquakes1
  3.     > WHERE ST_Contains(counties1.boundaryshape, ST_Point(earthquakes1.longitude, earthquakes1.latitude))
  4.     > GROUP BY counties1.name
  5.     > ORDER BY cnt desc;
  6. Total MapReduce jobs = 3
  7. Launching Job 1 out of 3
  8. Number of reduce tasks determined at compile time: 1
  9. In order to change the average load for a reducer (in bytes):
  10.   set hive.exec.reducers.bytes.per.reducer=<number>
  11. In order to limit the maximum number of reducers:
  12.   set hive.exec.reducers.max=<number>
  13. In order to set a constant number of reducers:
  14.   set mapred.reduce.tasks=<number>
  15. Starting Job = job_201306260649_0003, Tracking URL = http://namenode.com:50030/jobdetails.jsp?jobid=job_201306260649_0003
  16. Kill Command = /home/hadoop/hadoop-1.2.0/libexec/../bin/hadoop job  -kill job_201306260649_0003
  17. Hadoop job information for Stage-1: number of mappers: 2; number of reducers: 1
  18. 2013-06-26 09:57:13,072 Stage-1 map = 0%,  reduce = 0%
  19. 2013-06-26 09:57:27,152 Stage-1 map = 50%,  reduce = 0%, Cumulative CPU 5.83 sec
  20. 2013-06-26 09:57:28,160 Stage-1 map = 50%,  reduce = 0%, Cumulative CPU 5.83 sec
  21. 2013-06-26 09:57:29,167 Stage-1 map = 50%,  reduce = 0%, Cumulative CPU 5.83 sec
  22. 2013-06-26 09:57:30,174 Stage-1 map = 50%,  reduce = 0%, Cumulative CPU 5.83 sec
  23. 2013-06-26 09:57:31,187 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 10.4 sec
  24. 2013-06-26 09:57:32,200 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 10.4 sec
  25. 2013-06-26 09:57:33,210 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 10.4 sec
  26. 2013-06-26 09:57:34,219 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 10.4 sec
  27. 2013-06-26 09:57:35,237 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 10.4 sec
  28. 2013-06-26 09:57:36,246 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 10.4 sec
  29. 2013-06-26 09:57:37,256 Stage-1 map = 100%,  reduce = 17%, Cumulative CPU 10.4 sec
  30. 2013-06-26 09:57:38,265 Stage-1 map = 100%,  reduce = 17%, Cumulative CPU 10.4 sec
  31. 2013-06-26 09:57:39,271 Stage-1 map = 100%,  reduce = 17%, Cumulative CPU 10.4 sec
  32. 2013-06-26 09:57:40,278 Stage-1 map = 100%,  reduce = 70%, Cumulative CPU 10.4 sec
  33. 2013-06-26 09:57:41,286 Stage-1 map = 100%,  reduce = 70%, Cumulative CPU 10.4 sec
  34. 2013-06-26 09:57:42,294 Stage-1 map = 100%,  reduce = 70%, Cumulative CPU 10.4 sec
  35. 2013-06-26 09:57:43,301 Stage-1 map = 100%,  reduce = 70%, Cumulative CPU 10.4 sec
  36. 2013-06-26 09:57:44,308 Stage-1 map = 100%,  reduce = 70%, Cumulative CPU 10.4 sec
  37. 2013-06-26 09:57:45,314 Stage-1 map = 100%,  reduce = 70%, Cumulative CPU 10.4 sec
  38. 2013-06-26 09:57:46,323 Stage-1 map = 100%,  reduce = 71%, Cumulative CPU 10.4 sec
  39. 2013-06-26 09:57:47,330 Stage-1 map = 100%,  reduce = 71%, Cumulative CPU 10.4 sec
  40. 2013-06-26 09:57:48,337 Stage-1 map = 100%,  reduce = 71%, Cumulative CPU 10.4 sec
  41. 2013-06-26 09:57:49,343 Stage-1 map = 100%,  reduce = 72%, Cumulative CPU 10.4 sec
  42. 2013-06-26 09:57:50,354 Stage-1 map = 100%,  reduce = 72%, Cumulative CPU 10.4 sec
  43. 2013-06-26 09:57:51,360 Stage-1 map = 100%,  reduce = 72%, Cumulative CPU 10.4 sec
  44. 2013-06-26 09:57:52,369 Stage-1 map = 100%,  reduce = 73%, Cumulative CPU 10.4 sec
  45. 2013-06-26 09:57:53,379 Stage-1 map = 100%,  reduce = 73%, Cumulative CPU 10.4 sec
  46. 2013-06-26 09:57:54,385 Stage-1 map = 100%,  reduce = 73%, Cumulative CPU 10.4 sec
  47. 2013-06-26 09:57:55,391 Stage-1 map = 100%,  reduce = 74%, Cumulative CPU 10.4 sec
  48. 2013-06-26 09:57:56,397 Stage-1 map = 100%,  reduce = 74%, Cumulative CPU 10.4 sec
  49. 2013-06-26 09:57:57,403 Stage-1 map = 100%,  reduce = 74%, Cumulative CPU 10.4 sec
  50. 2013-06-26 09:57:58,411 Stage-1 map = 100%,  reduce = 76%, Cumulative CPU 10.4 sec
  51. 2013-06-26 09:57:59,418 Stage-1 map = 100%,  reduce = 76%, Cumulative CPU 10.4 sec
  52. 2013-06-26 09:58:00,425 Stage-1 map = 100%,  reduce = 76%, Cumulative CPU 10.4 sec
  53. 2013-06-26 09:58:01,433 Stage-1 map = 100%,  reduce = 76%, Cumulative CPU 10.4 sec
  54. 2013-06-26 09:58:02,439 Stage-1 map = 100%,  reduce = 76%, Cumulative CPU 10.4 sec
  55. 2013-06-26 09:58:03,448 Stage-1 map = 100%,  reduce = 76%, Cumulative CPU 10.4 sec
  56. 2013-06-26 09:58:04,464 Stage-1 map = 100%,  reduce = 77%, Cumulative CPU 10.4 sec
  57. 2013-06-26 09:58:05,476 Stage-1 map = 100%,  reduce = 77%, Cumulative CPU 10.4 sec
  58. 2013-06-26 09:58:06,482 Stage-1 map = 100%,  reduce = 77%, Cumulative CPU 10.4 sec
  59. 2013-06-26 09:58:07,488 Stage-1 map = 100%,  reduce = 79%, Cumulative CPU 10.4 sec
  60. 2013-06-26 09:58:08,497 Stage-1 map = 100%,  reduce = 79%, Cumulative CPU 10.4 sec
  61. 2013-06-26 09:58:09,503 Stage-1 map = 100%,  reduce = 79%, Cumulative CPU 10.4 sec
  62. 2013-06-26 09:58:10,516 Stage-1 map = 100%,  reduce = 80%, Cumulative CPU 10.4 sec
  63. 2013-06-26 09:58:11,524 Stage-1 map = 100%,  reduce = 80%, Cumulative CPU 10.4 sec
  64. 2013-06-26 09:58:12,533 Stage-1 map = 100%,  reduce = 80%, Cumulative CPU 43.27 sec
  65. 2013-06-26 09:58:13,541 Stage-1 map = 100%,  reduce = 81%, Cumulative CPU 43.27 sec
  66. 2013-06-26 09:58:14,547 Stage-1 map = 100%,  reduce = 81%, Cumulative CPU 43.27 sec
  67. 2013-06-26 09:58:15,554 Stage-1 map = 100%,  reduce = 81%, Cumulative CPU 43.27 sec
  68. 2013-06-26 09:58:16,559 Stage-1 map = 100%,  reduce = 82%, Cumulative CPU 43.27 sec
  69. 2013-06-26 09:58:17,566 Stage-1 map = 100%,  reduce = 82%, Cumulative CPU 43.27 sec
  70. 2013-06-26 09:58:18,575 Stage-1 map = 100%,  reduce = 82%, Cumulative CPU 43.27 sec
  71. 2013-06-26 09:58:19,582 Stage-1 map = 100%,  reduce = 83%, Cumulative CPU 43.27 sec
  72. 2013-06-26 09:58:20,592 Stage-1 map = 100%,  reduce = 83%, Cumulative CPU 43.27 sec
  73. 2013-06-26 09:58:21,599 Stage-1 map = 100%,  reduce = 83%, Cumulative CPU 43.27 sec
  74. 2013-06-26 09:58:22,606 Stage-1 map = 100%,  reduce = 83%, Cumulative CPU 43.27 sec
  75. 2013-06-26 09:58:23,614 Stage-1 map = 100%,  reduce = 84%, Cumulative CPU 43.27 sec
  76. 2013-06-26 09:58:24,620 Stage-1 map = 100%,  reduce = 84%, Cumulative CPU 43.27 sec
  77. 2013-06-26 09:58:25,626 Stage-1 map = 100%,  reduce = 84%, Cumulative CPU 43.27 sec
  78. 2013-06-26 09:58:26,632 Stage-1 map = 100%,  reduce = 85%, Cumulative CPU 43.27 sec
  79. 2013-06-26 09:58:27,638 Stage-1 map = 100%,  reduce = 85%, Cumulative CPU 43.27 sec
  80. 2013-06-26 09:58:28,650 Stage-1 map = 100%,  reduce = 85%, Cumulative CPU 43.27 sec
  81. 2013-06-26 09:58:29,656 Stage-1 map = 100%,  reduce = 86%, Cumulative CPU 43.27 sec
  82. 2013-06-26 09:58:30,661 Stage-1 map = 100%,  reduce = 86%, Cumulative CPU 43.27 sec
  83. 2013-06-26 09:58:31,668 Stage-1 map = 100%,  reduce = 86%, Cumulative CPU 43.27 sec
  84. 2013-06-26 09:58:32,677 Stage-1 map = 100%,  reduce = 87%, Cumulative CPU 43.27 sec
  85. 2013-06-26 09:58:33,682 Stage-1 map = 100%,  reduce = 87%, Cumulative CPU 43.27 sec
  86. 2013-06-26 09:58:34,690 Stage-1 map = 100%,  reduce = 87%, Cumulative CPU 43.27 sec
  87. 2013-06-26 09:58:35,700 Stage-1 map = 100%,  reduce = 89%, Cumulative CPU 43.27 sec
  88. 2013-06-26 09:58:36,706 Stage-1 map = 100%,  reduce = 89%, Cumulative CPU 43.27 sec
  89. 2013-06-26 09:58:37,713 Stage-1 map = 100%,  reduce = 89%, Cumulative CPU 43.27 sec
  90. 2013-06-26 09:58:38,719 Stage-1 map = 100%,  reduce = 90%, Cumulative CPU 43.27 sec
  91. 2013-06-26 09:58:39,726 Stage-1 map = 100%,  reduce = 90%, Cumulative CPU 43.27 sec
  92. 2013-06-26 09:58:40,734 Stage-1 map = 100%,  reduce = 90%, Cumulative CPU 43.27 sec
  93. 2013-06-26 09:58:41,741 Stage-1 map = 100%,  reduce = 91%, Cumulative CPU 43.27 sec
  94. 2013-06-26 09:58:42,747 Stage-1 map = 100%,  reduce = 91%, Cumulative CPU 43.27 sec
  95. 2013-06-26 09:58:43,754 Stage-1 map = 100%,  reduce = 91%, Cumulative CPU 43.27 sec
  96. 2013-06-26 09:58:44,760 Stage-1 map = 100%,  reduce = 92%, Cumulative CPU 43.27 sec
  97. 2013-06-26 09:58:45,767 Stage-1 map = 100%,  reduce = 92%, Cumulative CPU 43.27 sec
  98. 2013-06-26 09:58:46,773 Stage-1 map = 100%,  reduce = 92%, Cumulative CPU 43.27 sec
  99. 2013-06-26 09:58:47,780 Stage-1 map = 100%,  reduce = 93%, Cumulative CPU 43.27 sec
  100. 2013-06-26 09:58:48,786 Stage-1 map = 100%,  reduce = 93%, Cumulative CPU 43.27 sec
  101. 2013-06-26 09:58:49,791 Stage-1 map = 100%,  reduce = 93%, Cumulative CPU 43.27 sec
  102. 2013-06-26 09:58:50,802 Stage-1 map = 100%,  reduce = 94%, Cumulative CPU 43.27 sec
  103. 2013-06-26 09:58:51,807 Stage-1 map = 100%,  reduce = 94%, Cumulative CPU 43.27 sec
  104. 2013-06-26 09:58:52,814 Stage-1 map = 100%,  reduce = 94%, Cumulative CPU 43.27 sec
  105. 2013-06-26 09:58:53,820 Stage-1 map = 100%,  reduce = 95%, Cumulative CPU 43.27 sec
  106. 2013-06-26 09:58:54,826 Stage-1 map = 100%,  reduce = 95%, Cumulative CPU 43.27 sec
  107. 2013-06-26 09:58:55,834 Stage-1 map = 100%,  reduce = 95%, Cumulative CPU 43.27 sec
  108. 2013-06-26 09:58:56,841 Stage-1 map = 100%,  reduce = 96%, Cumulative CPU 43.27 sec
  109. 2013-06-26 09:58:57,847 Stage-1 map = 100%,  reduce = 96%, Cumulative CPU 43.27 sec
  110. 2013-06-26 09:58:58,853 Stage-1 map = 100%,  reduce = 96%, Cumulative CPU 43.27 sec
  111. 2013-06-26 09:58:59,861 Stage-1 map = 100%,  reduce = 97%, Cumulative CPU 43.27 sec
  112. 2013-06-26 09:59:00,869 Stage-1 map = 100%,  reduce = 97%, Cumulative CPU 43.27 sec
  113. 2013-06-26 09:59:01,876 Stage-1 map = 100%,  reduce = 97%, Cumulative CPU 43.27 sec
  114. 2013-06-26 09:59:02,881 Stage-1 map = 100%,  reduce = 99%, Cumulative CPU 43.27 sec
  115. 2013-06-26 09:59:03,887 Stage-1 map = 100%,  reduce = 99%, Cumulative CPU 43.27 sec
  116. 2013-06-26 09:59:04,893 Stage-1 map = 100%,  reduce = 99%, Cumulative CPU 43.27 sec
  117. 2013-06-26 09:59:05,906 Stage-1 map = 100%,  reduce = 99%, Cumulative CPU 43.27 sec
  118. 2013-06-26 09:59:06,912 Stage-1 map = 100%,  reduce = 99%, Cumulative CPU 43.27 sec
  119. 2013-06-26 09:59:07,925 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 99.03 sec
  120. 2013-06-26 09:59:08,932 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 99.03 sec
  121. 2013-06-26 09:59:09,938 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 99.03 sec
  122. 2013-06-26 09:59:10,948 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 99.03 sec
  123. MapReduce Total cumulative CPU time: 1 minutes 39 seconds 30 msec
  124. Ended Job = job_201306260649_0003
  125. Launching Job 2 out of 3
  126. Number of reduce tasks not specified. Estimated from input data size: 1
  127. In order to change the average load for a reducer (in bytes):
  128.   set hive.exec.reducers.bytes.per.reducer=<number>
  129. In order to limit the maximum number of reducers:
  130.   set hive.exec.reducers.max=<number>
  131. In order to set a constant number of reducers:
  132.   set mapred.reduce.tasks=<number>
  133. Starting Job = job_201306260649_0004, Tracking URL = http://namenode.com:50030/jobdetails.jsp?jobid=job_201306260649_0004
  134. Kill Command = /home/hadoop/hadoop-1.2.0/libexec/../bin/hadoop job  -kill job_201306260649_0004
  135. Hadoop job information for Stage-2: number of mappers: 1; number of reducers: 1
  136. 2013-06-26 09:59:19,107 Stage-2 map = 0%,  reduce = 0%
  137. 2013-06-26 09:59:23,132 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  138. 2013-06-26 09:59:24,137 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  139. 2013-06-26 09:59:25,142 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  140. 2013-06-26 09:59:26,148 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  141. 2013-06-26 09:59:27,157 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  142. 2013-06-26 09:59:28,166 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  143. 2013-06-26 09:59:29,178 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  144. 2013-06-26 09:59:30,187 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  145. 2013-06-26 09:59:31,200 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.99 sec
  146. 2013-06-26 09:59:32,211 Stage-2 map = 100%,  reduce = 33%, Cumulative CPU 0.99 sec
  147. 2013-06-26 09:59:33,225 Stage-2 map = 100%,  reduce = 33%, Cumulative CPU 0.99 sec
  148. 2013-06-26 09:59:34,236 Stage-2 map = 100%,  reduce = 100%, Cumulative CPU 3.27 sec
  149. 2013-06-26 09:59:35,242 Stage-2 map = 100%,  reduce = 100%, Cumulative CPU 3.27 sec
  150. 2013-06-26 09:59:36,247 Stage-2 map = 100%,  reduce = 100%, Cumulative CPU 3.27 sec
  151. 2013-06-26 09:59:37,253 Stage-2 map = 100%,  reduce = 100%, Cumulative CPU 3.27 sec
  152. 2013-06-26 09:59:38,267 Stage-2 map = 100%,  reduce = 100%, Cumulative CPU 3.27 sec
  153. MapReduce Total cumulative CPU time: 3 seconds 270 msec
  154. Ended Job = job_201306260649_0004
  155. Launching Job 3 out of 3
  156. Number of reduce tasks determined at compile time: 1
  157. In order to change the average load for a reducer (in bytes):
  158.   set hive.exec.reducers.bytes.per.reducer=<number>
  159. In order to limit the maximum number of reducers:
  160.   set hive.exec.reducers.max=<number>
  161. In order to set a constant number of reducers:
  162.   set mapred.reduce.tasks=<number>
  163. Starting Job = job_201306260649_0005, Tracking URL = http://namenode.com:50030/jobdetails.jsp?jobid=job_201306260649_0005
  164. Kill Command = /home/hadoop/hadoop-1.2.0/libexec/../bin/hadoop job  -kill job_201306260649_0005
  165. Hadoop job information for Stage-3: number of mappers: 1; number of reducers: 1
  166. 2013-06-26 09:59:46,788 Stage-3 map = 0%,  reduce = 0%
  167. 2013-06-26 09:59:52,817 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  168. 2013-06-26 09:59:53,824 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  169. 2013-06-26 09:59:54,835 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  170. 2013-06-26 09:59:55,840 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  171. 2013-06-26 09:59:56,851 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  172. 2013-06-26 09:59:57,865 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  173. 2013-06-26 09:59:58,874 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  174. 2013-06-26 09:59:59,884 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  175. 2013-06-26 10:00:00,890 Stage-3 map = 100%,  reduce = 0%, Cumulative CPU 1.67 sec
  176. 2013-06-26 10:00:01,896 Stage-3 map = 100%,  reduce = 33%, Cumulative CPU 1.67 sec
  177. 2013-06-26 10:00:02,905 Stage-3 map = 100%,  reduce = 100%, Cumulative CPU 3.48 sec
  178. 2013-06-26 10:00:03,910 Stage-3 map = 100%,  reduce = 100%, Cumulative CPU 3.48 sec
  179. 2013-06-26 10:00:04,915 Stage-3 map = 100%,  reduce = 100%, Cumulative CPU 3.48 sec
  180. 2013-06-26 10:00:05,921 Stage-3 map = 100%,  reduce = 100%, Cumulative CPU 3.48 sec
  181. 2013-06-26 10:00:06,929 Stage-3 map = 100%,  reduce = 100%, Cumulative CPU 3.48 sec
  182. MapReduce Total cumulative CPU time: 3 seconds 480 msec
  183. Ended Job = job_201306260649_0005
  184. MapReduce Jobs Launched:
  185. Job 0: Map: 2  Reduce: 1   Cumulative CPU: 99.03 sec   HDFS Read: 6771646 HDFS Write: 541 SUCCESS
  186. Job 1: Map: 1  Reduce: 1   Cumulative CPU: 3.27 sec   HDFS Read: 1002 HDFS Write: 541 SUCCESS
  187. Job 2: Map: 1  Reduce: 1   Cumulative CPU: 3.48 sec   HDFS Read: 1002 HDFS Write: 199 SUCCESS
  188. Total MapReduce CPU Time Spent: 1 minutes 45 seconds 780 msec
  189. OK
  190. Kern    36
  191. San Bernardino  35
  192. Imperial        28
  193. Inyo    20
  194. Los Angeles     18
  195. Monterey        14
  196. Riverside       14
  197. Santa Clara     12
  198. Fresno  11
  199. San Benito      11
  200. San Diego       7
  201. Santa Cruz      5
  202. San Luis Obispo 3
  203. Ventura 3
  204. Orange  2
  205. San Mateo       1
  206. Time taken: 183.06 seconds, Fetched: 16 row(s)

从上面的信息我们可以看出,执行这个SQL语句是产生了三个job,每个job都有map和reduce的进程,对Esri提供的小数据在hadoop架构下进行分析,使用了183s,这样印证了hadoop在执行小数据量的局限性。这也说明了,什么样的技术需要在什么样的场景下适用,有点英雄无用武之地的感觉。扩展:如果从事电信或者电力GIS行业的技术人员看完这个一点都不陌生,因为这正是他们习惯的开发模式,类似于ArcSDE的SQL操作ST_Geometry,他们习惯于直接在数据库里面使用SQL语句,使用SDE提供的关系操作符,那么以上使用的HIVE就是一个类SQL的方式,而且相关的操作符与SQL操作基本类似,如果这些行业数据量非常大而且分析较为复杂,不妨考虑一下这种模式。

同样,Esri也提供了基于Hadoop的可视化界面操作工具GP工具,这个工具提供的功能也比较简单

下载地址:https://github.com/Esri/geoprocessing-tools-for-hadoop

1:启用WebHDFS
在jobtacker机器上的hdfs-site.xml配置文件添加如下信息
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
2:部署GP工具包里面的requests和webhdfs的python包
将这两个文件夹拷贝到python的site-packages文件夹里面
C:\Python27\ArcGIS10.1\Lib\site-packages

具体使用可以参考提供的帮助参考。

http://blog.csdn.net/linghe301/article/details/9196713


学习Swift,一定不能错过的10大开源项目!

$
0
0

10 Swift IOS open-source projects you cannot ignore

If you are working on iOS, Swift is a great choice. It is elegant, easier to learn (than Obj-C) and powerful.

You need to checkout these open-source projects if you want a headstart in Swift. The Swift Manual is comprehensive, but nothing like diving into code and learning from what is implemented. These are not in any particular order of ranking. Just cool stuff you shouldn’t ignore.

[It is a HTTP networking library. It is easy to use Alamofire for asynchronous network communication, chaining responses for orchestration, etc]

[Surge is based on Accelerate framework, a C-based API for performing matrix math, digital signal processing, and image manipulation. In other words, it is very fast for crunching complex math, speech and image signals]

[Dealing with JSON is a pain if you don’t have support for it. Swifty JSON does exactly that —it deals with the pain so that you don’t have to]

[This is a really cool project(s). It extends Swift with helper functions and extensions]

[Similar to above, this is set of standard extensions for Standard types and classes]

[State machines in Swift. This has lot of use cases for creating business workflow tasks along with others]

[Looking at the code, still seems early stage. But, lightweight caching systems are a win]

[Auto layout is a system that lets us layout our app’s UI by creating a mathematical description of how elements are related to one another. This project makes it super simple]

[There are several BDD style frameworks for Swift already. I think this is cool because it is pure Swift. There are no dependencies on stuff like NSObject.]

[Another BDD test framework if you are looking for both Obj-C and Swift.]

These are ten projects out of several hundreds that I personally find interesting and fast moving. They are also good projects to dig into the source code and learn Swift fast. Are you ready to build something cool? Go on, do it.


BadStore.net

$
0
0

BadStore.net

BadStore is a purposely broken web application simulating an on-line store. It’s meant for security peeps who are interested in learning more about web application security and more importantly circumventing it.

It comes as a downloadable Virtual Machine and is available at: badstore.net. Unlike other similar vulnerable applications this one doesn’t have a predefined goal such as finding a certain file or exploiting a specific service.

This is what i found…

SQL Injection

The first form that comes up on the BadStore.net website is the Search bar. Adding random input like asd makes it go crazy and dump the actual SQL query:

SELECT itemnum, sdesc, ldesc, price FROM itemdb WHERE ‘asd’ IN (itemnum,sdesc,ldesc)

Testing for SQL injection by searching for a tick (‘) makes things even worse. Since it breaks the SQL syntax in throws very detailed error:

DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ”” IN (itemnum,sdesc,ldesc)’ at line 1 at /usr/local/apache/cgi-bin/badstore.cgi line 207.

This means the user input is passed unfiltered to the SQL statement. In most cases, and given the location of the input in the query, there is not much that can be done with this vulnerability, unless multiple queries are allowed, which is not the case. But it’s always nice to have a proof of concept attack working so my first attempt was:

1’=’1’;–

The hyphens at the end are used to indicate a comment to the interpreter and so everything following those symbols is ignored. Unfortunately it doesn’t work as expected and throws another SQL syntax error. After a bit of research it turns out that there are multiple ways of commenting text in SQL. The second attempt used the /* symbols and revealed 8 additional items including: a Bag ‘o Fud, a Magic Hat and a Security Toaster. (don’t ask)

Two more occurences of SQLi are present in the login pages, both for regular users and suppliers, and lead to a complete bypass of authentication as long as the username is known. Attempts to login as admin were successful using this input:

admin’ /*

This logs me in as the Master Administrator. On the main interface there is not much use for administrative privileges of any kind. There is nothing that I couldn’t do with a regular user, but, when playing with the action= parameter in the URL I stumbled across what looks like an admin panel by simply giving it the admin value. If this is attempted using a regular user without administrative privileges this message pops up:

Error – {Unregistered User} is not an Admin!
Something weird happened […]

Password Cracking

By far the most fun feature in the Administration Portal is the Show Current Users option which dumps the entire user database containing password hashes, full names and password hints. There is not much use in trying to crack the hashes since SQLi allows Admin logins, but any excuse to use HashCat is a good excuse. Most passwords were cracked in the first minutes but I wanted every single one. One day later and HashCat still hadn’t finished so I manually searched the remaining hashes on MD5decrypter. These were the results:

+——————————————————————–+ |      USERNAME      |          PASSWORD HASH        |  PASSWORD   | +——————–+———————————+————-+ |AAA_Test_User       |098F6BCD4621D373CADE4E832627B4F6|test         | |admin               |5EBE2294ECD0E0F08EAB7690D2A6EE69|secret       | |joe@supplier.com    |62072d95acb588c7ee9d6fa0c6c85155|iforgot      | |big@spender.com     |9726255eec083aa56dc0449a21b33190|money        | |ray@supplier.com    |99b0e8da24e29e4ccb5d7d76e677c2ac|supplier     | |robert@spender.net  |e40b34e3380d6d2b238762f0330fbd84|cheap        | |bill@gander.org     |5f4dcc3b5aa765d61d8327deb882cf99|password     | |steve@badstore.net  |8cb554127837a4002338c10a299289fb|profit       | |fred@whole.biz      |356c9ee60e9da05301adc3bd96f6b383|whole        | |debbie@supplier.com |2fbd38e6c6c4a64ef43fac3f0be7860e|helpme       | |mary@spender.com    |7f43c1e438dc11a93d19616549d4b701|luv2buy      | |sue@spender.com     |ea0520bf4d3bd7b9d6ac40c3d63dd500|got2buy      | |curt@customer.com   |0DF3DBF0EF9B6F1D49E88194D26AE243|carbondale   | |paul@supplier.com   |EB7D34C06CD6B561557D7EF389CDDA3C|BMWMotorcycle| |kevin@spender.com   |                                |             | |ryan@badstore.net   |40C0BBDC4AEEAA39166825F8B477EDB4|Shavelick    | |stefan@supplier.com |8E0FAA8363D8EE4D377574AEE8DD992E|badstore     | |landon@whole.biz    |29A4F8BFA56D3F970952AFC893355ABC|TEXAN        | |sam@customer.net    |5EBE2294ECD0E0F08EAB7690D2A6EE69|secret       | |david@customer.org  |356779A9A1696714480F57FA3FB66D4C|California   | |john@customer.org   |EEE86E9B0FE29B2D63C714B51CE54980|Disneyland   | |heinrich@supplier.de|5f4dcc3b5aa765d61d8327deb882cf99|password     | |tommy@customer.net  |7f43c1e438dc11a93d19616549d4b701|luv2buy      | |                    |d41d8cd98f00b204e9800998ecf8427e|             | |qwe]                |d41d8cd98f00b204e9800998ecf8427e|             | +——————–+———————————+————-+

After a bit of poking around the robots.txt takes me to the suppliers page where I find the following strings:

am9ldXNlci9wYXNzd29yZC9wbGF0bnVtLzE5Mi4xNjguMTAwLjU2DQo= a3JvZW1lci9zM0NyM3QvZ29sZC8xMC4xMDAuMTAwLjE= amFuZXVzZXIvd2FpdGluZzRGcmlkYXkvMTcyLjIyLjEyLjE5 a2Jvb2tvdXQvc2VuZG1lYXBvLzEwLjEwMC4xMDAuMjA=

Nothing complicated there: the equals  sign at the end means they are Base64 encoded. After passing them through an on-line decoder I end up having the supplier usernames and passwords:

+————————-+
| USERNAME |   PASSWORD   |
+———-+————–+
|joeuser   |password      |
|kroemer   |s3Cr3t        |
|janeuser  |waiting4Friday|
|kbookout  |sendmeapo     |
+———-+————–+

Cross-Site Scripting

That was all fun and games, but this site is supposedly riddled with vulnerabilities so XSS must be in there. First place to start is the search query, since when attempting SQLi I noticed it simply outputs my search terms included in the SQL query.

Now what would happen if I searched for <script>alert(“sadik”)</script>? Well that would get reflected into the following page and get interpreted by the browser like this:

Three more vulnerable fields are in the Guestbook page and one more in the Register/Login page. They all work pretty much the same way. Apart from using them to display random messages I also made them dump the cookie using the <script>alert(document.cookie)</script>input.

Dat Cookie!

Either through Reflected XSS or by using a Cookie tool I managed to get my hands on the SSOid cookie value:

YWRtaW46NWViZTIyOTRlY2QwZTBmMDhlYWI3NjkwZDJhNmVlNjk6TWFzdGVyIFN5c3RlbSBBZG1p%0AbmlzdHJhdG9yOkE%3D%0A

The give-away is the %3D at the end which is the equals sign in URL encoding meaning Base64 again. Running that through an on-line decoder gives plenty of information about the current session:

admin:5ebe2294ecd0e0f08eab7690d2a6ee69:MasterSystem Admi7G&F#p

That looks as bad as it gets when it comes to cookies, but wait it gets worse. As soon as something gets added into the shopping cart a new cookie named CartID gets created. This was the value I dumped:

1385560793%3A3%3A9104.95%3A1001%3A1002%3A1013

This is URL encoded and in plaintext looks as follows:

1385560793:3:9104.95:1001:1002:1013

The first group of numbers is the CartID, meaning that if I change that value to something else I could stumble across someone else’s shopping cart. That is not very helpful since even though it’s another cart the contents are dictated by the following values. Next is the number of current items, total value, and a list of all the product IDs. The fun part is that these values can be changed and the total price can be dropped to whatever you want just by changing the third group of numbers.

The Checkout

Now once I managed to get to the payment checkout with my “discounted” magic hat and invisibility cloak (actual items from the store) I had to give a valid Card Number. Not valid as in real, but one that at least follows the rules and has a correct checksum.

Looking at the source code for the checkout form I see this:

<form onsubmit= return CardVrfy(); […] >

That’s nice, but this is code that gets executed from my machine, which in turn means that I can do pretty much whatever I want with it, as long as it passes validation on the server side. Changing the form onsubmit action to return TRUE means that any kind of input is now accepted. So using my “legit” card number of 1234-1234-1234-1234 I can now order all the Invisibility Cloaks I need. :)

Denial of Service

Since the server is running Apache and that is always a good excuse to play with Slowloris I tried a DoS attack just to see what happens. Previously when I had tried it for demos I couldn’t take a website down only with Slowloris and had to use something like LOIC or HOIC (don’t remember which one) and even then the sites just took forever to load but still eventually worked.

This one went down COLD!


Authentication Bypass

$
0
0

BY PAMELA O’SHEA, POSHEA [AT] RANDOMKEYSTROKES.COM

When performing a penetration test of an application, tests against the authentication mechanism are always an important check. While a standard authentication mechanism may be used, it can often be implemented incorrectly or misunderstood. For example, some applications may rely on client side data without any sanity checking or tokens may be predictable. In this blog post, we are going to focus on four key areas which should be examined when testing authentication:

  1. Forced Browsing
  2. Parameter Modification
  3. Session Identifier Prediction
  4. SQL Injection within Login Forms

Environment Details
First, we will walk through the environments used to demonstrate these issues. All environments are freely available for download as pre-packaged virtual machines and ready to go:

  • OWASP Broken Web Applications Project (owaspbwa) including:
    • Google Gruyere
    • Mutillidae
    • WackoPicko
  • Badstore.net

As we walk through the examples, the following IP addresses will be referenced:

  • OWASP Broken Web Application vmware player server: 172.16.43.128
  • Badstore.net virtualbox server: 192.168.56.101
  • Attacker’s box: 172.16.43.1

image001

 

Familiarity with the Burp application proxy tool is also required (for an introduction, please refer to Google or SecurityTube) and your browser should be configured to proxy traffic through Burp.

A test account named “bugcrowd_tester” with a password of “pass123” will be used throughout this article. In preparation, these accounts should be created for each application as shown below.

Google Gruyere Application: 

image003

MUTILLIDAE APPLICATION: 

image005

WACKOPICKO APPLICATION:

image007
Issue 1: Forced Browsing
To begin, we are going to investigate the issue of forced browsing. This issue arises when it is possible to request a URL without the appropriate permission.

We will start with the Mutillidae application and check that our browser is configured to use Burp. Now we are ready to spider the mutillidae directory structure using burp as shown. Browse to the local Mutillidae web site in your browser. Once the traffic appears in Burp, right click on the site and choose to spider the site.

image009

Once spidering has completed, particular attention should be paid to any directories which do not appear to be part of the public website structure or appear to be unintentionally disclosed. In this example, it is worth exploring the documentation folder to see if any information disclosure is made.

When exploring a site for the first time, it is always worth accessing common directory names. Through observation of the Mutillidae application and file extensions, we know that Mutillidae runs on PHP which often has shared code stored within an include directory. Here we see that there is an information disclosure within the “includes” directory which reveals PHP code to unauthenticated users.

It should be noted that automated tools such as “wfuzz” can be of great benefit when trying to enumerate a site’s directory structure. Wfuzz will use pre-built files with common directory structure names and record any successfully returned responses. This can be particularly useful when attempting to find exposed administrator interfaces.

image011

Next, we are going to exploit weak identifiers to gain access to files without having to pay for the WackoPicko application. Begin by logging in as the “bugcrowd_tester” user and adding an image to our cart as shown. This function is intended to allow us to purchase higher quality versions of the image.

image013

Before we confirm our purchase, we can see that the image will be made available through a special URL as shown.

image015

If we look closely at the “picid” variable within the parameter, we notice that this is an easily guessable value for individual pictures. With this knowledge, we can now enumerate all the URLs and obtain higher quality images without having to pay.

In the following example, we simply increment the “picid” value by one to gain access to other higher quality images for sale!

image017
Issue 2: Parameter Modification
Parameters are often used to control access to certain functionality or to segregate users of different privilege levels. The problem arises when the server blindly trusts the values of the user controlled client side values. Client side values should never be trusted. These values can be easily modified using Burp as we will see.

For this example, we are going to use the Google Gruyere Application. After logging in as “bugcrowd_tester”, we see two functions available to us: “Profile” and “Sign out” as shown in the screenshot.

image019In order to compare the available functionality, we will now login as an administrator (note: see the data.py script which lists existing accounts, one of which is a default administrator account with a username of “administrator” and a password of “secret”). As an administrator, we now have an additional function named “Manage My Server”.

image021Next, let’s take a look at the Administrator’s version of the edit “Profile” page, where we will see some additional radio buttons at the bottom of the form labeled as: “Is admin” and “Is author”. Next, we will have a peek at these using Burp to see their parameter names. To do this, submit the form and examine the request within Burp. Notice there is a flag named “is_admin” which is set to true. This flag is definitely worth testing further, so let’s make a note of it for now.

image023After exploring the higher privileges available to the administration account, we are going to log back in with our “bugcrowd_tester” account. This time we will try editing the “Profile” page again but include the “is_admin=true” parameter this time.

image025In order for any account changes to take affect we should log out and back in again. This time there is a noticeable difference with our “bugcrowd_tester” account, we now have access to the additional administration function “Manage this server”!

image027We can also see the new flags in our profile which indicate we now have elevated administrator privileges on our “bugcrowd_tester” account. Good news for us!

image029

When writing up a penetration test report, this issue would typically be reported as a vertical privilege escalation (rather than an authentication bypass) as we have moved from a low level user to a higher privileged user. We have included it here for completeness as these issues can often be discovered when testing for authentication issues.

Issue 3: Session Identifier Prediction
Session identifiers are used to keep state within an application and to uniquely identify an authenticated user. As a result, it is important for session identifiers to be unpredictable in order to protect a user’s session. If a session identifier is weak and easy to predict, it will be possible to create a session and bypass authentication as we will see here.

Let’s start by logging into the WackoPicko Application as the administrator (username “admin” and password “admin”). After logging in, we can see that we have been assigned a simple session identifier as highlighted in the cookie variable “session” in the server response.

image031

Now we will use burp to re-send the login request to the Sequencer in order to analyse the session identifiers returned within the responses. This will allow us to analyse the randomness of the session identifiers.

image033

In the case of WackoPicko, the session identifiers just simply increment. For more complex session identifiers, we need to ensure a large enough sample size is analysed within Burp’s Sequencer. Here we have let the Sequencer run 1000 times so we have 1000 returned session identifiers to analyse.

image035

We can see that Burp reports the overall result as being “extremely poor” which indicates the weakness of the simple session identifier. In order to use this knowledge to our advantage, we are going to use Burp Intruder. To do this, simply take the next request after the session identifier has been set by the server and send this to Burp Intruder to automate our attack as shown.

image037Inside the intruder, we will choose a sniper attack. All the default positions can be cleared as we are only interested in a single variable: “session”. We also do not need the “PHPSESSID” variable value as the “session” variable is enough to represent a valid session within the WackoPicko application.

image039Next, we set the payload details for the “session” variable. We are going to choose simple numbers which increment in steps of one. After selecting “Intruder->Start Attack” from the menu, we notice that all the results are returning a successful status of 200 and a successful login.

We have now successfully used the weak session identifiers to login as an administrator!

Issue 4: SQL Injection within Login Forms
If SQL injection is found to be present within a login form, it can often be used to bypass authentication completely. As we will see here, if we know a valid username, which can often be learned through information gathering or guessing, it is possible to login without a password.

For this example we are going to use the Badstore.net application. We will begin by performing the most basic test for SQL injection, entering a single quote into the login form. As shown, this resulted in a SQL error being reported.

image041

image043

Now that we have confirmed the login form is vulnerable to SQL injection, we can start to attack the authentication query. A good list of test strings is available from the Penetration Testing Lab blog  (http://pentestlab.wordpress.com/2012/12/24/sql-injection-authentication-bypass-cheat-sheet).

image045

We will save this list as a text file and use Burp Intruder to iterate through each test string as an input to the login form (Loading from a file requires the professional version of burp. If the professional version is not available, it is possible to load each test string individually into burp or to script the requests programmatically  e.g. using python and curl).

Before we can start, we need to tailor the test string file. If we read the manual for Badstore we know that a valid username is “big@spender.com” (a username is typically provided during penetration testing unless an unauthenticated penetration test is explicitly requested).

Valid usernames could also have previously been gathered during the information gathering phase. For example, valid names could have been gathered and inferred from:

  • Whois database
  • Spidering using burp/dirbuster
  • Code comments containing developer names
  • Any email addresses found throughout the site/html source
  • Document metadata
  • Varying responses within the login form (error messages or error codes etc.)

We are going to tailor the Penetration Testing Lab list to use our known username here. The file just requires a  find/replace for the “admin” user with the “big@spender.com” user as shown.

image047

Now, we are ready to launch Burp’s Intruder and iterate over these strings, passing them to the login form. Let’s begin by submitting a login request and intercepting it with Burp.

image049Once intercepted by Burp, we can right click on the request and choose the “Send to Intruder” option as shown.

image051

Within the Intruder tab, go to the Positions tab as shown and clear all the pre-selected variables. We are just going to vary the “email” variable (username) using the “Sniper” attack type.

image053

Next, on the “Payloads” tab, we will select “Simple list” and “Load” our customised list.

image055

Now we are ready to select Intruder->Start Attack from the menu. Once this has completed, we can check each response to see if a valid login was obtained. Sometimes this can be an obvious welcome message, however, in the case of the Badstore.net application it is the setting of a SSOid flag within the cookie as shown.

image057

We can manually check the resulting strings (more than one was found to respond with an SSOid). For this example, we will use the highlighted string “big@spender.com‘#”. Once entered into the login form, this will allow us to bypass the password field (as # represents a MySQL comment) and no password is required to login! .

image059Finally, we can verify the authentication bypass when we see that we have successfully authenticated and logged in.

image061

Summary
In summary, authentication bypass is an important area to focus on during a penetration test. Bypasses can come in many forms and often arise due to poor implementations such as placing trust in client side data, utilising weak tokens or being careless with database queries and not using prepared statements.

Having worked through the examples here, you should now be ready to start exploring forced browsing, parameter modifications, session identifier prediction and SQL injections within login forms in more detail during your next penetration tests. Happy bug hunting!


Making the Shortest Path Even Quicker

$
0
0
Making the Shortest Path Even Quicker
July 7, 2009 10:00 AM PT

The shortest distance between two points is a straight line. But in the real world, if those two points are located at opposite ends of the country, or even in different neighborhoods, it is unlikely you will find a route that enables you to travel from origin to destination via one straight road. You might pull out a map to determine the fastest way to drive somewhere, but these days, you are just as likely to use a Web-based service or a handheld device to help with driving directions. The popularity of mapping applications for mainstream consumer use once again has brought new challenges to the research problem known as the “shortest-path problem.”

The shortest-path problem, one of the fundamental quandaries in computing and graph theory, is intuitive to understand and simple to describe. In mapping terms, it is the problem of finding the quickest way to get from one location to another. Expressed more formally, in a graph in which vertices are joined by edges and in which each edge has a value, or cost, it is the problem of finding the lowest-cost path between two vertices. There are already several graph-search algorithms that solve this basic challenge and its variations, so why is shortest path perennially fascinating to computer scientists?

Andrew Goldberg, principal researcher at Microsoft Research Silicon Valley, says there are many reasons why researchers keep studying the shortest-path problem.

“Shortest path is an optimization problem that’s relevant to a wide range of applications, such as network routing, gaming, circuit design, and mapping,” Goldberg says. “The industry comes up with new applications all the time, creating different parameters for the problem. Technology with more speed and capacity allows us to solve bigger problems, so the scope of the shortest-path problem itself has become more ambitious. And now there are Web-based services, where computing time must be minimized so that we can respond to queries in real time.”

Improving on a Classic

The classic general algorithm for shortest path is called Dijkstra’s algorithm, first presented in 1959. But although this solves the problem, it does so essentially by searching the entire graph to compute its lowest-cost path. For small graphs, this is feasible, but for large graphs, the computing time just takes too long. For example, in a solution for driving directions, the road network is represented as a graph, where each vertex corresponds to an intersection and each edge to a segment of road between intersections. A complete map of the U.S. road system contains more than 20 million intersections, a huge amount of data to process if the algorithm has to search every segment of the graph.

Five to 10 years ago, it would not have been realistic for a portable device to store a map of the United States; the user would have loaded data for a local map, then reloaded a different map if traveling to a different area.

“But now, devices have the capacity to store a full map of North America or Europe,” says Renato Werneck, researcher at Microsoft Research Silicon Valley and Goldberg’s teammate on the Shortest Path project. “This is good, but it also makes for a bigger search, so we need more efficient algorithms that can solve problems faster on a larger scale.”

Andrew Goldberg and Renato Werneck
Andrew Goldberg (left) and Renato Werneck of Microsoft Research Silicon Valley.

The research lab embarked upon a series of projects to speed up the classic algorithms for the problem, specifically in the context of road networks with the goal of improving on some of the research that has occurred since Dijkstra’s original algorithm. They found that one of the most promising approaches was to use different techniques in combination, and then refine them.

In 2005, Goldberg and Chris Harrelson, an intern from the University of California, Berkeley, published the paper Computing the Shortest Path: A* Search Meets Graph Theory, which examined the heuristic technique known as A* (pronounced “A star”). They demonstrated the effectiveness of a bidirectional A* search when used in combination with pre-calculated landmarks.

Goldberg and Werneck, along with Haim Kaplan, professor at Tel Aviv University, co-authored two more research papers focused on shortest path, keeping in mind the need to create solutions that would be practical enough to deploy on servers, desktops, and portable devices such as vehicle or handheld navigation devices.

Reach for A*: Efficient Point-to-Point Shortest Path Algorithms explored ways to improve on the reach algorithm by combining it with A*, while Better Landmarks within Reach improved on the results of the first paper by incorporating various time-space performance trade-offs. The effectiveness of the new algorithms resulting from this work has been well worth the effort.

“Six years ago, a heuristic solution required looking at a very large portion of the map,” Goldberg says. “There were no performance guarantees, and the solutions were non-exact. We wanted exact and efficient algorithms. Now, we can look at just 0.1 percent of the graph and still find an exact shortest-path solution. This turned out well, because shortest path is a fundamental problem for which we found new solutions, and, as a bonus, some of the work made it into production.”

Shortest-path implementations are commonly deployed in two stages. In the first stage, algorithms preprocess a data model of the road network to derive information that will help reduce the search time for queries. The second is the actual algorithm to solve user queries. In production environments, servers or portable devices are loaded with preprocessed data, reducing the amount of data that query algorithms need to search. Therefore, the speed of a solution depends on both the quantity of preprocessed data and the efficiency of the query algorithm.

Shortest-patch results from a bidirectional search using Dijkstra's algorithm
Bidirectional search using Dijkstra’s algorithm, with the green area showing the number of vertices scanned from point of origin and the blue area showing the vertices scanned from the destination point.

The team used Dijkstra’s algorithm as the starting point, to capture baseline performance data; this is a method that does not use preprocessing. The experiment ran searches for 1,000 random origin and destination pairs on a map of the United States represented by 24 million vertices. First, they ran Dijkstra’s algorithm in a bidirectional search, where vertices are processed concurrently from both the origin and destination points until they find a meeting point; the average number of vertices scanned using this method was 8 million and took more than 5 seconds to run on their test system.

“This search has no sense of direction, so to speak,” Werneck says. “The scan goes all over the place. But by using the A* search technique, we knew we could achieve a more directed search by scanning only the most promising vertices.”

Giving Better Direction

To restrict the search in A* and to provide it with a sense of direction, there needs to be a lower bound, or value, that is an estimate of the graph distance between target points. Given this lower bound, A* then prefers to scan the most “promising” vertices, those that are close to the source but also seem to be closer to the target. But this only works well if the estimated distance is reasonably accurate; if roads actually spiral up a mountain pass or have to travel around a lake, A* becomes inefficient.

Search graph using A* with landmarks.
Using A* with landmarks resulted in a directed search that dramatically reduced search time.

“So we came up with the idea of building in landmarks,” Goldberg says. “We picked some vertices as landmarks and then pre-computed the distances between those landmarks. This was our contribution to this aspect of shortest path―to calculate more accurate lower bounds based on a set of landmarks. When we incorporated landmarks into the solution, we ended up with a directed search that visited a much smaller portion of the map.”

The A*-with-landmarks approach delivered dramatic improvements. The average number of vertices scanned dropped from 8 million to fewer than 200,000, and the average computing time went from more than 5 seconds to fewer than 300 milliseconds.

Reaching for a Shorter Path

Seeking to improve their results even more, the researchers decided to work on a fairly new concept: the reach algorithm. As is often the case in shortest path, this idea is intuitively easy to understand but difficult to implement: When traveling a long distance from one city to another, the best route to take is usually one that gets onto a freeway as quickly as possible and exits as close to the destination as possible. There is no need to look at any of the other exits along the way, because none of those bring you close enough to the destination.

“Reach captures this intuition mathematically, allowing us to prune the search significantly,” Goldberg says. “You only search local intersections to get to a global one, such as the freeway. Thus, even though you prune the search area and end up visiting a very small subset of vertices on the map, you are still able to find the optimal path. Reach is a fairly new and very good idea; we just needed to make it practical.”

As it turned out, implementing reach with shortcuts was crucial to making the algorithm practical. Shortcuts are heuristically preprocessed, “artificial” edges that are equivalent in cost to the actual shortest path between two end points. For example, if the shortest path between point A and point B consists of five edges, preprocessing adds another edge between A and B into the data model that costs the same as the sum of the five edges. The objective is to give query algorithms the time-saving option of taking this mathematical shortcut instead of adding up every edge along the route.

Implementing reaches with shortcuts reduced both preprocessing and query time; the average number of vertices scanned dropped from less than 200,000 to 2,500, and average computing time decreased to less than 2 milliseconds.

Search results using reach
Reach-based results: The curved black line shows the actual route, and the red line consisting of straight segments represents the computed shortcuts added during preprocessing.

When comparing A* and reach, the latter is efficient and visits a sparse subset of the map but does not have a sense of direction. On the other hand, A* has a sense of direction but doesn’t differentiate between local and global intersections, so it has to scan everything in the general direction of the destination.

“Reach makes the search sparse, while A* gives the search a sense of direction,” Goldberg says. “Reach and A* are orthogonal, so you can combine them and have a reach-plus-A* solution that is more efficient than reach alone. The research from Better Landmarks within Reach proved that this combination allowed queries to scan almost 1,000 vertices in less than one millisecond.”

From Theory to Driving Directions

There are few things more rewarding to a researcher than the opportunity to put theory into action. Goldberg and Werneck have been collaborating with Microsoft developers on enhancements to the driving directions feature in Microsoft’s Bing Maps; this recently launched with the Bing search engine.

“One of the benefits of working at Microsoft Research is that we have access to real data,” Werneck says. “In our experiments, we ran against census data that any researcher can download from the Internet. But the developers in Redmond had more detailed data models that were more complete and accurate. The data was weighted to take real road conditions into account.”

In a mapping application, distance does not always equate to driving time. A good data model is adjusted over time and weighted to reflect conditions such as slow speed limits, chronic congestion, or unpaved roads. The development team’s data model contained richer information, and the research team modified some algorithms to handle the data better.

“It was a really good experience,” Werneck says. “Some of our project code actually got incorporated in the production system, and we got a good look at real data and what users want. It was a very productive exchange of ideas.”

Goldberg concurs.

“We knew that a faster solution to shortest path was going to be important,” he says. “So we stayed in touch with the product group. They have product cycles and schedules, and there are windows when it is feasible to do the technology transfer. Fortunately, when the time came, we were able to supply them with proven algorithms.”

The Road Not Yet Taken

The project team has been careful to ensure that its algorithms are data-independent and can work correctly on any shortest-path problem, not just road networks. But given the importance of mapping applications, the researchers’ plan is to stay the course and explore ways to extend the flexibility of shortest-path solutions.

Static problems for road networks are quite well solved, in Goldberg’s opinion. He believes the next important challenge is to move from static to dynamic situations. With historical data increasingly available and incorporated into real systems, there is a lot of room for progress in solutions for real-time travel. To the user, this means being able to plan a route and have the system take into consideration the time of day and predict congestion or avoid road closures.

For Goldberg and Werneck, Microsoft Research is the ideal setting for carrying out this sort of work. They say they can make contributions to the scientific community, as well as to Microsoft’s products, a rare opportunity.

“In many labs,” Goldberg says, “either theory is very far removed from product or it’s actually advanced development and not true research. Microsoft Research has a culture of good symbiosis between science, engineering, and product improvements.”


Learn Meteor.js Properly

$
0
0

Learn Meteor.js Properly

oct. 9 This Year 62

(Learn Meteor and Everything You Need to Know about It)

At the end of this article, I outline two comprehensive study guides to help you learn Meteor properly. The study guides are for both beginners and seasoned developers. The first study guide, which uses a book, a paid screencast, and some free online resources, teaches you how to build a sophisticated, modern social-media web application with Meteor. And the second study guide, which uses only free resources (one affordable screencast and free online resources), is just as instructive as the first, though you won’t build a specific web application throughout the course.

First, I give a comprehensive Meteor overview, in which I discuss just about everything you want and need to know about Meteor before you commit to investing your time and other resources in this still burgeoning though exceptional technology.

Time to read the Meteor Overview:

14 minutes

What You Will Learn in this Meteor Overview

I explain exactly what Meteor is, how it differs from typical JavaScript frameworks, what it offers developers specifically, its alternatives and contemporaries, whether you should be excited or skeptical about it, and where to find Meteor jobs. I also enumerate some of the endorsements written by Meteor converts, and I explore the justifiable criticisms, known limitations, and frequently asked questions that many have raised about Meteor. You will learn all this and much more.

I am honored that you have joined me and I am hopeful you will find this article helpful and illuminating and the accompanying study guides and recommended resources sufficiently instructive. If you don’t, then I would have failed and I would like to hear from you; please notify me in the comments below. Don’t hesitate to alert me of any grammatical errors, typos, general errors, misinformation, missing information, outdated content, or incomprehensible sentences or passages. You won’t hurt my feelings, for I am most interested in providing you accurate, clear, and comprehensible material, and only you can determine whether I have done that.

Learn Meteor Properly Study Group

People have already started study groups for this study guide. One study group starting today (November 3) on Facebook already has over 100 members. You can also find the group onReddit.

If you want to start a study group, send me Tweet or an email.

  • Receive Updates

Let’s begin with a comprehensive overview of Meteor.

How Will Your Life Change After You Learn Meteor Properly?

No, you won’t be cleansed of your sins and washed of your immoralities after learning Meteor properly. Neither will you lose five pounds nor grow two inches.

However, if you have never developed any kind of application before, you will experience ecstasy, so powerful and liberating it will free you to envision, build, and realize your imaginations, like an artist discovering paint and canvas for the first time.

If you currently use Meteor (and even if you have read a Meteor book or some tutorials), you will emerge better equipped to understand and handle common Meteor errors and the often-misunderstood Meteor “magic,” allowing you to experience Meteor’s true efficacy. Efficient, productive, painless.

If you use Rails, Node.js, PHP, Django, Go, Scala, or Java, you will understand Meteorites’ (i.e., Meteor developers) unapologetic praise for Meteor. You wouldn’t be convinced that every facet of Meteor is better than every facet of Rails or Django (it isn’t) or that Meteor will kill Rails or Python (it won’t). But you will undoubtedly acknowledge and appreciate, even if reluctantly, the efficiency and painlessness Meteor affords, as well as its effectiveness in making you a more productive developer—indeed, a happier developer. But be careful, my friend, for even a faithful developer can be tempted by seduction, lured by betterment, and give in to pleasure.

If you currently use proven but old-school technologies to develop applications, learning Meteor properly will allow you to experience the current state of modern web application development. This will prepare you for the foreboding robotic and futuristic frameworks that will inevitably evolve out of technologies like Meteor. You will therefore become familiar with the latest, experience the now, and embrace the inevitable.

Or, if after learning Meteor properly you remain unmoved, unconvinced, or unimpressed, then we would love to hear from you. For you may have invaluable information about efficient web-development tools that we can all use.

Meteor Transcends (Goes Beyond) Typical JavaScript Frameworks

To characterize Meteor as a “JavaScript framework” would be to:

  • rob Meteor of its comprehensive and integrated ecosystem; that is, unlike typical JavaScript frameworks, Meteor offers much more than just a front-end, a backend, or a combination of the two with some libraries. It offers everything you need to build web applications: a seamlessly integrated ecosystem that includes frameworks, libraries, database, tools, and more
  • overlook its extensive usefulness; that is, you can not only develop traditional RESTful web apps and modern real-time web apps with Meteor, but you can also deploy and host web apps, build and deploy mobile apps, connect Arduinos, and more
  • and ignore its expansive efficacy; that is, Meteor has proven effective not only in helping developers build all sorts of applications and packages efficiently and painlessly, but also in empowering others—including the poor1, the nontechnical2, and the uninitiated3—realistically and inexpensively acquire a highly valued skill: the capacity to develop complete web and mobile applications in relatively short time and with limited resources

For these reasons—its comprehensive and integrated ecosystem, extensive usefulness, and expansive efficacy—Meteor transcends, or goes beyond, typical JavaScript frameworks, a characterization more apt for frontend frameworks like Backbone.js, Ember.js, Angular.js, and the like.

What Exactly Is Meteor?

Since Meteor is not a JavaScript framework, what is it then?

Written in JavaScript on the Node.js platform, Meteor is an open-source Isomorphic Development Ecosystem (IDevE) for efficiently and painlessly developing web and mobile applications. The Meteor ecosystem seamlessly integrates all the components (tools, libraries, databases, and frameworks [frontend and backend]) necessary for building and deploying applications.

In short, Meteor provides you with everything you need—except for your desire and a text editor—to develop and deploy complete applications.

Meteor makes developing applications efficient by providing a no-fuss API that works the same everywhere and by including many pre-built functionalities most applications need. And it makes the process painless (relatively painless) by removing many of the technical hurdles developers usually have to contend with when developing applications.

Isomorphic Development Ecosystem (IDevE)
Isomorphic. Isomorphic refers to using the same code on the frontend and the backend; that is, using the same API everywhere (frontend, backend, and even for mobile apps). For example, a piece of isomorphic code is Meteor.logOut(); calling this piece of code would work the same on the frontend and the backend, and even in your mobile Meteor apps. You can think of isomorphic as homogeneous (of the same kind).

Development. Meteor provides all the tools for the application development life cycle, from setup and configuration tools to API and deployment tools.

Ecosystem. To understand the difference between a JavaScript framework like Angular.js and a development ecosystem like Meteor, consider this: A framework is like an unfurnished kitchen; it has a sink with running water, a stove, and an empty refrigerator; you can cook in such a kitchen of course, but you must bring your own vegetables, pots, containers, and everything else you need, including cabinets for storage. An ecosystem, on the other hand, is like a furnished kitchen with a stocked refrigerator; you need only your desire, maybe a recipe too, and you can cook any kind of meal in the kitchen. The ecosystem provides you with everything you need—all the ingredients, all the utensils, all the containers, all the storage space, and more—to cook complete meals from beginning to end.

The Meteor ecosystem includes a seamlessly integrated frontend, backend, and database; a well-conceived isomorphic API linking the entire core system as well as linking third-party smart packages; and the tools and managers. The stocked Meteor kitchen—the Meteor ecosystem, with all the vegetables, cabinets, utensils, and ingredients—allows you to season, cook, and enjoy: setup, develop, and deploy.

Incidentally, you don’t have to deploy or host your Meteor apps with Meteor; you can use any other service provider or deploy your apps to your own server.

Alternatives to Meteor

The alternative to an IDevE (Isomorphic Development Ecosystem) is either an MDevE (Multifarious Development Ecosystem) or an MDevE Generator. An example of MDevE is Mean.js, which combines multifarious (i.e., of various types—different APIs: MongoDB, ExpressJS, AngularJS, and Node.js APIs) libraries, frameworks, and tools to create a development ecosystem somewhat similar to Meteor. Though the APIs are multifarious (not isomorphic), they are still integrated, such that Mean.js presents an integrated ecosystem like Meteor. Mean.io, which is nearly identical to Mean.js also deserves a mention as an MDevE.

Derby.js, also an alternative (though not a viable one as of November 2014) to Meteor, is the only other MDevE I am aware of; it presents an integrated ecosystem like Meteor and Mean.js, but Derby is simply incomplete and buggy at this juncture, and its documentation and examples need much work.

An example of an MDevE Generator is Yeoman, which allows you to easily use the command line to generate MDevE ecosystems like Mean.js. Indeed, Mean.js (an MDevE) and Yeoman (an MDevE Generator) are viable alternatives to Meteor.

Another IDevE like Meteor is Hoodie.js, a new open source ecosystem almost as ambitious as Meteor. But like Derby.js, Hoodie has a long way to go to be considered a viable alternative to Meteor. We can justly conclude then that Meteor is the only viable IDevE available today.

What Specifically Does Meteor Offer Developers?

As I noted above, IDevEs (like Derby.js and Meteor), MDevEs (like Mean.js), and MDevE generators (like Yeoman), pushing beyond modernity, offer developers similar automation, configuration, and suite of libraries, frameworks, and tools. Meteor, in particular, offers developers much more than those technologies, though, and, arguably, its seamlessly integrated ecosystem has no equivalence today, as you will see from the list of features outlined below:

  1. Meteor not only has a one-step installation for configuration and setup, but it also has anisomorphic API, which refers to using the same code on the frontend or backend, or even for mobile and web apps. This saves developers hours, perhaps even days and weeks, since there is no need for developers to wrestle with installing, configuring, and learning disparate libraries, module managers, multifarious APIs, drivers, and the like.
  2. It offers not only a front-end framework, like Backbone.js, but also a backend that seamlessly integrates with the frontend, and an easy-to-use API for communicating between the two; this provides developers with straightforward, no-fuss client-server data management (Collections, Models, etc.), server-side methods, and server session management.
  3. It provides not only bidirectional persistent communication (like socket.io), but also simplified reactive programming (like Bacon.js). The reactive programming library works in conjunction with the front-end framework to reactively (that is, instantly and continuously) update the UI whenever dependable data or variables change. Moreover, a Meteor community developer has implemented the Meteor front-end templating engine on the server, providing server side templating for Meteor. I should caution that this implementation is still in its infancy.
  4. It offers not only a stack that includes MongoDB database (with PostgreSQL and others planned), but also a front-end representation of MongoDB, called Minimongo, written entirely in JavaScript and available in every connected client. Meteor integrates the two (MongoDB on the backend and Minimongo on the frontend) in a well-conceived manner to mitigate latency, a concept called latency compensation. This results in considerably faster page updates and reloads, leading to a more satisfying user experience for developers and end users alike.
  5. It not only has a standardized Mongo API on both the frontend and backend, but it also has Oplog tailing for MongoDB, resulting in applications using substantially less server resources.4
  6. It has a standard front-end router (created by a Meteor community member) that implements the best features from other popular front-end routers, and this router also provides server side routing and includes a familiar API like Express.js’s routing API, even allowing for connect middleware, RESTful endpoints, and the like.
  7. It has a lightweight front-end framework, Blaze.js, that has a templating engine thatsupersedes Handlebars.js, with a rendering engine similar to the WIP (Work in Project)HTMLBars. I should note that Blaze is neither as feature-rich and robust as Ember.js nor as expansive and extensible Angular.js.
  8. Its integrated live browser reload (also known as hot code load and hot code push) not only automatically reloads your live web page whenever you make development changes on the frontend (HTML, CSS, images, JavaScript, etc.), but it also automatically refreshes just the necessary DOM elements on the page (without reloading the entire page), even when there are dependent changes to data on the backend (MongoDB) or frontend (Minimongo).
  9. It comes with requisite core packages to handle minification, preprocessing, concatenation, OAuth and custom user authentication (signup, login, forget password, etc.)., emailing, and coffeescripting; packages for popular frameworks like bootstrap, backbone, and jQuery; and even a package for SEO compatibility.
  10. It has its own command line tool that provides many of the functionalities provided by tools such as grunt, NPM, NVM, and the like. And if you add EventedMind’s em5scaffolding tool, you also have some (though not most) of the functionalities provided by popular scaffolding tools prominent in Rails and Yeoman.
  11. It allows you to use NPM modules and it provides its own build system (a custom package manger) that transcends NPM, providing nearly all the worthwhile and crucial NPM functionalities and more. You can install third-party or custom Meteor packages from atmospherejs.com, the official repository for Meteor packages. So you have access not only to NPM’s 98,000+ modules, but also to Meteor’s AtomophereJS 2600+ smart packages. 

Let’s allow Geoff Smith, one of the founding members of Meteor, to expound on the advantages and goals of Meteor’s package manager:
    • The main [goal] is “Isomorphic JavaScript.” This has come to refer to JavaScript code that can run equally well on the client or on the server, meaning that you can write your JS once and run it anywhere…you can add the http package and use the HTTP.get() function on both the browser and the server. It works everywhere, so now your Facebook friends-fetching code can be used anywhere in your app.6

    • Two-level namespace, where packages that are “safe bets” (widely used, mature, supported, tested) get a short name like “forms”, and experimental, up-and-coming, or personal packages get a name prefixed with the author’s name, like “gschmidt:forms.7

    • The package system needs to integrate nicely with Meteor’s asset building/bundling system.7

    • When you update to Meteor [0.x.x or 1.x.x], you’re pulling a new set of core packages, which are guaranteed to work together (because we’ve tested them, a lot!) We want to keep this experience, where you don’t have to micromanage the versions of all of your packages, and where “meteor update” always gives you a consistent known-good snapshot.7

  12. It uses synchronous style coding, courtesy of the Fibers JavaScript library. This provides an easy to read code structure that many find more appealing than the asynchronous structure of callback functions, common in most JavaScript frameworks. I should caution that you must pay close attention to the section in the road map that deals with making async calls in Meteor because many seem to have trouble when making async calls in Meteor.
  13. It even provides support for mobile apps through Cordova Phonegap integration. You can easily deploy your Meteor app as a mobile app, using these simple commands:
    meteor run ios

    “runs your Meteor app in an iOS simulator and starts the server.”8

    meteor run android

    “runs your Meteor app in an Android simulator and starts the server.”8

    I should note that I have not tested the mobile support and it appears to be embryonic as of October 2014. Watch a demonstration. And read the documentation.

    If you are wondering, hot code reload does work on iOS apps. Apple approved this functionality for apps in the AppStore.9

  14. Meteor takes a proactive approach to security, reportedly with a core developer dedicated to addressing security.
  15. It has an official testing framework, Velocity,. With Velocity, you can use your favorite testing frameworks like Jasmine or Mocha, and run acceptance tests with Selenium.
  16. Finally, it not only has a team of dedicated and capable engineers with a vision for changing the world (nearly every team has that), but it also has a lovely bank account:$11.2 million in funding10


 (hardly any team has that). This essentially secures Meteor’s stability for the near future, guarantees frequent updates and timely responses to Github issues, and ensures constant interaction with the community (well, when they think it necessary anyway).

Best Text Editors and IDEs for Meteor

You will develop Meteor applications easier if you use an IDE like WebStorm 9, the only IDE that supports Meteor. Watch this WebStorm/Meteor 9 tutorial that shows you how to use Meteor with WebStorm:

You should also watch these WebStorm tutorials to learn a bit more about WebStorm. While not the most comprehensive tutorials, they do teach you a thing or two.

Sublime Text is also an outstanding editor for building JavaScript applications, and you can use it to develop Meteor apps.

Justifiable Criticisms, Known Limitations, and Frequently Asked Questions about Meteor

Some developers have raised a number of justifiable and unjustifiable criticisms about Meteor. While some of the concerns and criticisms have been either debunked or resolved in recent versions of Meteor, some remain justifiable. The frequently asked questions, known limitations, and justifiable criticisms about Meteor follow, along with a comment or an answer to each:

Frequently Asked Meteor Questions

  1. Q: Can I build mission critical applications with Meteor?

    
A: Sacha Greif, Coauthor of DiscoverMeteor
    Meteor is still beta software, but it’s actually very close to the 1.0 release. So within the next few months, it’ll probably be safe to assume that Meteor is ready for whatever you can throw at it!

  2. Q: What kinds of applications can I not build with Meteor?

    
A: Sacha Greif, Coauthor of DiscoverMeteor
    Meteor isn’t great for anything that’s mainly static content, like blogs or simple static sites. As a general rule, Meteor is great for apps, but not for sites. Another factor to consider is the fact that Meteor doesn’t do server-side content generation yet, meaning that your app won’t work without JavaScript enabled.

  3. Q: Do you have proof of Meteor holding up and scaling well in production?

    
A: (?? Awaiting an official response from Meteor Development Group)

  4. Q: What big companies or funded startups are using Meteor?

    


A: Sacha Greif, Coauthor of DiscoverMeteor
    There’s a list on the Meteor site, but it could probably be updated. Two companies not mentioned there are LookBack and Respondly.

  5. Q: Does Meteor scale at least as well as Rails in production?

    
A: (?? Awaiting an official response from Meteor Development Group)

Known Meteor Limitations

  1. Meteor works only on Mac, Linux 64, and Linux 32.
  2. It does not officially support Windows, Solaris, and Freebsd.
  3. It supports only one database: MongoDB.
  4. It has no support for sharding on MongoDB.
  5. Its frontend framework does not have reusable UI components.
  6. It has only partial support for Redis.
  7. It does not work well with SEO, even with its Spiderable hack.

Justifiable Meteor Criticisms

  1. Dnprock: Reactive template is nice but can lead to very hard to debug issues…. There’s no really good way to debug reactive update trigger.

    
A: (?? Awaiting an official response from Meteor Development Group)

  2. Lack of generators when compared with Rails and other frameworks
    Neya: We’re talking about the basic reason why people choose rails: Productivity (Getting stuff done) and getting your product out to the market. I think in this perspective nothing beats rails:
    rails new blog
    rails generate scaffold Post title:string text:text
    rails s

    How many lines of actual code I have written so far to actually get my basic blog idea up and running? None.

    
A: (?? Awaiting an official response from Meteor Development Group)

  3. Many [Atmospherejs.com, Meteor package management] packages don’t have the most vital information; the readme file for most packages is missing.

    
A: Tom Coleman, Developer on Atmospherejs.com and Coauthor of DiscoverMeteor
    This is up to the package author to resolve, but the core Meteor packages are currently in the process of being “readme-ized” by MDG (e.g. Oauth Encryption)

  4. Its front-end framework, Blaze.js, is neither as feature-rich and robust as Ember.js nor as expansive and extensible as Angular.js.

    
A: (?? Awaiting an official response from Meteor Development Group)

Learn Meteor Now If…

The noted Meteor limitations and criticisms are negligible when compared with the noted benefits, unless you absolutely abhor MongoDB or it cannot scale well for your particular use case.

Furthermore, Meteor is nearing version 1 (relatively stable), websites are already using it in production, you will no doubt develop applications quicker with it than you will with many competing technologies (after you learn it properly), you will be a more attractive job candidate (especially in the coming months), and you will be able to develop nearly any kind of application with Meteor that you can think of.

Accordingly, you should learn Meteor now if:

  • you plan to develop a startup (not a native mobile app) now or within the next year,
  • you have to develop a real-time, RESTful, or single page web app
  • you want to build an MVP (Most Viable Product) or a prototype of a large application
  • you are now learning to code and you want to build your first web application (Learn JavaScript Properly first)
  • you are a javascript developer (node.js, or any of the many frontend JavaScript frameworks),
  • you are convinced that Meteor provides the best and most complete ecosystem for building web applications that work on both desktop and mobile clients (though mobile support is still embryonic as of October 2014)
  • you are a Ruby on Rails or PHP or Java developer and you want an alternative web technology to help you build applications and prototypes faster (note that Meteor lacks some of the generators prominent in Rails)
  • you are a hacker
  • you are cool and you like to be on the forefront of technological advancement
  • you think you are not cool (this means you are cool)
  • you consider yourself an old-school or hardcore programmer, and you dislike modern frameworks that are trying to make it easier to build applications; stay abreast and embrace the now and the future, my friend
  • you plan to build your own JavaScript (or some other language) framework or ecosystem
  • you want to learn or teach modern web application development

When to Consider Other Technologies Over Meteor

If you want to work for a large firm as a front-end developer, you may be better off learning a popular front-end framework like Angular.js, Ember.js, React.js, or Backbone.js. You should also learn one of these front-end frameworks if you want a high-paying front-end developer job soon, since, as you will see below, while Meteor jobs exist, you may not find as many opportunities for a Meteor developer as you would for an Angular.js or Backbone.js developer.

If your company has a strong and talented group of backend developers developing the backend, and the front-end is developed and handled separately from the backend, you may want to focus on using one of the noted front-end frameworks on the front-end.

If you need a robust SQL database like PostgreSQL or MySQL for your application, you may want to choose a different technology like Rails (if you know Ruby) or Node.js (if you know JavaScript), instead of Meteor, since Meteor doesn’t support these databases as of November 2014.

And, as Sacha Greif, coauthor of DiscoverMeteor, notes:

Meteor isn’t great for anything that’s mainly static content, like blogs or simple static sites. As a general rule, Meteor is great for apps, but not for sites. Another factor to consider is the fact that Meteor doesn’t do server-side content generation yet, meaning that your app won’t work without JavaScript enabled.

Moreover, not many large firms (if any) are using Meteor as of November 2014, so keep this in mind before you commit to learning Meteor now.

Meteor Developer Jobs

The biggest downside to learning Meteor today is that there doesn’t exist an abundance of Meteor jobs for Meteor developers. Unlike job postings for technologies like Ruby on Rails, Node.js, Backbone.js, and Angular.js (especially), comparatively fewer Meteor jobs exist today. And this shouldn’t be surprising since Meteor is a younger technology than those noted. This shouldn’t deter you from learning Meteor, however. Consider that you can find Meteor jobs now (see the links below) and large companies will soon discover that the Meteor magic can result in considerable productivity and financial gain, not to mention a boost in employee (developer) morale.

Meteor jobs:

For the most up-to-date Meteor jobs, follow MeteorJS Jobs on Twitter:
@MeteorJobs

We Work Meteor Jobs


StackOverflow Meteor Jobs



Indeed Meteor Jobs


Odesk Meteor Jobs



Simply Hired Meteor Jobs



Linked in Meteor Jobs

Meteor Jobs discussed and advertised on Meteor Talk Google Group

Most Helpful Meteor Resources

Somewhat surprisingly, given Meteor’s relative newness, you can find quite a few helpful Meteor blogs and websites. Knowing who, which Meteor guru, to follow and which websites to rely on requires a bit of research, so I will save you some time.

I don’t want to overwhelm you with Meteor resources (many are popping up almost daily, and most seem to overlap), so I will keep the list brief with those that I find most helpful:

  1. Crater.io: A Hacker News style news site for Meteor. Get the latest Meteor news, updates, and blog posts from around the web.
  2. Meteor Cookbook: An exhaustive resource with invaluable Meteor tips
  3. Meteor Tips: Here you can find a number of quality Meteor tutorials from an author who always writes with the patience and diligence of an elementary school math teacher.
  4. Meteor Help: This site has you covered from head to toe in Meteor resources. What else do you need?
  5. Discover Meteor Blog: A reputable blog from the acclaimed authors (Sacha Greif and Tom Coleman) of the DiscoverMeteor book.
  6. Meteor Talk: Ask questions, discuss, share, meet up, and more
  7. Meteor Academy: Be inspired and learn from a transformational Meteorite bursting through the atmosphere
  8. The Meteor Podcast: Kick back with a cup of coffee and enjoy; I do.
  9. MeteorPad: Write Meteor code in the browser, like JSBin

Other Noteworthy Meteor Resources

  1. Follow Meteor.js (@meteorjs), EventedMind (@EventedMind), and DiscoverMeteor (@DiscoverMeteor) on Twitter
  2. Get on the Meteor mailing list. Go to this link and scroll down to “Get on the mailing
    list”:
 https://www.meteor.com


Notable Hackers in the Meteor Community

To keep up with the latest Meteor news and happenings and to learn how to optimize and scale your production Meteor apps, you need to know and follow this gentleman:

Arunoda Susiripala
Arunoda Susiripala
Arunoda (@arunoda) is arguably the most prominent Meteor hacker. He is also editor of the preeminent Meteor newsletter MeteorHacks.com, and founder of Kadira.

Meteor Cred:
He developed some important Meteor smart packages that help Meteor applications perform better (i.e., increase speed, scale, and use less server resources) in production. For example, he developed Smart Collections (it speeds up Meteor by using MongoDB Oplog; Meteor’s core developers have since implemented much of Smart Collection’s technology into Meteor’s core),Fast Render (it speeds up pages by as much as 10X, and it has been incorporated into Iron Router, Meteor’s primary router), Meteor NPM (it allows Meteor developers to easily use NPM modules in Meteor), Meteor Up (it allows you to deploy your Meteor apps to your own server),Meteor-SSR (it allows you to render Meteor templates server side, a huge limitation in the current version of Meteor), and many more packages crucial to helping your Meteor application perform and scale well in production. In addition, his Meteor performance and monitoring startup, Kadira, is used by many production Meteor apps.

Sign up for his Meteor weekly newsletter.
(This is all you need, really, to keep up with latest Meteor happenings.)
MeteorHacks.com

Chris Mather (who created the indomitable Iron Router, and who probably has a clone because of all the seemingly insurmountable Meteor work, Meteor teaching, and Github issues he attends to); Tom Coleman (whose firm developed the official Meteor packaging system, Atomospherejs.com, and who created the first Meteor router, the first Meteor packaging manager and repository, and many useful Meteor packages); Abigail Watson (who maintains the exceedingly useful Meteor Cookbook, noted below, and other useful Meteor projects); and the versatile Sacha Greif (without whom, arguably, Meteor would not be as popular as it is today; every startup and open-source project need a Sacha Greif, for he can evangelize your technology like no one else can) have all contributed significantly to the Meteor community and ecosystem.

I know many others have contributed perhaps just as much if not more, so please forgive me for failing to list those names here. I may likely add more names as I am informed of them.

Meteor Tutorials Needed

  • How to Handle Errors in Your Meteor Application
  • Meteor Accounts UI Overview
  • Comprehensive Meteor Tutorial on Making Async Calls
  • Comprehensive Tutorial on Meteor Packages (for Meteor Version 0.9.x)

Notes

  1. Poor college student taught herself Meteor

  2. 

Meteor beginner built virtual rubric cube in a week
  3. 

Tattoo artist (non-programmer) built Meteor POS application for his business:
  4. How to Scale Meteor.js Apps
  5. EventedMind em Scaffolding Tool
  6. Why Meteor Created a New Build System
  7. Some Considerations in [Meteor] Package System Design
  8. Meteor Cordova Phonegap Integration
  9. Apple Allows Hot Code Push in Mobile Apps
  10. Meteor’s new $11.2 million development budget

Acknowledgments

  1. Thanks to Robin Coffman—perhaps the best editor, no doubt a fastidious and exceptional editor—for her punctilious effort editing this article.
  2. Thanks also to Phil Howley, Tony Homer, and Nathan Burkiewicz for thoughtfully taking the time to point out some typos and errors in this article.

Learn Meteor Properly Overview


For the ultimate study guide, we are using a book, a paid screencast, and some free online resources. Don’t worry; I managed to negotiate 35% discount off the paid screencast and 20% off the book for you. (No, I don’t benefit in any way when you buy these resources.). So the total for the two resources is $50.05.

For the more affordable study guide, we are using one paid screencast and some free online resources. With the noted 35% discount, the screencast costs just $18.85. So that’s all you need, at least $18.85, to learn Meteor properly.

What’s the Difference Between the Two Study Guides?

The ultimate road map guides you through building a sophisticated social web application, while the more affordable road map does not guide you through building a specific web application. Other than that and other than the difference in cost for the resources, the two road maps are exceedingly similar; they both use the same screencasts from EventedMind and some free online articles.

Be Empowered
After you complete the study guide and experiment with Meteor, I invite you to use Meteor to develop a web or mobile app. And use your completed app to generate passive income ($) or massive income ($$$$), to empower a community, to prove Meteor’s effectiveness to your boss or colleagues, to solve world problems (I have many ideas I am eager to share with you), to solve problems among your peers or in your neighborhood, to get a job, to create the next Instagram or Facebook or any startup, or to do just about anything you like. If you do build something with Meteor (it needn’t be the next Facebook or Hacker News clone), please post a link to it in the comments below.

Prerequisite
You have to know JavaScript to develop applications with Meteor. Don’t make anyone mislead you. First, if you haven’t done so already, read the entire article above to understand what Meteor is, what you can do with it, and what it can do for your career. Then go Learn JavaScript Properlyand come back and learn Meteor by following the road map below.

What You Will Learn
In the ultimate road map, you will learn how to build a relatively sophisticated web application (a feature-rich, real-world example of Hacker News—much better, in fact); how to use Meteor frontend framework; how the DDP protocol is used to communicate between the server and the client; how to implement collections and subscriptions (the data models for Meteor); how to use the latest (ver 1.0) version of IronRouter, the main Meteor router; how to create and use packages; and how to use every part of the Meteor ecosystem necessary for developing world class applications. We will dig deep, learning the basics and the digging deeper into each topic. You will learn more than you need to know to develop the social news application, but enough for you to feel comfortable using Meteor on your own.

In the more affordable road map, you will learn nearly everything taught in the ultimate road map, except you will not build a specific web application.

Duration: This course will take approximately 6 days (about 40 hours) of studying and coding to complete.

The paid resources for this road map:
Use this discount code (jsissexy_learn) to get 35% off the EventedMind screencast. And use this discount code (JAVASCRIPTISSEXY) to get 20% off the DiscoverMeteor book when you checkout:
http://discovermeteor.com/javascriptissexy

  1. Discover Meteor book ($39 $31.20)
  2. EventedMind screencasts ($29 $18.85)

Important Note: Don’t just watch the videos and read the book; be sure to write your own code and build the application as you follow the lessons.

Cost of Resources (EventedMind plus DiscoverMeteor): $50.05

The Ultimate Study Guide for Learning Meteor Properly

Let’s get to work.

Have a Go at the Appetizer: A Gentle Introduction to Meteor

Before we begin the study guide, the main course, you should at least have a gentle introduction to Meteor. Go take either one of the following tutorials:

1. Your First Meteor Application: This free online book (it’s a tutorial that will take about 30 minutes) gives you a gentle introduction to Meteor, with basic instructions on using the terminal and more. If necessary, skip some of the elementary instructions.

2. The official Meteor Tutorial

Be sure to come back and have a go at the main course after you finish the appetizer, or you may remain unfilled.

Day 1

Introduction: Setup and Getting Started

  1. EventedMind: What is Meteor?
  2. EventedMind: Getting Set Up
  3. EventedMind: Using Git, Github and Meteor Versions
  4. DiscoverMeteor: Read the Introduction chapter
  5. DiscoverMeteor (This is optional): Read the Using Git & GitHub chapter

Chapter 1: Anatomy of a Typical Meteor Application

  1. EventedMind: Build a Simple Application Part 1
  2. EventedMind: Build a Simple Application Part 2
  3. EventedMind: Build a Simple Application Part 3
  4. EventedMind: Build a Simple Application Part 4

Day 2

Chapter 2: Reactive Programming and Meteor Frontend Framework

  1. EventedMind: Introducing the em Scaffolding Tool
  2. EventedMind: Creating Views (specifically, learn how to generate views)
  3. ModernWeb.com: 
Functional Reactive Programming in JavaScript
  4. Meteor Manual: Deps Introduction
    (Read sections 1 to 4)
  5. Meteor Manual: Intro to Blaze.js, Meteor frontend framework
    Read sections 0 to 3. The sections are brief but illuminating
  6. DiscoverMeteor: Read the Getting Started chapter
  7. DiscoverMeteor: Read the Templates chapter

Chapter 3: Meteor Collections and Mimimongo

  1. EventedMind: How do Client Cursors Work?
  2. EventedMind: Anatomy of a Collection Insert
  3. EventedMind: How does the Client Synchronize Writes with the Server?
  4. DiscoverMeteor: Read the Collections chapter
  5. DiscoverMeteor: Read the Latency Compensation chapter
    Important Note: Don’t do the exercise yet. Don’t add the code from this chapter to your application yet. You will do that on day 5. Just read the chapter and study the code.

Day 3

Chapter 4: Publications and Subscriptions

  1. EventedMind: PubSub in Meteor
  2. EventedMind: Publishing a Cursor
  3. EventedMind: Merge Box: Merging the Client View of Data
  4. EventedMind: The Connection Data Store
  5. EventedMind: Meteor Subscription Optimization
  6. DiscoverMeteor: Read the Publications and Subscriptions chapter
  7. DiscoverMeteor.com: A Primer on Meteor Security

Chapter 5: Routing In Depth (Using Iron Router)

  1. EventedMind: Using Iron Router—Getting Started
  2. EventedMind: Dynamic Paths
  3. EventedMind: Link Helpers
  4. EventedMind: Rendering with Data
  5. EventedMind: Layouts and Regions
  6. EventedMind: Using Route Options
  7. EventedMind: The New RouteController
  8. EventedMind: Subscribing to Data
  9. DiscoverMeteor: Read the Routing chapter

Day 4

Chapter 6: Meteor Reactivity In Depth

  1. Meteor Manual: Deps Continued—Meteor Reactive Programming In Depth
    Read sections 5, 6 and 7
  2. DiscoverMeteor: Read the Reactivity chapter
  3. DiscoverMeteor: Read the The Session sidebar

Chapter 7: Introducing the Meteor Accounts Package

  1. MeteorTips.com: How To Make a Custom Registration (and Login) Form in Meteor
  2. DiscoverMeteor: Read the Adding Users chapter
  3. Eventedmind.com: Customizing Login

Chapter 8: Understand Meteor Methods

  1. EventedMind: What are Meteor Methods?
  2. EventedMind: The Mechanics of Methods
  3. EventedMind: The Livedata WriteFence
  4. EventedMind: Synchronizing Method Writes
  5. EventedMind: Collections Use Methods
  6. EventedMind: Saving and Retrieving Original Documents
  7. EventedMind: Unblocking a Method

Day 5

Chapter 9: Advanced Routing and Advanced Subscriptions

  1. EventedMind: Creating Views
    (In this section, you will learn how to use the em scaffolding tool to create views.)
  2. EventedMind: Creating Routes with Data
    (In this section, you will learn how to use the em scaffolding tool to create routes.)
  3. EventedMind: RouteController Event Handling
  4. EventedMind: Using the new waitOn Option
  5. EventedMind: Hooks and Plugins
  6. EventedMind: Server Side Routes
  7. DiscoverMeteor: Read the Creating Posts chapter
  8. DiscoverMeteor: Read the Allow and Deny chapter
  9. DiscoverMeteor: Add the code from the Latency Compensation chapter (You already read this chapter on day 2, but you didn’t add the code then. So add it now.)
  10. DiscoverMeteor: Read the Editing Posts chapter
  11. DiscoverMeteor: Read the Errors chapter

Chapter 10: Meteor Packaging System and NPM

  1. Meteor Hackpad Document: The Essentials of Meteor Packages
  2. MeteorHacks.com: NPM Meteor Integration is Back for Meteor 0.6.5 (ignore the version number)
  3. DiscoverMeteor: Read the Creating a Meteor Package chapter
  4. Discovermeteor.com Blog: Wrapping NPM Packages for Meteor

Day 6

Chapter 11: Using the Meteor MongoDB API

  1. DiscoverMeteor: Read the following chapters:
    Comments
    Denormalization
    Notifications

Meteor Security Overview

  1. 
DiscoverMeteor.com: A Primer on Meteor Securityhttps://www.discovermeteor.com/blog/meteor-and-security/
  2. MeteorHacks.com: Cross Site Scripting(XSS) and Meteorhttps://meteorhacks.com/xss-and-meteor.html

Chapter 12: Complete the Social News Application

  1. DiscoverMeteor: Read the following chapters:
    Advanced Reactivity
    Pagination
    Voting
    Advanced Publications
    Animations

Important Notice About MongoDB

At this point, you will definitely need my book, MongoDB for JavaScript Applications, to help you build your own Meteor applications, since none of the noted resources, or any other book for that matter, cover MongoDB in depth for Meteor applications.

End of course ———————————–

Extras

Appendix A: Seven Meteor Techniques and Tips You Should Know

Make a note of the topics in this section so you can refer to them when the need arises.
Publishing to a Client Only Collection

Writing Async Code in Meteor
Wrap Async
Using Async NPM Modules in Meteor


Improved Async Utilities in Meteor-NPM

Implementing RESTful APIs in Meteor
Learn to do it with Iron Router
Or use this Meteor Package
Details on this Github page
Collection API

For an detailed overview of various ways to implement a RESTful endpoint in Meteor, read more on Meteorpedia.com.

Test Your Meteor Apps: Get The Meteor Testing Manual

Meteor Performance and Scaling
Does Meteor Scale?
Scaling Meteor: The Challenges of Real-time Apps
How to Scale Meteor?
How Is the Meteor-MongoDB Combination Performing Under Production Load?

Monitor Your Meteor Applications
Kadira monitors your Meteor application for performance issues and it tracks errors.

Awesome Error Tracking Solution for Meteor Apps with Kadira

Building Static Websites with Meteor

Meteor Security
Meteor & Security: Setting the Record Straight


Meteor security resources



Mining Massive Datasets

$
0
0

Question 1

How many distinct 3-shingles are there in the string “hello world”? (Note: the quotes are not part of the string.)
9
4
10
6

Question 2

Here is a column representing a set, whose minhash value we wish to compute. The hash function we shall use to determine the order of rows is h(x) = 3x+2 modulo 11.
Row Number Column Value
1 0
2 1
3 0
4 1
5 0

What is the minhash value for this column? Note: take the minhash value to be the row number, NOT the hash value of the row number.

1
2
3
4
5

Question 3

This question involves three different Bloom-filter-like scenarios. Each scenario involves setting to 1 certain bits of a 10-bit array, each bit of which is initially 0.Scenario A: we use one hash function that randomly, and with equal probability, selects one of the ten bits of the array. We apply this hash function to four different inputs and set to 1 each of the selected bits.

Scenario B: We use two hash functions, each of which randomly, with equal probability, and independently of the other hash function selects one of the of 10 bits of the array. We apply both hash functions to each of two inputs and set to 1 each of the selected bits.

Scenario C: We use one hash function that randomly and with equal probability selects two different bits among the ten in the array. We apply this hash function to two inputs and set to 1 each of the selected bits.

Let a, b, and c be the expected number of bits set to 1 under scenarios A, B, and C, respectively. Which of the following correctly describes the relationships among a, b, and c?

a < b = c
a = b < c
a = b = c
a < b < c

Question 4

In this market-basket problem, there are 99 items, numbered 2 to 100. There is a basket for each prime number between 2 and 100. The basket for p contains all and only the items whose numbers are a multiple of p. For example, the basket for 17 contains the following items: {17, 34, 51, 68, 85}. What is the support of the pair of items {12, 30}?
2
3
4
5

Question 5

To two decimal places, what is the cosine of the angle between the vectors [2,1,1] and [10,-7,1]?
0.65
0.47
0.84
-0.38

Question 6

In this question we use six minhash functions, organized as three bands of two rows each, to identify sets of high Jaccard similarity. If two sets have Jaccard similarity 0.6, what is the probability (to two decimal places) that this pair will become a candidate pair?
0.64
0.36
0.74
0.26

Question 7

Suppose we have a (.4, .6, .9, .1)-sensitive family of functions. If we apply a 3-way OR construction to this family, we get a new family of functions whose sensitivity is:
(.4, .6, .999, .729)
(.4, .6, .973, .271)
(.4, .6, .973, .729)
(.4, .6, .999, .271)

Question 8

Suppose we have a database of (Class, Student, Grade) facts, each giving the grade the student got in the class. We want to estimate the fraction of students who have gotten A’s in at least 10 classes, but we do not want to examine the entire relation, just a sample of 10% of the tuples. We shall hash tuples to 10 buckets, and take only those tuples in the first bucket. But to get a valid estimate of the fraction of students with at least 10 A’s, we need to pick our hash key judiciously. To which Attribute(s) of the relation should we apply the hash function?
Student only
Course only
Course and Grade
Student and Course

Question 9

Suppose the Web consists of four pages A, B, C, and D, that form a chainA–>B–>C–>D

We wish to compute the PageRank of each of these pages, but since D is a “dead end,” we will “teleport” from D with probability 1 to one of the four pages, each with equal probability. We do not teleport from pages A, B, or C. Assuming the sum of the PageRanks of the four pages is 1, what is the PageRank of page B, correct to two decimal places?

0.20
0.25
0.33
0.40

Question 10

Suppose in the AGM model we have four individuals (A,B,C,D} and two communities. Community 1 consists of {A,B,C} and Community 2 consists of {B,C,D}. For Community 1 there is a 30% chance it will cause an edge between any two of its members. For Community 2 there is a 40% chance it will cause an edge between any two of its members. To the nearest two decimal places, what is the probability that there is an edge between B and C?
0.58
0.40
0.70
0.42

Question 11

X is a dataset of n columns for which we train a supervised Machine Learning algorithm. e is the error of the model measured against a validation dataset. Unfortunately, e is too high because model has overfitted on the training data X and it doesn’t generalize well. We now decide to reduce the model variance by reducing the dimensionality of X, using a Singular Value Decomposition, and using the resulting dataset to train our model. If i is the number of singular values used in the SVD reduction, how does e change as a function of i, for i ∈ {1, 2,…,n}?
e starts low, then increases, then decreases.
e doesn’t change.
e starts low, then decreases
e starts high, then decreases, then increases.
e starts high, then decreases.

Question 12

A is a users times movie-ratings matrix like the one seen in class. Each column in A represents a movie, and there are 5 movies in total. Recall that a Singular Value Decomposition of a matrix is a multiplication of three matrices: U, Σ and V. The following is such a decomposition for matrix A:

What is the cosine similarity between a user with ratings [5,0,0,0,0] and a user with ratings [0,2,0,0,4] using their concept space vectors? (round your answer to two decimals. For example, if your answer is 0.345 the rounded answer is 0.35. If your answer is 0.344, the rounded answer is 0.34.)

Answer for Question 12

Question 13

What is matrix M value when solving topic sensitive Pagerank with teleport set {0,1} for the following graph? Use beta=0.8. (Recall that the teleport set contains the destination nodes used when teleporting).
11/30 1/10 1/10
11/30 1/10 1/10
4/15 8/10 0
1/3 0 0
1/3 0 0
1/3 1 0
8/30 0 0
8/30 0 0
8/30 8/10 0
1/6 1/2 1/2
1/6 1/2 1/2
1/3 1 0

Question 14

Here are two sets of integers S = {1,2,3,4} and T = {1,2,5,6,x}, where x stands for some integer. For how many different integer values of x are the Jaccard similarity and the Jaccard distance of S and T the same? (Note: x can be one of 1, 2, 5, or 6, but in that case T, being a set, will contain x only once and thus have four members, not five.)
An infinite number
6
2
4

Question 15

Which of the following are advantages of using decision trees? (check all correct options)
It avoids overfitting
It can handle multiple output easily
It can handle categorical input data without any special preprocessing
The resulting model is easy to interpret
The training is easy to parallelize

Question 16

The hard margin SVM optimization problem is:

and the soft margin SVM optimization problem is:

Consider a dataset of points xi,….xn with labels yi,….,yi ∈ {-1, 1}, such that the data is separable. We run a soft-margin SVM and a hard-margin SVM, and in each case we obtain parameters w and b. Check the option that is true:

The resulting w and b can be different, and the boundaries can be different.
The resulting w and b are the same in the two cases, hence boundaries are the same.
The resulting w and b can be different in the two cases, but the boundaries are the same.
None of the above.

Question 17

Consider the following MapReduce algorithm. The input is a collection of positive integers. Given integer X, the Map function produces a tuple with key Y and value X for each prime divisor Y of X. For example, if X = 20, there are two key-value pairs: (2,20) and (5,20). The Reduce function, given a key K and list L of values, produces a tuple with key K and value sum(L) i.e., the sum of the values in the list. Given the input 9, 15, 16, 23, 25, 27, 28, 56 which of the following tuples appears in the final output?
(7, 51)
(3, 51)
(4, 51)
(5, 51)

Question 18

Suppose we run K-means clustering over the following set of points in 2-d space using the L1 distance metric: (1,1), (2,1) (2,2), (3,3), (4,2), (2,4), (4,4). We pick k=2 and the initial centroids are (1,1) and (4,4). Which of these is the centroid of the cluster containing the point (3,3) when the algorithm terminates?

Recall that the L1 distance between two points is the sum of their distances along each dimension, e.g. the L1 distance between (1, 2) and (-1, 3) is 3.

(5/3, 4/3)
(13/4, 13/4)
(3, 3)
(4, 4)

Question 19

In an implementation of the Bradley-Fayyad-Reina (BFR) algorithm over a 3-dimensional data set, the discard set for a cluster is summarized by the following parameters:

N = 1000
SUM = (-323, 1066, 1776)
SUMSQ = (412, 1500, 3500)

Which of the following choices is closest to the Mahalanobis distance of the point (0,0,0) from the centroid of this cluster?

2.55
1.55
3.55
4.55

Question 20

Consider an execution of the BALANCE algorithm with 4 advertisers, A1, A2, A3, A4, and 4 kinds of queries, Q1, Q2, Q3, Q4. Advertiser A1 bids on queries Q1 and Q2; A2 bids on queries Q2 and Q3; A3 on queries Q3 and Q4; and A4 on queries Q1 and Q4. All bids are equal to 1, and all clickthrough rates are equal. All advertisers have a budget of 3, and ties are broken in favor of the advertiser with the lower index (e.g., A1 beats A2). Queries appear in the following order:

Q1, Q2, Q3, Q3, Q1, Q2, Q3, Q1, Q4, Q1

Which advertiser’s budget is exhausted first?

A2
A4
A1
A3

Question 21

Consider the bipartite graph with the following edges (you might want to draw a picture):

(a,1), (a,3), (b,1), (b,2), (b,4), (c,2), (d,1), (d,4)

Which of the following edges appears in NO perfect matching?

(b, 4)
(d, 4)
(a, 1)
(c, 2)

Question 22

The Utility Matrix below captures the ratings of 5 users (A,B,C,D,E) for 5 movies (P,Q,R,S,T). Each known rating is a number between 1 and 5, and blanks represent unknown ratings. What is the Pearson Correlation (also known as the Centered Cosine) between users B and D?
P Q R S T
A 2 4
B 3 1 2
C 5 5
D 4 3 2
E 4 5 1
0.74
0.96
0.5
0.23

Question 23

The Utility Matrix below captures the ratings of 5 users (A,B,C,D,E) for 5 movies (P,Q,R,S,T). Each known rating is a number between 1 and 5, and blanks represent unknown ratings. Let (U,M) denote the rating of movie M by user U. We evaluate a Recommender System by withholding the ratings (A,P), (B,Q), and (C,S). The recommender system estimates (A,P)=1, (B,Q)=4, and (C,S)=5. What is the RMSE of the Recommender System, rounded to 2 decimal places?
P Q R S T
A 2 4
B 3 1 2
C 5 5
D 4 3 2
E 4 5 1
1.44
2.36
0.0
0.82

Question 24

We are going to perform a hierarchical (agglomerative) clustering on the four strings {he, she, her, their}, using edit distance (just insertions and deletions; no mutations of characters). Initially, each string is in a cluster by itself. The distance between two clusters is the minimum edit distance between two strings, one chosen from each of the two clusters. When we complete the hierarchical clustering, there is one cluster containing all four strings, and we performed three mergers of clusters to get to that point. For each of the three mergers there was a distance between the merged clusters. What is the sum of those three distances?
3
4
5
It depends on how we break ties when there are two pairs of clusters at the same distance.

Mining Massive Datasets

$
0
0

Question 1

Suppose ABCD is not a frequent itemset, while ABC and ACD are frequent itemsets. Which of the following is definitely true?
ABD is a frequent itemset.
ABCE is not a frequent itemset.
BC is a frequent itemsel.
ABCD is in the negative border.

Question 2

Suppose we are representing sets by strings and indexing the strings according to both the symbol and its position within the prefix. We want to find strings within Jaccard distance at most 0.2 (i.e., similarity at least 0.8), and we are given a probe string of length 24. Into how many buckets must we look?
18
5
15
21

Question 3

In the following question we consider an example of the implementation of the PCY algorithm. All numbers should be treated as decimal; e.g., “one million” is 1,000,000, NOT 220 = 1,048,576. All integers (item counts and bucket counts) require 4 bytes.We have one billion bytes of main memory available for the first pass. There are 100,000,000 items, and also 100,000,000 baskets, each of which contains exactly 10 items. Say that PCY is effective if the average count of a bucket is at most half the support value. For the given data, what is the smallest support value for which PCY will be effective?
6
60
600
6000

Question 4

Suppose we want to represent the multiplication of two 10-by-10 matrices as a “problem” in the sense used for our discussion of the theory of MapReduce algorithms. How many pairs are in the input-output mapping?
100
2000
1000
20

Question 5

The “all-triples” problem is described by n inputs, (n choose 3) outputs, and an input-output mapping where each output is connected to a different set of three inputs. Suppose q is the reducer size. Which of the following functions of n and q approximates, to within a constant factor, the lowest possible replication rate for a mapping schema that solves this problem?
r = n/q2
r = n3/q
r = n2/q
r = n2/q2

Question 6

Suppose we are running the DGIM algorithm (approximate counting of 1’s in a window. At time t, the list of bucket sizes being maintained is 8,4,4,2,1,1. At times t+1, t+2, and t+3, 1’s arrive on the input. Assuming no buckets are deleted because they fall outside the window, what are the numbers of buckets after each of the times t+1, t+2, and t+3?
time t+1: 6; time t+2: 7; time t+3: 5.
time t+1: 5; time t+2: 6; time t+3: 5
time t+1: 7; time t+2: 6; time t+3: 7.
time t+1: 7; time t+2: 8; time t+3: 9

Question 7

Apply the HITS algorithm to a network with four pages (nodes) A, B, C, and D, arranged in a chain:A–>B–>C–>D

Compute the hubbiness and authority of each of these pages (scale doesn’t matter, because you only have to identify pages with the same hubbiness or the same authority). Which of the following is FALSE.

A and B have the same hubbiness.
A and B have the same authority.
B and C have the same authority.
B and C have the same hubbiness.

Question 8

Let G be the complete graph on five nodes (i.e., there is an edge in G between every pair of distinct nodes). What is the sum of the squares of the elements of the Laplacian matrix for G?
100
20
40
0

Question 9

Note: This problem is similar to one on the Basic Final, but involves a combiner.Consider the following MapReduce algorithm. The input is a collection of positive integers. Given integer X, the Map function produces a tuple with key Y and value X for each prime divisor Y of X. For example, if X = 20, there are two key-value pairs: (2,20) and (5,20). The Reduce function, given a key K and list L of values, produces a tuple with key K and value sum(L) i.e., the sum of the values in the list.

Suppose we process the input 9, 15, 16, 23, 25, 27, 28, 56, using a Combiner. There are 4 Map tasks and 1 Reduce task. The first Map task processes the first two inputs, the second the next two, and so on. How many input tuples does the Reduce task receive?

8
11
3
6

Question 10

Consider an AdWords scenario with 4 advertisers competing for the same query Q, all with the same budget of $100 and the same clickthrough rate. The table below shows the bid and the dollars spent by each advertiser until this point. Suppose we use Generalized BALANCE, and show one ad for each query. Which advertiser do we pick the next time query Q comes up?
Advertiser Bid Spend
A $1 $20
B $2 $40
C $3 $60
D $4 $80
C
D
B
A

Question 11

Suppose we wish to estimate the rating of movie M by user U using item-Item Collaborative Filtering, but there are no movies really similar to movie M. The average of all ratings is 3.5, user U’s average rating is 3.1, and movie M’s average rating is 4.3. What is our best guess for the rating of movie M by user U using a global baseline estimate?
3.9
3.5
4.7
4.3

Question 12

The table below shows data from ten people showing whether they like four different ice cream flavors.

Fit a decision tree that predicts whether somebody would like Peanut ice cream based on whether she liked the other three flavors. Use Information gain as the measure to make the splits. What is the order of splits?
Strawberry->Chocolate->Vanilla
Vanilla->Chocolate
Only Chocolate
Chocolate->Vanilla
Chocolate->Strawberry->Vanilla

Question 13

For an unknown graph with 3 nodes, r1 is the topic sensitive PageRank using teleport set {0, 1} and r2 is is the topic sensitive PageRank using teleport set {1}. What’s the value of the topic sensitive PageRank vector when using teleport set {0}?
2r1 – r2
r1 – r2
r2 – r1
r1 – 2r2

Question 14

A is a users times movie-ratings matrix like the one seen in class. Each column in A represents a movie, and there are 5 movies in total. Recall that a Singular Value Decomposition of a matrix is a multiplication of three matrices: U, Σ and V. is the following is such a decomposition for matrix A:

If we get three new users with the following rating vectors: User 1: [5,0,0,0,0] User 2: [0,5,0,0,0] User 3: [0,0,0,0,4] If for advertising purposes we want to cluster these three customers into two clusters using the movie concepts as features. How would you cluster them? (use cosine distance).
[1,3] and [2]
[1,2] and [3]
[1,2,3]
[1] and [2] and [3]
[1] and [2,3]

Question 15

The soft margin SVM optimization problem is:

If for some i we have ξ=0, this indicates that the point xi is (check the true option):
Correctly classified
A support vector
Incorrectly classified
Exactly in the decision boundary

Distributed processing with noSQL databases enables fast geoprocessing of big spatial data

$
0
0

Distributed processing with noSQL databases enables fast geoprocessing of big spatial data

LocationTech LogoI was lucky enough to attend theHigh Performance Geoprocessing Symposium in Ottawa.  It is amazing how far some very exciting geospatial projects focused on “big spatial data” under the LocationTech umbrella have come in the last few years. If you are not familiar with LocationTech, it is a working group hosted by the Eclipse Foundation with the objective of developing advanced open source geospatial technologies. Eclipse is a vendor neutral not-for-profit community collaborating on commercially-friendly open source software.

The talks today described projects that have been developed under the impetus of “big spatial data” and user demand for faster, more responsive geoprocessing.

GeoTrellis – high performance raster processing

GeoTrellis logoRobert Cheetham of Azavea described how his project GeoTrellis is achieving “advanced spatial analysis on the web.”  The challenges that this project strives to overcome are

  • performance and scalability – performing overlays involving large rasters for multi-criteria suitability,  optimal siting analysis or simulation involves serious processing and to be able to do this in real-time with the type of response that a web user expects requires new algorithms
  • large datasets – such as social media streams like Twitter, the huge volumes of data required to model a smart city, or just the volume of data require to monitor and run a modern city on a daily basis
  • user interface – an ArcGIS syle menu bar with thousands of options is fine for trained GIS professionals, but an urban planner or other non-GIS professional needs something better

GeoTrellis distributed processingGeoTrellis has been designed to address these challenges.  It is open source released under an Apache licence, which means that all you need to do is indicate attribution, otherwise you can do anything you like with it.  It provides high performance raster input/output, geoprocessing, and web services using distributed processing to achieve quite amazing throught put for large raster datasets.  Robert described overlay operations with 6000 x 5000 pixel rasters, hundreds of megabytes in file size, that GeoTrellis performs in 200 milliseconds, effectively real-time from the point of view of a web user.

GeoTrellis relies on other open source libraries to achieve these phenomenal processing speeds.  It uses the Hadoop (a noSQL distributed database) file system (HDFS), but replaces Hadoop’s MapReduce (MapReduce is software for  processing vast amounts of data in-parallel on large clusters of commodity hardware) with Apache Spark for distributed processing.  Robert said that one way to look at GeoTrellis is as the geospatial enabled version of Spark.

OpenTreeMapRobert described a number of applications that involve overlaying very large raster databases for analysis or simulation where different scenarios can be run in real-time so that the user can quickly assess alternatives.  For example, OpenTreeMap is a crowdsourced urban forest database where using GeoTrellis users can quickly assess the costs and benefits and optimize the planting of urban trees with different objectives, shading, air quality, reducing runoff, and so on.  This would not be possible with traditional GIS and geospatial databases.

GeoJinni – Spatial Hadoop

Spatial Hadoop logoAhmed Eldawy from the University of Minnesota describes a LocationTech project he has been working on for several years that was originally called Spatial Hadoop, but has been renamed to GeoJinni.  Perhaps the best known NoSQL distributed database, Hadoop knows nothing about spatial data.  It doesn’t support spatial datatypes, spatial indexes or spatial analytics.

GeoJinni is a comprehensive extension to Hadoop that allows efficient processing of spatial data. It injects spatial awareness in the different layers and components of Hadoop to make it more efficient to store and process big spatial data.  It is a spatially-enabled Hadoop that supports spatial datatypes, spatial indexes, spatial analysis, and spatial predicates (such as “intersect”).  GeoJinni can be installed as an extension to an existing Hadoop cluster which means that it can be run without the need to give up existing Hadoop installations. It is portable to run with a number of Hadoop distributions including Apache Hadoop, Cloudera, and Hortonworks.

Some of the applications where GeoJinni is currently used are modeling world traffic and querying and visualizing spatio-temporal satellite data.

Currently it uses MapReduce to distribute processing across multiple machines, but in the future the plan is to extend support to Spark.

GeoMesa – high performance geospatial (vector) analytics

GeoMesa logoChris Eichelberger from theGeoMesa project described an approach to big spatial data that focusses on vector data and compliance with existing widely used geospatial APIs.

The problem as outlined by Chris is if you want to find all the points that are within a certain distance from a fixed point your strategy depends on the total number of points you are dealing with.

  • hundreds of points – can be handled reasonably well (but not optimally) by a full table scan with an SQL database such as Oracle or PostgreSQL.
  • hundreds of thousands of points – you need PostGIS or Oracle Spatial to handle this efficiently.  The widely used GeoTools API is an open source Java library that provides tools for geospatial data management and analytics.  GeoTools supports plugins for various databases including MySQL, Oracle, SpatiaLite and SQL Server, but the most widely used database with GeoTools is PostGIS.
  • hundreds of millions (typical of Twitter streams, for example) – this volume of data is in the realm of big spatial data and requires a new and different approach

NoSQL (“not only SQL”) databases

I have already mentioned Hadoop.  To deal with data volumes that are too large for traditional SQL databases, beginning in 2004 Google developed “BigTable” which is a compressed, high performance, and proprietary data storage system built on the Google File System that is used by a number of Google applications including Google Maps.  Apache Accumulo is a distributed “key/value store” that is based on Google’s BigTable design and is built on top of Apache Hadoop and other Apache projects.   “Key/value store” simply means that every record has a unique identifier, often a hash.  For putting geospatial data into a key/value store the key concept is that of the “geohash” converting a 2D, 3D or 4D coordinate such as a lon and lat, lon, lat and elevation or a lon, lat, elevation, and time to an integer index, such as a quadtree or R-Tree index, that can be used to order and rapidly retrieve spatial data.  Geohash means that you now can take advantage of key/value databases such as Accumulo and programs such as MapReduce – Accumulo uses MapReduce for distributed processing. GeoMesa aims to provide as much of the spatial querying and data manipulation to Accumulo as PostGIS does to Postgres.

An especially exciting thing about GeoMesa is that it is an implementation of the GeoTools API on Apache Accumulo instead of PostGIS.  If you have an application that was developed with GeoTools, you can simply replace PostGIS with GeoMesa to handle big spatial data volumes.  There is even a plug-in for GeoServer so that geospatial data in Accumulo to be shared and visualized via Open Geospatial Consortium (OGC) standard services, such as WFS.  Chris also announced that the National Geospatial-Intelligence Agency’s (NGA) GeoWave project, which shares many goals with GeoMesa, will be folded into GeoMesa.

Spatio-temporal

A fairly common query when dealing with social media streams such as Twitter is to “find all the tweets from locations within 10 km and within 15 minutes of where I was in my car at 9:45 this morning.”  Chris outlined how GeoMesa can handle that type of query through GeoMesa’s support for an Open Geospatial Consortium standard called the web geoprocessing service (WPS).


项飚:中国人像蜂鸟,振动翅膀悬在空中

$
0
0

界面》项飚:中国人像蜂鸟,振动翅膀悬在空中

Source

郭玉洁

今天的中国学术界正惯于利益代言与挑边站队这两个标准动作,为此项飚显得像个特例。他勤奋敏学,敢于发出理性的声音,正气且充满洞见。他的博士论文,描述了“猎身”这一印度独有的现象,获得了人类学界的重要奖项,安东尼·利兹奖。它被视为全球民族志的新典范。

12/17 牛津

z_141881099796375800_a1000x570

早在北京大学念书时,项飚就是一个传奇。1992年,读大二的他偶然听到温州人在北京南郊大红门聚居,人称“浙江村”。在一个早晨,他六点出发,倒了六趟车,到达南苑乡政府,开始了第一次田野调查。这一研究持续了四年,最后形成他的硕士论文《跨越边界的社区:北京“浙江村”的生活史》,成为了中国社会学界的经典作品。在这部著作里,项飙描述了这个充满活力、不停变动的社区,他说,他们才是社会发展的真正动力。那时他才26岁。

随后,项飚被牛津大学人类学系录取。在这个世界上最古老的人类学系,项飙成了一个谜。由于出国前忙于研究,他无心学习英语,曾去过新东方,但他感觉像进了气功班或其他神秘活动的讲演课,落荒而逃。因此到牛津之初,他连基本的对话都无法维持,也不敢去听课和各种讨论会,同学们觉得这个来自中国的男生神秘莫测。

项飚的迷惘不仅是来自语言、知识面,更是中国学人的普遍困境。现代学术来自西方,学术标准、理论话语,都离不开西方的影响。去欧美留学,项飚看作是去西天取经。但是西方理论立基于西方的历史传统和现实问题,它和中国的现实有什么关系?同时,在全球化的世界,中国问题又绝不可能退回封闭的系统。项飚带着这种迷惘、野心,穿行在知识生产的世界体系,更穿行在政治经济学意义上的世界体系。

他极其勤奋地完成了自己的博士论文,《全球猎身:世界信息产业和印度的技术劳工》(以下简称《猎身》)。在这项研究里,他描述了“猎身”这一印度独有的现象,即印度人在世界各地开办“劳力行”(body shop),从印度招收IT工人,然后根据客户企业的项目需要,把这些劳动力提供给客户。围绕这一现象,项飚想要分析的是全球政治经济体系,在这个体系中,印度为全球IT产业贡献最有价值的资产——劳动力,美国在全世界吸收现成的、高质量的人才。硅谷的辉煌,离不开印度农村里低种性的妇女儿童,离不开印度的嫁妆制度。不同地区、不同阶层的人们原本是连在一起的,而这是基于一个不平等的关系,并生产着新的不平等。

这部著作获得了人类学界的重要奖项,安东尼·利兹奖,也被视为全球民族志的新典范。对于中国新一代学人来说,重要的不是进入西方学术体系,而是创造着自己的世界观。

项飚留在了牛津人类学系,他的下一个研究对象是中国东北在全世界的移民。他仍在苦苦思索,想要通过这一研究,写出对于中国社会变化的创见。而一个好的学者,正是在思考世界的新角度,揭示别人没有发现的奥秘,由此,他帮助人们看待世界。

访谈:

柏林墙倒塌之后,出现的不是全球化,是同一化,那种对资本主义的批判,缺乏了实际生活的源泉和参照。

一、

界面:我们从你最早对“浙江村”的研究谈起吧。我读大学的时候就听说过这个研究,当时印象很深刻,很好奇你为什么选择“浙江村”这样的地方,好像有点脏乱差,一般人都不太去的。这次读《跨越边界的社区》,回忆起当时的疑问,觉得很有意思。其实我们自己,读书、求学也是一种流动,但是很显然,流动有阶层、文化身份的区别,“浙江村”和“中关村”似乎就有高下之分。你为什么会选择“浙江村”,当时在1990年代就有这种敏感吗,会选择比较边缘的群体、阶层?

项飚:是有对边缘敏感,但不是从阶层的角度。我觉得对我个人也好,对中国国内的知识界、公众也好,阶层这个视角 是2000年以后出现的。我当时对浙江村这么边缘的个案感兴趣,是因为中国改革从80年代以后,主导的思想就是要搞现代化,所谓中国落后了、要追赶,包括要发展市场经济,要有理性精神。这在当时是笼罩性的话语。在这样的话语下,“浙江村”被当作一个问题,他们是“低素质的人口”,和规范的现代市场经济格格不入,是一个负担。

因此,我对“浙江村”的兴趣,主要是为了对当时的主流话语进行反思和批判,想从这个边缘群体里面,看它内在的合理性。尽管用正式的教育标准衡量,他们素质很低,但是它有一套自己的计算方法,有内在的经济理性。

所以我当时的想法里有一个悖论,一方面,我想通过处在边缘的主体批判现代化主义、精英主义的模式,但是另一方面,我没有全面地对现代化话语的根基进行批判。由于这种批判的不彻底性,导致了我的一些盲点。盲点之一就是,对“浙江村”内部的阶层化不敏感。我们把“浙江村”想像成一个整体,这完全是通过户口体制,从北京主流的城市生活来看的。但是你用今天的阶层角度分析,就很难讲了,“浙江村”内部很多人显然比北京平均生活水平高很多,但同时也有很多来自江西、湖南的打工仔,情况相当不好。阶层之间并没有什么令人毛骨悚然的虐待,但经济差异是很大的。我当时没有批判这一点,主要是我着急批判精英主义和户籍政策等。

界面:你一直在批评这种经济学主导的发展观忽略了人本身。但是这种发展观几乎笼罩一切,你觉得它对中国社会的影响到底是什么?

项飚:我觉得很难精确概括,只能说就一般的观察,这让大家有一种普遍的失落、恐惧。市场力量笼罩一切,生活完全市场化。社会有各种各样的反抗,包括1990年代的人文精神讨论,都可以认为是对市场化潮流的批判。但是这些批判一般停留在人文情怀啊,生活方式的多样化啊,我们没有真正在理论上把问题讲清楚,没有把市场作为经济的组织方式、我们生活的组织方式,作一个系统的严肃的分析。

什么意思呢,今天要是出了什么问题,大部分人觉得还是要靠市场的继续发展来解决。几年前,有官员对待老百姓的抗议,说人民内部矛盾,要用人民币解决。这个话,在国内的语境下听起来,是比较务实的看法,不要去打压,不要去抓人。因为人民群众要争的虽然有实际利益,但也要争一个理,争一口气,这个是原则问题。现在所有的事情都按实际利益摆平。只要能摆平,只要你不去北京上访,我就给你钱。你这么做了之后,老百姓就顺着这么来了。所有社会冲突,都化约为实际利益。所以就有“刁民”,只要有空隙,即使没有理由,也要来围攻、上访,拿实际利益。

人活着,总是要讲公平、正义,总是要说“道理”的吧,这些是超越市场经济、本来就是要对市场进行制约,但是现在连这一块都物质化了,用市场思维解决了,这肯定是越做越糟了。

从另一个角度,现在城市里的小资,有一种个人情感、生活方式方面的抗议,但根本上还是很弱。我们还是需要建立起一套超越了唯经济利益的公共生活的规则。我举一个简单的例子,《蜗居》这个电视剧有一个有意思的含意,就是说因为房子、基本的生活资料被完全市场化之后,真正纯洁的爱情,只能属于开发商,只有他们有经济条件去感受这种所谓的浪漫。

这方面我有点左派倾向。我觉得靠城市阶层的生活方式、人文情怀去抗拒市场,是非常表面的。因为你要搞这些情调,不是都要靠花钱去实现的吗?一定要跟工农结合,跟底层的生活方式、生活诉求结合起来,要做大的考虑,把整个中国的运行方式、结构想清楚。中国现在的情况,你要看底层,要看农民工,他们其实是非常市场化的,意识形态、生活追求上完全受物质利益驱动。他们没有办法,来城里打工,是最受剥削的劳动力。但是你问他的未来,也都是市场化的想象,比如说:“只要自己努力,就能成功。”

我的意思是,不能浪漫地认为,底层的生活方式会提供一个新的未来。要把他们的生活方式想透。是怎么样的情况把他们变成了这样一种思想方式、行为方式?有没有别的办法,使这样的工农群体有别的方式组织他们的生活?如果他们不转变,你只靠城市市民阶层的人文情怀,解决不了问题。只有工农群众哪一天也觉得,不用那么赚钱,自己有比较舒适满意的生活,这个就是今后的理想目标。

这个可能是欧洲和我们的最大的差别之一。他们的工人阶级,对幸福的追求确实是比较多元的,也有很强的自主性,不像中国,生活的意义完全是单一的,没有钱就是没有一切。

界面:但是欧洲工人阶级的现状是怎么形成的?是不是也经历了漫长的工人运动?

项飚:这个比较复杂,但是有一点:它意识形态上的多样化,是值得关注的。比方说英国,它的宗教势力,有非常黑暗、非常压迫性的一面,但另一方面,也有反市场的因素在里头,所以宗教势力防止了市场力量完全一体化。

第二,也许对我们国内读者更有意思的,其实是“冷战”时期,东西方的竞争,对促进欧洲的社会进步很重要。当时欧洲资本主义要证明自己不比共产主义差,很多欧洲知识分子又不断引用社会主义的各种实验来批判自己的社会,社会主义思潮是比较深入人心的,这样就形成了对市场和国家权力、对资本主义模式的批判。

还有一个很重要的因素,就是福利制度。像伦敦,为什么艺术那么发达?就是因为六、七十年代之后,很多人靠着国家福利,不用去工作了。我有很多大学同事,现在年纪很大了,就是当时那种yuppie,反社会的,写小说啊,搞萨特啊,他们的物质基础全部来自国家福利制度。现在福利制度削减,有很大的变化,但是像英国他们积累很多,历史的根基还在,思想的创造性还有,不过会不会出现像七、八十年代那种现代艺术大的发展,这个很难讲。

当时八十年代像BBC,Channel 4(第四频道),发展得很好,主要的原因第一是非商业性的,完全没有广告,操作上又是独立的;第二就是知识分子不断用东方的思想批判自己社会的生活方式。也有一批人批判苏联,对社会主义进行反思,再加上宗教的影响,当时社会心态上、思想上,一直是多元化,不使某一种力量太强大。

今天的情况,欧洲也很令人关注。我一直有个观点,“冷战”时期,不管是欧洲,还是中国的世界想像,都很全球化,有全球视野,但是“冷战”结束之后,柏林墙倒塌之后,出现的不是全球化,是同一化,那种对资本主义的批判,缺乏了实际生活的源泉和参照。

最后讲到中国,为什么变成了今天这么一个格局,最重要的原因是可能没有多元化。任何一种思想意识,都是在跟别的形态的交锋之中,不断丰富,对新的现实情况做出应对。否则的话,没有一个对立面,没有参照系,那你就僵化了。现在欧美所谓新自由主义的僵化,也是因为这样,它也没有参照系了。中国也是这样,缺乏讨论,缺乏多样意识形态的交锋,导致了思想空虚和精神空虚,然后才会出现最近引起不少关注的新一代网络“红人”。新“红人”新在三个地方。一是年轻,80后;二是真诚,语言活泼生动,和老式的照本宣科的宣传很不一 样;三是极端,有的选择了几乎是法西斯化的政治话语。这些都不矛盾。人在全面思想空虚之后,需要一种宗教式的皈依。绝对化的权力就可以满足这样的需要。他们的真诚是确实的,正因为真诚,所以特别值得讨论。

所以你可以看出我的颜色。第一在核心价值上,比较社会主义;第二在务实的层面,如何发展社会主义,在这方面我比较自由主义。我觉得一定要让社会主义跟别的主义竞争,在竞争中发展,不能仅仅靠推动。

界面:所以你认为学者、知识分子应该做的,是增加意识形态的多样化和思考。

项飚:对的,所谓独立思考,当然在中国语境下有特定的含义,是有价值的。但是世界上没有真正的独立思考,独立性也不一定重要,重要的是要了解别人各种想法和实践的合理性。我觉得人类学的精神很重要,人类学就是不断地提醒我们:人类历史很长,人类的活法很多,你要去了解不同的活法,不要认为你自己的活法最好。最重要的是了解不同的活法、想法,理解它,然后你才能形成自己的判断。

中国整个社会,很多人都在悬浮着。悬浮有一个很重要的意思,就是哲学意义上,不对当下做深刻的思考。一切现在发生的事情,都是为了未来的某一个目标。

二、

界面:你做完浙江村,好像还去了珠三角,当时有什么观察?

项飚:1994年我去东莞,因为浙江村是个体商户形成社区,珠三角就是打工的,工厂里的年轻人为主。我观察到很多现象,有一个比较重要的,是我所谓的 “悬浮群体”。什么意思呢?两个层面,从体制上讲,他们基本上没有下过地,在经济生活上、人际关系上,都不可能回农村了,但是因为户口制度,在城里待不下来,所以来回迁徙。在制度意义上,是被悬浮的。第二个层面,是从工作经历和生活体验上来看。我们当时发现一个有意思的现象,就是他们以极高的频率换工作,两、三个月就跳槽。因为第一个月工资通常不发,经常跳槽会损失很多钱,老板也经常说工人不好管,用各种严厉的手段管制。

我当时就在想,为什么老跳槽?因为工厂里的各种矛盾,包括跟管理层的,跟其他工人的矛盾,没有任何解决方式,唯一的解决方式就是离开,跳槽。因此跳槽成为在城市里工作的一个主线,这样的状态我叫做“悬浮”。他们的生活永远没有在群体里、在社会场域、甚至在物理空间里面沉淀下来、嵌入进去,而总是在跳跃中维持。就像蜂鸟,一种很小的鸟,必须高频度的振荡翅膀,把自己浮在空中。“悬浮”状况,我觉得这对后来的富士康事件,和工厂的其他问题,都有一定的解释力。人的状况一直没有沉淀下来,就靠高频度的换工作来维持,是很脆弱的。

往大了讲,中国整个社会,很多人都在悬浮着。悬浮有一个很重要的意思,是什么呢,就是哲学意义上,不对当下做深刻的思考。一切现在发生的事情,都是为了未来的某一个目标。你要努力去做,不做,未来的目标就达不到;但是未来是什么,能不能达到,完全不知道。一切现在做的都是为了超越现在。现在去做工, “工”是没有乐趣的,是为了明天更好;小孩被逼着学钢琴、画画,就为了后来加分、成名。在进行的事情本身没有意义,都是手段。但目的又完全是不确定的。它的本质不是对未来的追求,而是对现在的否定。这个就是我说的,悬浮。把自己拔起来,悬在空中。

界面:我觉得你这个讲得非常好,我身边很多人都是这样的,极度焦虑,又极度茫然。

项飚:对,这个状况我觉得是中国比较典型的现象,包括很多地方政府的行为,都是悬浮的,他搞很多工程,你问他,这个工程究竟有什么意义,他说不清楚,但是就要搞,不搞捞不到钱,一系列工具性的考虑,事情本身的意义是不重要的。

界面:你觉得这种心态是我们高度变动又互相竞争的社会现实的结果吗?还是一样,是因为除了市场经济以外,没有别的意识形态让大家内心有个依靠?

项飚:对啊,多方面的原因,在中国,确实是因为我们唯发展论。发展是硬道理,在八十年代,这个“硬”是有精神饱满的一面,有说服力的一面,但是到了九十年代,这个“硬”,就是硬说了,不让你说别的,就讲发展是硬道理,稳定压倒一切。

但我也不是特别悲观,我觉得这种情况跟福利制度有关。你看民工的悬浮状态特别明显,因为完全没有任何福利,在这个城市里面,每一口要吃的饭,都要靠出卖自己的劳动力,不可能有条件沉淀下来、对生活做更长远的考虑。但是2003年以后,社会福利的扩大,三险一金的扩大,可能会有一点改变。但是还得假以时日。

再一个,还有代际的问题,现在年轻一代出来,可能会对多样性有新的想法。现在四十岁,我们这一代,基本上被唯发展论俘虏了,我们很难想像另外一种生活的可能。你像欧洲人那样,物质条件很一般,生活很乐呵,我们是很难理解的。

其实婚姻可以成为有意思的再分配机制,有钱的跟有才的人结婚,没才的学点才,没钱的也拿到点钱,现在这个不允许了。拒绝再分配,这是中国一个重要的社会心态。

三、

界面:你在一篇文章里,提到温州的婚姻商品化和印度的嫁妆有共通之处,这是什么意思,能不能具体讲讲?

项飚:印度嫁妆制度,作为一种风俗,历史是比较长的。但是原来这种风俗是象征性的,就是女儿出嫁的时候,带点首饰,日常用品什么的。一百多年前,嫁妆出现了质的变化,一方面是要大宗的财物,第二是,贫穷的家庭经常出现这种情况:你先把我女儿娶走,嫁妆分期付款,男方如果一定时间内没有收到嫁妆,就有可能虐待妻子,甚至逼迫妻子自杀,这个经常有报道。为什么会出现这个变化?是跟殖民主义有直接联系的。英国殖民之后,极大地扭曲了印度的经济生活体系。印度受过高等教育、能讲英文的男子可以进入英国在印度的军队和政府,收入与地位和当地完全不是一个等级,因为它代表了外 来的高于本地的权力。在这种情况下,有钱的女方家长,通过嫁妆制度,把女儿嫁给有特权的男子。所以现代嫁妆的根源在于社会分层的性别化,也就是说出现了一群特权男性。传统的地主等特权阶层就要通过嫁妆,把女儿嫁给新的特权男子,和新的特权阶层发生联系。当时嫁妆的变化,是有历史资料证明的。学过英国法律的大学生,嫁妆最高。这是和婚姻的市场化联系在一起的。

温州的情况,也是在90年代以后出现变化。一个是婚姻的货币化,这个可能全国都一样;再一个就是婚姻的工具化,有些人很早,18岁,父母就把女儿登记在婚姻介绍所,开始寻找。婚姻不是在生活中邂逅,自然相爱形成结果,而是一个工程、项目。这样的项目化,就跟印度相似了,要通过很多人去找人,然后要谈判。

这个一方面你可以说非常现代化。所谓现代化就是一切东西都要理性化,生活不能随便来,要理性地控制,掌握自己的命运。但是最后是非常可怕的,完全把生活、生命都理性化操作,当然是加大了社会的不公平。我原来对温州这个情况可能不太注意,但是看到了印度这个婚姻制度的历史演变,对异文化的观察,促进了对本文化的反思。

界面:但是婚姻的变化,也有很多人认为是回到传统,比如父母对经济的考量,很多人认为传统社会就有。你怎么认为?

项飚:你问的很有意思,我不是专家,对婚姻制度的情况不太熟悉。我认为有相似的地方,但是现在和传统的婚姻,至少有两个很大的不一样。第一,原来传统婚姻是父母之命、媒妁之言,整个婚姻的功能是持续家族的延续,中心不是个体,是整个家族。所以父母之间的谈判,也会谈田产啊,生辰八字,但往往会首先考虑家族关系。现在父母要看男方的房子,女方的条件,不是为了家族的延续,中心还是为了下一代的幸福。但是把个体幸福做了特殊的理解,就是个体幸福必须建立在对物资的占有上,婚姻必须促进财富积累,不能下嫁,否则就白白损失了。

第二个转变是,在宗族延续的思维下,没有最大化的考虑,就是说门当户对,主要是要合适,要延续现在的格局。现在是要最大化,越有钱越好,千万不能损失财物。《婚姻法》解释三,就体现了这个要求。婚前财产证明啊,婚姻完全变成了契约。

现在的婚姻,倒得出一个有意思的悖论,它是以个体幸福为中心,但又是在父母家庭强烈干预下的理性计算。这个有点拧。为什么会出现这种情况?很重要的原因就是社会不平等。父母对婚姻的项目性计算,就是为了维持不平等的再生产,获得的东西千万不能失去,没有获得的东西一定要去争取。绝对不能让婚姻成为一个再分配机制。其实婚姻可以成为有意思的再分配机制,有钱的跟有才的人结婚,没才的学点才,没钱的也拿到点钱,现在这个不允许了。拒绝再分配,这是中国一个重要的社会心态。

界面:在你看过印度的例子之后,对家乡经验的反思,还有什么例子吗?

项飚:一个比较重要的,就是对不平等的关注。再一个,回过头来,对中国社会主义革命的意义,也有更好的认识。中国革命确立了个体的主体性。像民工、农民尽管生活状况不好,但是他对自己的自信,对平等的追求,觉得人应该平等,凭什么不如别人,这一方面当然造成很大的心理压力,但另一方面,这种冲动,是跟社会主义革命是联系在一起的。

这个主体性,作为革命的结果,是中国很大的一个潜在动力。在社会主义时期,经济发展也是非常快的,跟这个自下而上的调动起来的积极性是分不开的。不要讲王铁人啊那些劳动模范,就是在各个农村,修水渠、搞农业基础设施建设,都要通过个体农民。

传统和现代有一个很大的区别。传统的基础是高度等级化的体制,是抽取底层的价值,服务少数;现代化建设很重要的特征是大众动员、全面建设。在这方面,印度的大面积动员就很难。他们有另外一面,低种姓在的党派政治上势力很大,但是它的动员都是在投票行为,选举人给很多福利上的承诺,变成了政治上的讨价还价,不能有效地转化成经济、公共生活上的动员。

但是现在个体主体性,完全被市场神话、市场逻辑俘虏了。怎么样把这种个体主体性和另外的社会想像结合起来,是新的问题。因为你的个体主体性,总是要和一种对更大的公共生活的想像联系在一起的。没有那个想像,社会主义是无法实现的。

总的来讲,我对中国经验的特殊性、丰富性、复杂性,有了更多的思考。

界面:有海外经验,对国内很多事情的理解,似乎和一直待在国内的人不太一样。

项飚:但是也有这种情况,出国之后反而把中国的情况简单化,这里很重要的就是要观察其他发展中国家。如果你只拿美国作为参照系统,就容易把中国简单化,比方说对中国革命传统,就认识不到它内在的丰富性。

界面:你在“浙江村”的研究中说,这些在北京的浙江人,并没有断了和故乡的联系,一个很重要的指标就是,公共事务还是有人在投入,虽然地已经包给外地人去种了,但是现在很多人认为,经济发展的过程把农村掏空了,农村在凋蔽。

项飚:这个我必须得说明,我的研究是在90年代后期,现在肯定有很大变化。我后来跟踪浙江村的朋友,也是回去的越来越少,农村的凋蔽,的确是一个大趋势。当时浙江村的情况,我想是过渡时期,因为在北京的情况还是很不明了,还是要被赶。现在很重要的是住房商品化之后,很多人买了房子,有钱的人融入城市社会,跟农村基本上是断了联系。

那么多人想要超越现在,愿意付很多钱,打那个赌,要一个想像的未来。他们的出国费用非常高,就觉得这是一个改变命运、改变人生的魔幻式的点,有点一劳永逸、一蹴而就的逻辑在里面。好像生命不是由每一天的日常活动构成的。

四、

界面:在《印度猎身》(以下简称《猎身》)之后,你就是在做东北移民的研究?

项飚:基本上《猎身》之后一个大的项目,就是关于东北移民。我2004年开始做这个项目,十年了,还是没有做完。我完全没有想到写这本书会花这么长时间。

界面:为什么会花这么长时间?

项飚:实事求是地讲,第一,我选择这个题目,当时并没有很强烈的问题意识。《猎身》是我的博士论文,是做得比较好的,当时全时间地挣扎,我看到了问题,并且写出来。博士毕业之后开始工作,等于进入了西方主流的学术生产体系。主流的学术生产体系主要有两个力量来支配你,第一就是发表论文的要求,第二个是资金投入,项目经费的要求。在那样的情况下,我选择东北移民输出,也不完全是自己的意愿,一定意义上是迎合了西方学术生产体系的期望。

东北移民当时在欧洲引起了很多关注,因为中国人在欧洲的,本来主要是浙江、福建人,1990年代之后,欧洲突然出现了很多东北人,引起了很多关注,人们想要了解是怎么回事。这个题目应对了这个焦虑,但是这个焦虑是欧洲人的。这个题目对中国社会本身、对全球变化究竟有什么意义,这个问题一直不清楚,思想进度就比较慢。没有明确的问题也有好处,实际调查中拿到的素材就更多,也更散,我了解了很多情况,但是没有一个灵魂。对我来讲,学术工作的灵魂,就是政治上的问题,如果你没有一个问题在胸膛燃烧,写出来的东西四平八稳,没有什么乐趣,也写得很慢。

第二个原因,我也处在一个转型中,总希望思考上能更深化,更概念性地提出一些问题。《猎身》主要还是对现象的直接分析和描述,没有就这个现象、对整个印度社会的变化提出一些新的看法,没有看到别人还没有看到的东西。我现在就想通过东北移民,对中国社会变化提出一些说法,这个就很难了,要不断地想,不断地读。再一个,也不断有别的事情,像香港问题,也牵扯了很多精力。

界面:你在一篇文章里提到党和国家的关系,指出之所以有“一国两制”这样的方案,正是因为党具有超越性的力量,党对领导权高度自信,这个很新鲜,在现在的知识分子当中,很少有你那样的视角。

项飚:我觉得我们要面对历史和现实,党不是从天上掉下来,它是历史形成的。所以要先在历史里把这个事情解释清楚,怎么会到了今天,而且这个历史形成的过程里面一定是有合理因素的。

最大的问题还是我之前说的,1989年之后,我们经历的不是全球化,而是单一化。什么意思呢,我们失去了从自己的历史里面思考问题的能力,我们一讲中国的问题,就是批判中国不民主、一党制,这个很难讲是对还是错,但是这整个说法是按照抽象的标准判定中国,没有把历史说清楚。从解决方案来讲,如果你总是从外在的标准批判,那么解决方案就非常极端,全盘西化,也无法操作,究竟从哪里开始做呢?如果你一定要把自己和一个抽象的标准去比,怎么样达到那个目的呢?这个讲不清楚的。

我们必须从手里有的东西开始,要回到历史,看手里有的潜在的合理因素在哪里,把这些因素调动起来,才能往前走。否则的话,总是用外在标准来评判,我们就丧失了思考能力,更丧失解决实际问题的能力。所以争论就变得一方面很激烈,另一方面没有建设性。一方就说你就是维护极权的,另一方就说,你都是跟美国的,搞国际阴谋的。这个意义就不大了。

界面:回到你关于东北移民的研究,之前你好像写到两种,一个是劳工移植,一个是后备移民。

项飚:劳工移植是提出了一种关系,就是点对点的跨国关系,这个是说全球化过程中国家的角色。原来人们想像全世界 变成了一体,就会有各种跨越了国界的社会关系,但这个至少在亚洲没有发生。我们出现的不是一个像水银落地、洪水决堤一样的全球覆盖式的全球联系,而是点对点的、在政府严密管制下的联系,至少在劳工、人的流动是这样,跟金融、物品流通不一样。

亚太地区,一方面经济是最开放的,跨国性和全球化是动力最强的,像APEC,讲的就是自由贸易。但另一方面,亚洲的国家是非常强大的,中国、南韩、日本、新加坡……这个跨国的冲动和主权国家的力量,是怎么样结合的,东北劳工在亚洲的移民,体现了这个问题。

我在一篇英文文章还提出一个说法,叫“太平洋悖论”。意思是,在太平洋地区,经济上一体化越来越强;另一方面,政治上军事上对立情绪越来越强。就出现了经济一体化,地域政治离心化的趋势,这是冷战后的格局。比如十一月在北京的APEC峰会上提出的“区域全面合作伙伴”,跟美国主导的TPP(跨太平洋合作关系)在经济理念上是一致的,但是政治上是针锋相对的。

引申一下,冷战时期,对立的出发点不是地缘政治,而首先是意识形态,是经济模式上的不同——私有制的资本主义和公有制的社会主义。不是民族主义,主要是道路选择的问题。今天太平洋悖论,经济上一体化、政治上分裂,就可能导致比较狭隘的民族主义。

东北的后备移民,总体意思是每个人都是后备移民,真正走出去的是很少部分,但是作为社会可能的目标模式,很多人在那里谈出国,很多人都想像自己是后备移民。这跟我们讲的悬浮是有关的,那么多人想要超越现在,愿意付很多钱,打那个赌,要一个想像的未来。他们的出国费用非常高,就觉得这是一个改变命运、改变人生的魔幻式的点,觉得出去生活就完全不一样了,有点一劳永逸、一蹴而就的逻辑在里面。好像生命不是由每一天的日常活动构成的。

界面:为什么东北有这么多移民?

项飚:东北的这个变化,当然是跟下岗有关。从1994年,国有企业私有化开始。下岗没有工作,出国就是一个选择。但是有一点别人很少提到,东北下岗做得还是比较好的,下岗之后,有一个再就业中心,发三年基本工资,让你去找工作。如果找不到,就介绍到社区,接受低保。同时,下岗工人没有生活资料的威胁,企业原来有住房。当然下岗的情况很惨,但是有生活资料、买断又有一定的现金,解释了他们为什么有那么多钱能出国。

这个又回到了社会主义的遗产。不是下岗导致出国,而是在社会主义条件积累下的下岗,才导致出国。其实是把在公有制条件下的积累,做一个非常激进的赌博,投到市场上去。这也是我们市场经济转型很重要的特征,把当年积累起来的东西投到市场上去。对这个过程的研究课题可能要做一百年:这里究竟发生了什么,谁得益,原来形成的价值,谁评估,产生的社会后果是什么,这个要经过很多经济学的计算,但是也要通过很多哲学伦理上的反思去理解。当时很多价值,是不能用货币去衡量的。如果用货币衡量了,投到市场上,形成的收益和失败,怎么样去评估,这是一个很大的问题。这么大的转型,是我们必须面对的历史事实,也是有利于丰富对道路选择的思考的资源。如果积累价值有不同的方式,我们就要考虑,不同的方式是什么,一种方式的价值转移到另一种方式,过程是怎么样的。把这些问题想透,把自己提到更高的视野去思考问题,是有好处的。东北移民把这个问题明显化了。

界面:如果不单指移民的话,东北人现在各地都有,也是因为下岗的原因吗?

项飚:另外一方面,出现一种社会无组织化,东北黑社会化到什么程度,我不敢讲,但是下岗后,立刻出现社会无组织化,比方说,街道、村委会形同虚设,每个人都在奔走自己的前途,这种情况下,流动化也会增强。

界面:他们没有像浙江村那样的家族吗?

项飚:东北是高度城市化的社会,是五十年代重工业化之后形成的,单位制非常发达,家族联系是相对弱的。所以单位解体后,社会关系网络就很弱了。

界面:你如何看待中产阶层的移民,为了空气、孩子的移民?

项飚:我写过一篇文章,叫《中国的“崛起”和中国移民的“崛起”》,写的就是第三次移民浪潮,有钱人排队出国,投资移民,小孩的出国教育越来越年轻化。后来这篇文章标题被改成了《中国向外移民的新趋势》,将由在华盛顿的一个思想库“移民政策研究所”出版。中国的崛起是借用流行的说法,是打引号的,中国移民的崛起,也打引号,它的意思不是规模上的大量增加,而是说有向上集中的趋势:有钱的、受过高等教育的、中层以上成为移民主力。是“上升化”。这是中国社会分化的加剧,加上各种对环境、稳定的考虑,形成的向上的集中化。这些移民不是真的要去国外生活,最重要的动机,还是要保护自己的财产,一是保护既定财产,二是保护未来财产。把孩子送到国外读书,这个财产就不仅是钱的问题,还有声望啊、再生产不平等的欲望,所以它是一种维系不平等的一种跨国手段,当然又被中国的环境问题激化了一下。最重要的,我强调的是资本转移,不仅仅是空间转移——把中国的钱转到美国澳大利亚,还有把金钱资本转成社会资本,文化资本。在教育里很明显,把孩子送出去,把这一代的金钱资本转换成下一代的文化资本,下一代的文化资本倒过来,又会维护现在的金钱资本。一个是空间上的跨国性,再一个就是不同资本之前的转移。

界面:所以这还是在维系和加剧不平等的状况?

项飚:对,我觉得这是最重要的一条线索。现在没有准确的数据,到底有多少人去了国外生活,我觉得没有很多啊。很多人不一定真的到国外生活,不得已买个房子,有点投资,但是赚钱还不是得靠在中国,中国生活打麻将方便,很多人没有把生活的重点转到国外,在国外只不过是把资本运作跨国化一下。

界面:你之前提到,“公民社会”这个词对我们没有什么帮助,是什么意思?

项飚:这个概念主要从欧洲,哈贝马斯那里出来,被认为是资产阶级社会工业化之后一个很重要的变化。1980年代后期,“冷战”末期,东欧用这个词比较多,被认为是结束东欧社会主义一个很重要的原因。“冷战”结束之后,很多人也会考虑怎么培养东欧的公民社会,当时的团结工会啊,等等,都被理解为公民社会。

基本的意思,公民社会,是政治上自由的个人之间的制度化的结合,从而形成和国家的一种制衡力量。

在中国,由于长期的历史,以及短期的革命历史,党和国家在整个社会生活里无处不在的。也有很多人研究,清朝晚期,出现了很多商会,形式上看,像早期的公民社会,资本主义生产方式下出现了自主结社,但是他们跟地方政府都非常紧密。今天在中国,你要形成自主性的空间,作为中国下一步改变的渠道,我觉得是不太现实的,没有基础。

你要问老百姓,“社会”怎么样,他认为社会是一个坏的词儿,年轻人走向社会要小心,是一个危险的地方,有一种很模糊的国家崇拜。如果我们的政治思考不反应老百姓的实际诉求,那就不会有持续的生命力,可能“热”了一阵,就变得茫然、犬儒。

我的意思是,一方面,从学术的角度讲,这个词在中国不能精确地描述历史经验,也不能精确地描述变化态势,另一方面,从策略上讲,中国的政治变化,我个人觉得,不是在党和国家之外,再建立一个公民社会,而是加入到党和国家改革的斗争里面去。

————————————————————

项飚:1972年出生于温州市区一个教师家庭。1990年从温州中学毕业保送北京大学。1998年获北大硕士学位,当年受邀免考牛津大学博士,2002年获英国牛津大学博士学位。现任牛津大学人类学院研究员。


Turf: GIS for web maps

$
0
0

Turf: GIS for web maps

By Morgan Herlocker on December 23 2014

Turf is GIS for web maps. It’s a fast, compact, and open-source JavaScript library that implements the most common geospatial operations: buffering, contouring, triangular irregular networks (TINs), and more. Turf speaks GeoJSON natively, easily connects to Leaflet, and is now available as a Mapbox.js plugin on our cloud platform. We’re also working to integrate Turf into our offline products and next-generation map rendering tools.

https://www.mapbox.com/bites/00083/?embed=trueTurf is part of a new geospatial infrastructure. Unlike the ArcGIS API for JavaScript, Turf can run completely client-side for all operations, so web apps can work offline and sensitive information can be kept local. We’re constantly refining Turf’s performance. Recent research algorithms can make operations like clipping and buffering faster than ever, and as JavaScript engines like V8 continue to optimize, Turf will compete with native code.

https://www.mapbox.com/bites/00081/?embed=trueTurf is isomorphic. You can run the same analysis in real-time with a web browser that you can with Node.js using a script or a server. Turf is also modular. Download just the parts you need, or use a bundled distribution with everything included. A lot of Turf’s magic comes from usingbrowserify to stitch together the pieces and from using npm to manage Turf as a large collection of modules.

https://www.mapbox.com/bites/00082/?embed=trueWith the building blocks for GIS analysis on the web, you can create your next spatial application in a whole new way: as small pieces joined together intelligently using Turf. To get started, follow the instructions on the Turf setup page and try adding some of the example code to your Mapbox maps. Let us know what you think and what additional modules you’d like to see added.


我在北京大学的三十年 谢宁

$
0
0
北大向何处去?

 

 

前言

 

    我对北大最早的印象可能是来自于“梁效”。我当时还是小学生,但也要不断受“评法批儒”、“反击右倾翻案风”这些教育,“梁效”的大名早就耳熟能详了。开始我以为“梁效”是一个人,后来才明白是北大、清华两所学校大批判组的笔名,由此知道了北大、清华是中国最著名的两所大学。上中学以后高考我对北大最早的印象可能是来自于“梁效”。我当时还是小学生,但也要不断受“评法批儒”、“反击右倾翻案风”这些教育,“梁效”的大名早就耳熟能详了。开始我以为“梁效”是一个人,后来才明白是北大、清华两所学校大批判组的笔名,由此知道了北大、清华是中国最著名的两所大学。上中学以后高考开始恢复,北大更是成为了无数学子无限向往的地方。记得高一时我去一位同学家里,看到墙上挂着他父亲年轻时佩戴北大校徽的大幅照片,顿时非常羡慕,似乎也憧憬过自己能否戴上北大的校徽。不过那个年代信息比较闭塞,我根本估计不出自己就读的中学和我本人的高考竞争力,北大对我来说只是一个非常遥远的存在。1981年我参加了高考,我们那时候是估分填报志愿的,我感觉考的还不错。幼年时我曾在关中农村的外祖母家生活过几年,对农村比较有感情,当时还很有些想改变农村面貌的理想,于是考虑将中国人民大学农业经济系作为第一选择。就在交报名表的当天,父亲的一位同事有事来家里,他顺便问了一下我的高考情况,建议我第一志愿应该报北大。因为这次偶然的到访,我临时改变了志愿,分数公布后我的成绩位于陕西省文科类考生前十名之列,这样我就被录取到了北京大学中文系。开始恢复,北大更是成为了无数学子无限向往的地方。记得高一时我去一位同学家里,看到墙上挂着他父亲年轻时佩戴北大校徽的大幅照片,顿时非常羡慕,似乎也憧憬过自己能否戴上北大的校徽。不过那个年代信息比较闭塞,我根本估计不出自己就读的中学和我本人的高考竞争力,北大对我来说只是一个非常遥远的存在。1981年我参加了高考,我们那时候是估分填报志愿的,我感觉考的还不错。幼年时我曾在关中农村的外祖母家生活过几年,对农村比较有感情,当时还很有些想改变农村面貌的理想,于是考虑将中国人民大学农业经济系作为第一选择。就在交报名表的当天,父亲的一位同事有事来家里,他顺便问了一下我的高考情况,建议我第一志愿应该报北大。因为这次偶然的到访,我临时改变了志愿,分数公布后我的成绩位于陕西省文科类考生前十名之列,这样我就被录取到了北京大学中文系。

 

    考上北大的确给家人带来了荣耀,也让我异常兴奋,开学报到前几天我就没有睡好觉,带着激动和疲倦,我和几位一起考上北大的同学坐了一天一夜火车到了北京,在火车上我和另外两位男生也没有合过眼。我们是清晨不到5点下车的,出站后找到了北大的新生接待处,此后聚集在接待处的新生越来越多,但是一直等到早上7点多,才看到学校派来了两辆迎接新生的大轿车。由于车少人多,所有的新生都往上挤,混乱中我们帮同来的两位女生挤上车,把随身行李也塞进去了。我和两位男生没有挤上去,只好摇摇晃晃地乘了2个多小时公交车,才终于来到北大。进校后我忙着办理各种入学手续,等把托运行李都搬到老旧的宿舍后,却看到地面、桌椅、床铺上全是白灰,显然是粉刷后没有清理。我虽然疲惫的只想睡觉,也只能和室友们一起打扫,直到当天晚上才基本上收拾干净。

 

北大简陋的物质条件让我从对大学生活的极度憧憬中感到一些失望,大概是恢复高考后北大学生的数量增加很多,学校没有能力提供更好的生活环境。食堂的伙食也非常简单,记忆比较深的是大一时每天晚饭只有“肉末白菜粉”一道菜,就是把肉末、白菜和粉条炒在一起,一毛钱一份,主食只有馒头和玉米粥,我们需要排半小时队才能打到饭菜;浴室则更为简陋,全校只有一处破旧的公共浴室,洗澡时人挤的像沙丁鱼罐头一样;大讲堂那时候还没有座椅,报到时每个新生交几块钱押金领一个方凳,新生开学典礼我们就是拎着方凳去参加的。如果想看电影,也是拎着方凳到大讲堂,或者拎的更远去东操场看露天电影。

 

虽然生活条件比较差,但我很快还是感觉到了在北大上学的优越之处。入学后没几天,我们中文系新生就去人民大会堂参加了鲁迅诞辰100周年纪念大会,见到了除邓小平之外几乎所有的重要领导人,聆听了胡耀邦总书记激情澎湃的讲话。尽管后来我才明白我们实际上是去“填座位”的,但当时却让我有了一种“通天”的感觉,似乎和最高层的距离很近。特别是对我这样的外地学生而言,如果不是上了北大,中央高层领导可能永远都是神秘和遥不可及的。至于各种名人我们见的就更多了,那时候北大整天有各种讲座,各界名流经常来北大讲演或参加活动,而且大都是学生们自己请来的。名人们一般也会给北大学生面子,很愿意来北大,很希望在北大得到认可。不过北大学生可能是见过的名人太多,名人们如果讲的不好,经常会得到鼓倒掌和嘘声的待遇,或是干脆大批地离场,让名人们很是下不来台。此外北大学生还经常能请到各类文艺团体来学校演出,国内一流的文艺团体几乎都来过北大,有的来过多次;有些热门电影的首映式也是在北大举行的,我才知道那些在银幕上光彩照人的演员,其实近距离看时往往并不起眼。

 

    那个年代北大最大的特点是政治气氛很浓,学生们的政治热情很高,有一种以天下为己任的抱负。我们入学之后,就多次听到上几届学生谈起1980年海淀区人大代表选举的盛况。区县级人大代表是迄今为止最高级别的直接选举,当年的北大学生投入了极高的参与热情,部分学生参加了竞选,表达了许多政治主张。1981年春天中国男排逆转战胜韩国队后,北大学生喊出的“团结起来,振兴中华”的口号也令我们无限神往,很快我们就在中国女排首次夺得世界冠军,国家男足世界杯预选赛大胜科威特队时体会到了那种激情。1984年国庆35周年庆祝游行的队伍中,和我们同在一个方阵的1981级生物系学生打出了“小平您好”的横幅,被认为是代表了那个时代的定格画面,体现了北大学生对处于个人声望最高时期的邓小平和改革开放事业的坚定支持。除了这些大的场面之外,北大学生平时关心政治问题的热情也很高,涉及到国家政治生活的讲座、讨论往往会受到热烈欢迎;各种场合中的讨论和争辩更是随处可见,有一段时间32楼南面的院子里学生们还办过一个咖啡馆,经常可以在那里听到各种时事新闻的发布以及对国家前途的讨论。

 

1985年春天我即将大学毕业,面临就业的选择。大概是我平时表现出了一些对政治问题的兴趣,系里主管学生工作的老师问我是否愿意去校党委工作。前任党委秘书哈伟就是中文系1978级的,他要离职深造,党委办公室希望再找一位中文系的毕业生接替。我一向对自己的人生没有明确规划,不清楚到底什么职业适合我,可供选择的其他要人单位也没有足够的吸引力,于是想着先留校工作也不错。这样1985年8月我就到校党委办公室报到上班,身份从大学生变成了一位党务工作者。

 

1985年可能是北大学生政治倾向的一个分水岭。在此之前,虽然北大师生中也有一些对政治问题的不同看法,不过从总体上看,北大师生和中央高层是比较一致的,对改革开放是全力支持的。但是在经历了改革开放初见成效带来的上下一心的“蜜月”之后,一些深层次的问题开始显现。到了1980年代的中后期,北大的政治气氛仍然非常浓厚,只是不同的意见和声音逐渐多了起来,尤其在学生中表现的比较明显,学潮成为了这个时期的一条主线,先后出现了四次比较大的学潮,最后一次是1989年的政治风波。在这几年里,北大党委的工作主要是围绕着学潮进行的。我作为一位亲历者和旁观者,认为在这几次学潮中,北大师生虽然和上层有不少分歧,有一些不同的意见和声音,但是就总体和主流而言,北大师生一直是拥护中国共产党领导的,他们只是希望党能够改进自己的问题,做出一些顺应时代潮流的变化。

 

1989年的政治风波对北大产生了极为深远的影响,也从根本上改变了北大的走向。政治风波之后的北大校园曾经异常安静,到了学生区恢复往日的喧闹之后,听到最多的声音已不再是读书声和讨论声,而是从一大片宿舍楼里传出的此起彼伏的麻将牌的声音,我也是那时候学会打麻将的。北大学生关心政治的气氛不再浓厚,一种苦闷和迷茫的感觉则弥漫在校园中。此后的北大逐渐开始发生变化,这种变化直到今天仍在持续,我虽然一直身处其中,但是也难以对它的发生发展有完整清晰的认识。

 

我并不认为上世纪八十年代的北大有多么完美,当时的北大同样存在着各种问题和弊端,有很多不能令人满意的地方。但是学校的总体氛围是积极向上的,师生们的思想是比较活跃的,理想主义色彩是比较浓厚的。1988年北大90周年校庆时,北大出版社出版了《精神的魅力》一书,中文系谢冕教授在其中《永远的校园》一文充满诗意和激情地写道:“ 这真是一块圣地。数十年来这里成长着中国几代最优秀的学者。丰博的学识,闪光的才智,庄严无畏的独立思想,这一切又与先于天下的严峻思考,耿介不阿的人格操守以及勇锐的抗争精神相结合。这更是一种精神合成的魅力。科学与民主是未经确认却是事实上的北大校训。二者作为刚柔结合的象征,构成了北大的精神支柱。把这座校园作为一种文化和精神现象加以考察,便可发现科学民主作为北大精神支柱无所不在的影响。正是它,生发了北大恒久长存的对于人类自由境界和社会民主的渴望与追求。”谢冕教授对于北大精神的概括或许有些溢美之处,但至少是体现了北大的一种传统,一种长期追求的境界。

 

变化是逐渐开始的,上世纪九十年代以来我所能感到的北大最大的变化,就是从对精神、文化方面的追求转向了对物质、利益的追求,从思想上的活跃转向了实用主义的盛行。这种变化是逐步的、渐进的,甚至是身处其中的人难以明察的。

 

北大的变化固然有政治、社会、外部环境等方面的作用,但很大程度上也是主动选择的结果,是一种出于趋利避害本能的变化,只是这种变化来的过于彻底,已经到了让几乎所有人都无法接受的程度。对于北大的变化,几位主要领导人发挥了很大作用,其中作用最大的则非任彦申莫属。任彦申的能力在于他善于审时度势,他不是简单地执行上面的指令,而是能够根据当时的形势和北大的实际,提出一系列颇有说服力的主张。在任彦申还没有成为北大的主要领导人之前,他的主张就在北大得到了比较广泛的认可,尤其是他提出的北大要面向国民经济主战场,要为经济社会发展提供服务和支持的观点,更被认为是北大当时唯一可做的选择。北大的大多数人恐怕都没有意识到,这种观点将北大的作用局限在经济、技术领域,放弃了北大历史上曾经发挥过的,而且应该继续发挥的对中国社会思想、文化方面的引领作用,从而使北大愈来愈趋向于工具化和实用化。

 

与此同时,任彦申将北大逐步改造的适应体制需要,并建立起北大自身行政化、官僚化体制的意图也没有引起足够的警惕。此后又经过许智宏、闵维方、周其凤、朱善璐等主要领导人的持续推进,其发展程度愈演愈烈,终于使北大形成了全面的官本位体制,各级官员成为了北大最有地位、最有身份、最有话语权的群体。

 

在行政化、官僚化倾向的主导下,北大的学院、系、研究所等学术机构也逐渐演变为官本位制,真正的学者、真正的学术实际上并没有多高地位。虽然北大的自然科学领域引进和涌现了一些出色的学者,个别学科在世界上的排名有了提高,但往往只是成为官员们炫耀政绩的“面子工程”,成为他们邀功请赏的筹码;在人文社会科学领域,独立自由的学术精神不断受到压制,有批判精神的学者被边缘化,比较懂得配合的则获得了较高的推崇。还有一批善于经营、长袖善舞的“风云教授”大行其道、名利双收,活跃在学校的各个领域。尽管北大的某些学科取得了一些进展,但总体上功利性比较强,在学术上、科研上取得重大突破的可能性很小。这么多年来人文社科领域没有出现新的大师级人物,自然科学、工程技术领域没有再产生王选级别的成果就足以说明问题,更遑论“世界一流”了。

 

 

北大的学生总体上则是实用化、工具化教育的必然产物。其实我从大学毕业之后,同北大学生就没有多少直接接触,不了解学生群体的状况,但是又能从很多方面感觉到他们的变化。当然学生群体的变化也是逐步的,当他们对国家政治生活的关心不被鼓励并受到限制之后,自然就会把兴趣转移到其他方面。经过长期的教育引导,北大学生多数已不再关心国家大事,不再有对社会发展方向的深入思考,他们可以只关心自己的利益,可以配合学校官僚们的表演,可以充当表达官方意愿的工具,但却不知道北大的传统,甚至也不知道什么是真正的学问。我曾看到过一篇署名老愚的《面试研究生》的文章,作者曾面试过一批北大、清华、人大、北师大的研究生,从求职简历看上去个个可谓人中翘楚,博学多识,但面试的结果却让作者“不由自主地崩溃了”,认为他们“无知识,无立场,无求真之诚意······两耳不闻窗外事,一心不读圣贤书。”虽然作者遇到的学生可能有一定偶然性,但是对中国大学有所了解的人都不难判断:现在的大学包括北大在内,基本上都是大批量地培养着这种类型的学生。

 

其实一些重要领导人对北大、对北大的学生还是寄予很大期望的。1988年北大90周年校庆时,我曾去过位于台基厂的彭真同志住处,取回了彭真为北大的题词。我记得题词的大意是希望北大要继承优良传统,站在历史潮头,推动历史车轮前进;2010年五四青年节温家宝总理来北大,当温家宝和北大学生见面时,一再表示纪念“五四”首先应该继承“五四”科学、民主的精神,北大学生应该懂“科学民主”四个字,他要求同学们讲真话,不要怕讲错话。在场的北大学生却无一人理解温家宝的苦心,只是问了一些无关紧要的问题。有人曾做过统计,温家宝2010年讲过六次政治体制改革的问题,他也许会在北大就政治体制改革做进一步的阐述,但是北大学生却没有给他这个机会。温家宝失望之余,只好说一问周围的同学都是学生干部,不用说都是学校安排的。其实就是学校不做任何安排,其他北大学生也不会提出有分量的问题来。评论家何三畏先生就此写了一篇《让人绝望的北大学生的提问》,对北大学生的现状进行了准确评论。不知道是对北大的失望还是出于别的考虑,温家宝离任前在清华大学做了一次重要演讲,当温家宝阐述着民主与法治、公平与正义、自由与平等这些人类共同的价值理念时,又不知道会有多少北大、清华的学生认真思考这些问题。

 

就在我即将完成这部书稿的时候,习近平同志以最高领导人的身份于2014年5月4日来到北大,向北大师生提出了要倡导富强、民主、文明、和谐,自由、平等、公正、法治,爱国、敬业、诚信、友善的社会主义核心价值观。习近平对北大学生一向是看重的,早在1990年暑期校团委组织学生去福州市社会实践时,我曾随队前往。时任福州市委书记的习近平专程来到我们驻地,同我们进行了两三个小时的座谈交流。他没有讲什么大道理,而是以自己下乡插队等实际的经历和体会,对北大学生给予了关心和期望。习近平到中央工作后又先后5次来北大,他提出的价值理念无疑是有针对性的,是继承了中华优秀传统文化,也吸收了世界文明的有益成果。只是经过了这么多年实用性、功利性的教育,现在的北大学生还能否理解这些价值的内涵,能否承担起这么大的期望?我不能不对他们表示怀疑。

 

北大自上世纪90年代以来,学校的教学、研究工作逐步走向实用化、功利化,管理体制则实现了彻底的行政化、官僚化。不论从哪方面看,这些做法都完全违背了基本的教育规律,同世界高水平大学的通行规则更是风马牛不相及。但是在学校行政官员的主导下,北大却提出了“创建世界一流大学”的计划,甚至还多次制定了具体的时间表。建设世界一流大学早在上世纪80年代丁石孙时期就提出了,当时提出这个目标是真诚的,也是全校上下都比较认可的。但是到了任彦申主导下的北大百年校庆,再次提出加快创建世界一流大学时,就已经带有很强的功利色彩,实际上是希望因此得到国家的重点投入。闵维方任职时期,又提出北大要“向着世界一流大学迅跑”,把建设高水平大学的过程等同于“跑步”,只能令人想起当年“跑步进入共产主义”的滑稽。朱善璐上台之后,“迅跑”都嫌太慢了,他要让北大“冲刺入列”,就是要以冲刺的速度进入到世界一流大学的行列。

 

在北大这几位主要领导人中,除了任彦申还比较实际一些,以谋求一定的利益为目的之外,闵维方的“迅跑”只能让人觉得可笑,朱善璐的“冲刺入列”则更是十分荒唐。北大的所谓“创建世界一流大学”计划,实际上已经和一些利益集团套取国家资金和社会资源,谋求自身利益最大化的做法如出一辙。虽然不能和动辄获得巨额投入的大型利益集团相提并论,但目的则是相同的。再说例如铁道利益集团虽然浪费了大量资金,但毕竟还建成了若干条可以运行的高铁,而北大的“创建世界一流大学”却是一个根本不可能达到的目标。世界上没有任何一所一流大学是整天叫嚷着“创建”出来的,他们所做的无非都是按照教育自身的发展规律,创造出一个有利于提高办学水平的环境,至于能否发展为世界一流大学,则会受到多种因素的影响,完全是一个顺其自然的过程。而北大行政化、官僚化的管理体制,功利化的办学方向,同建设高水平大学的目标完全是背道而驰的,离真正的世界一流大学只会越来越远。正如当年完全违背经济规律的“大跃进”遭受惨重失败一样,以“大跃进”思维提出的、完全违背教育规律的北大“创建世界一流大学”计划,也必将成为世人的笑话。

 

 

大约在四五年前,我和几位以前在北大共事的朋友聚会,他们都非常关心北大的情况。于是我谈了北大的一些现状,这几位朋友也感到很惊诧,有人就建议我应该把这些事情写下来,作为一种历史的记录。我听后受到启发,但估计如实地写出来发表,肯定会引起极大震动,其后果可能是我无法承受的。于是我初步的设想是等我退休之后,等现在的这些人和事都过去了再写,即使我写一些客观的事实,讲一些不中听的话,应该不会对我有太大影响。此后当我和北大几位关系比较密切的朋友谈起这种设想时,又有人建议我现在就应该写,认为再过若干年,有的事情记的可能不会太准确了。我觉得这个建议也很有道理,于是也想过不妨先写出来,等到适当时候再拿出来。但是我本人一向得过且过,本性又比较疏懒,很长时间都没有产生动笔的念头。

 

这些年北大不断被所谓“负面新闻”所困扰。我平时见到一些校外的人,不管是北大的校友还是和北大没什么关系的人,都经常问我北大到底是怎么了?我一下子很难回答清楚,觉得是应该写一本书把北大的真相告诉世人。不过真正促使我下决心的,主要还是我对北大现状的愤怒和绝望,特别是北大官僚们的随心所欲和无所顾忌。我觉得是到了对他们说“不”的时候了,不仅应该让社会公众了解北大的真相,也有必要让更多的师生了解北大的内幕。前两年我和一位比较熟悉的教授闲谈,他不知道从什么渠道听说朱善璐要调走,竟然很担心,认为朱善璐是能为老百姓办事的。我不禁哑然失笑,只能感慨北大的有些老师实在是太善良、太天真了。实际上不仅一般的社会公众对北大了解不多,我在和许多北大的教师、干部交流后有一种明显的感觉,那就是他们对北大的实际状况也是很隔膜的,尤其是不了解北大的官场运作,往往是以一种善良的愿望去理解学校的领导人。

 

其实我本人对北大的官场也不是很了解了。前几年我有一次路过办公楼,看见一位副校级领导走出来,秘书跟在身后,台阶下停着一辆小车。我以为秘书是跟领导一起外出的,却看见秘书抢上去打开车门,等领导坐进去后再关上车门,然后目送车子离开后再进去。我不禁大开眼界,感慨自己在北大这么多年了,在办公楼里也做过十多年秘书,却不知道秘书出来只是给领导拉车门的。我不由得回想起王学珍、丁石孙、陈佳洱等人骑着自行车上下班的情景,感到也有必要将我知道的北大过去的那些事告诉世人,通过北大近三十年来的变化,特别是发生在主要领导人身上的变化,或许可以从某些方面解释北大为什么变成了现在的样子。

 

由于内心产生了这种想法,我对北大的官场也进行了特别的观察,逐渐意识到这些年来北大的权力运作是非常不透明的,北大的领导人,特别是主要领导人是不受任何约束的,做事情是不讲规则的,甚至可以说北大最大的规则就是不讲规则。现任的校党委副书记于鸿君曾说过北大是事业单位,所以我们不算是官员。他们确实不是一般的官员,就是在外面的官场上,对于官员的职数、待遇、退职年龄等方面还有一些规定,而这些官场上的一般规则在北大几乎是不存在的。我虽然在北大党委机关近30年了,也不禁对北大官场的实际状况感到吃惊。当然我看到的还只是冰山的一角,至于那些我看不到的,隐藏在更深处的各种利益关系、权力依附,就不是我能够全面了解的。目前的北大不要说还能为国家的发展进步,为中国社会的民主法治建设发挥引领作用,而是其自身的官僚化程度,权力自肥的腐朽程度已经到了难以令人接受的程度。即使按照党纪国法,按照现行体制内一系列规章制度的要求,北大也已经走得太远了。

 

对于北大的现状,不仅校内存在普遍的不满情绪,校外也有不少人看得比较清楚。李敖先生虽然愈到晚年愈有娱乐化倾向,但他2005年在北大演讲时说“北大变孬了”还是很准确的;杜君立先生在《孔庆东时代的北大》一文中断言:“北大作为中国最精英的人文思想发源地早已不复存在……一个蔡元培和胡适时代的北大几乎恍如隔梦。”社会舆论更是不断对北大进行激烈的批评,这些批评绝大多数并不是有意与北大过不去,而是北大的一系列表现早已引起了公愤。但是我也不能不遗憾地认为:北大内部虽然不乏一批忧虑学校前途的人,但是真正有勇气、有能力指出北大问题的人并不很多;校外的人虽然可以用敏锐的判断力判断出北大的状况,但他们对北大的内幕毕竟难以全面深入地了解。甚至还有许多不明真相的人仍然对北大抱有一些幻想,期待北大能像历史上曾做过的那样,继续发挥引领社会进步的作用。

 

正是基于以上的考虑,让我越来越觉得有必要写这本书。本书的目的主要是通过我个人的视角,对北大近三十年来主要的领导人,一些重要的人物、重大的事件,做出我个人的分析和评价,或许有助于校内外读者了解一些北大的真相。我在北大是一个微不足道的小人物,由于位置和观察判断能力的局限,我对于这些人物、事件的了解也是不全面的,肯定有一些偏颇之处,特别是对这些人物的分析评价只是从我观察到的角度做出的,不能代表他们的全貌。我唯一的优势是曾长期在校党委领导机关工作过,同北大近三十年来的主要领导人都有或多或少的接触,可能比一般人更了解北大领导层的运行状况。书中所写到的事情,大部分是我亲历的,有些事情虽然没有亲历,但都是有可靠信息来源的,凡是道听途说、没有确凿根据的事情一概不在我的写作范围之内。

 

我在开始写作之前列过一个名单,大部分是历任校级领导干部,只是有的人因为我了解不够或出于其他考虑,没有都列入最终的写作计划。我经历过的十多位党委书记、校长中,除了汪家鏐、王恩哥之外,都有专门的篇幅。汪家鏐我接触极少,基本上没有什么了解,她给我的印象主要是一位上层意志的坚定执行者;王恩哥任职时间不长,我没有和他打过交道,还需要观察。不过他只在北大读过博士学位,到北大工作的时间也不长,不大可能对北大有很深入的了解。他上台后的一些做法已经引起了不少非议,但愿他还是慎重一些为好。

 

当年的我是怀着一种崇拜、景仰的心情进入北大的,但令我没有想到的是经过了这么30余年,我心目中的北大却离我越来越远,而一个腐败、堕落、病入膏肓的北大则愈来愈占据了我几乎所有的空间,让我难以忍受、艰于呼吸。北大历史上最杰出的校长蔡元培先生曾提出“往昔昏浊之世,必有一部分之清流,与敝俗奋斗”。蔡元培时期的北大正是这样的“清流”,而现在的北大则早已自觉自愿地融入了浊流,而且在其中兴风作浪;鲁迅先生也曾说过“北大是常为新的、改进的运动的先锋,要使中国向着好的、往上的道路走”。鲁迅先生如果活到今天,一定会收回他的这番话。现在的北大不仅不能再使中国向着好的、往上的道路走,而是反其道而行之,不断向着坏的、往下的道路走,而且根本看不到底线的所在。

 

北大的另一位老校长胡适先生甘愿成为“宁鸣而死,不默而生”的灵鸟。我虽然只是个微不足道的小人物,而且已经过了知天命之年,大半生都浑浑噩噩,不知道自己该做些什么,但我对胡适先生的勇气和境界也十分景仰。我曾经以“劝谏者”的口气给学校当局提出过一些意见、建议,但都如泥牛入海般地毫无声息。在北大腐朽、僵化的官僚体制面前,任何客气的劝说都不会起到任何作用,必须采取一种直截了当、直斥其非的方式,或许才可以有所触动。如果我的这本书能够发挥一点作用,让更多的北大人有所警醒,让社会舆论形成一定的压力,多少迟滞一些北大不断向下沉沦的速度,我将感到极大欣慰,为之付出任何代价也在所不惜。

 

我的写作计划虽然是私底下进行的,但还是和校内外一些志同道合的朋友进行过沟通。令我感到鼓舞的是他们几乎都对我表示了支持,尽管不是所有人都能理解我的整体想法。特别是我的妻子马兴源给予了我最大的支持,她不仅为此承担了更多的家庭责任,而且在明知道可能有很大风险的前提下仍然鼓励我做这件事,并愿意和我共同承担一切后果。正是有了这些支持和鼓励,尽管我清楚这本书的出版将给北大当局带来巨大冲击,也将立即置我于风口浪尖之上,我还是可以有足够的勇气迎接一切挑战。当然我也相信我的行为将会得到社会舆论的广泛支持,得到北大绝大多数师生的坚决支持。我还要感谢这个开放的互联网时代,有人说互联网是上帝送给中国人的最好礼物,它又何尝不是送给我的最好礼物?不仅让我方便地查阅了很多资料,提高了事实的准确度,更重要的是它使得信息的传播难以阻碍,即使我的书稿不能顺利出版,也可以通过互联网而广泛传播。

 

在正式书稿之后附录了我写的一些文章,时间跨度从2000年至2010年。这些文章基本上都公开发表过,大部分是针对北大提出的意见、建议,同书稿正文有内在的联系,可以供广大读者参考。为保持原貌,我对这些文章没有再做修改。

 

    尽管我对北大的现状进行了激烈批评,但是也应该看到:北大还是有一批坚持独立思考,坚持思想自由,坚持为国家民族前途命运负责任的优秀学者。只是这批学者在北大受到了排挤、冷遇,被边缘化,没有成为北大整体形象的代表,但他们却正是北大得以恢复传统的骨干和脊梁;同时北大还有一大批致力于专业研究,致力于培养人才的杰出学者,正是由于他们对科研、教育事业的不懈追求,才使得北大在极为浮躁的环境下,仍然在部分学科领域取得了一些进展,保持了北大在国内高校中的相对领先地位。《精神的魅力》一书还收录了厉以宁先生的一篇文章,他认为上世纪60年代末到70年代中期出现了两个北大:一个是外面看得见、听得到的北大,是浮在水面上的北大;另一个是继承并发扬了探索精神的北大人才能察觉到的北大,是深藏在北大人心中,具有高度社会责任感的北大。张曼菱女士近期出版了《北大回忆》一书,在介绍严家炎先生的文章中,提到严家炎仍然有一句话“真北大不会亡”。

 

大概是我平时看到的北大的怪现状、阴暗面太多,可能对北大的情况估计的过于严重了。厉以宁“两个北大”的观点,严家炎“真北大不会亡”的看法,又让我意识到确实还存在着另一个北大:这个北大不仅存在于那些坚持理想信念的北大人身上,实际上也存在于许多虽然迎合世俗,但在内心深处还残存着一点理想火种的北大人身上。北大如果还想重新树立起在中国社会的形象,获得凤凰涅槃般的重生,唯一的出路就在于将这些火种重新点燃,继承和发扬北大的优良传统,继续高举起科学与民主的大旗,按照人类共有的价值观念,准确把握世界和中国的前进方向,顺应历史发展的潮流,为中国社会最终实现民主与法治、公平与正义、自由与平等付出全部努力,做出新的贡献。

 

北大在中国历史上至少发挥过两次影响全局的作用:一次是正面的,是五四新文化运动时期成为了新思想的策源地,正如陈平原教授所言“在一个东方古国崛起的关键时刻,一所大学竟然曾发挥如此巨大的作用,这样的机遇,其实是千载难求的”;另一次却是负面的,北大前副校长郝斌在其《流水何曾洗是非》一书中认为“文革”初期的北大,是中国政治棋盘上的金角银边,是整体布局者的开局谋篇之处,是兵家必争之地。不管是正面的还是负面的,北大确实有能力对中国的历史进程产生重大影响。在中国的改革进入到攻坚阶段的关键时期,北大如果能以壮士断腕般的勇气,彻底抛弃过去的谬误,发掘出“另一个北大”的“正能量”,还是有机会重现五四新文化运动时期的辉煌,再次改写中国的历史,成为推动中国思想、政治、社会、文化进步的正面力量。

 

中国向何处去?北大向何处去?今天的北大人应该对此做出自己的回答。
项子明
我第一次见到项子明是在1983年夏季,那次我们是去大讲堂听解放军第四军医大学的报告,介绍当年五一节四医大学生在陕西华山抢险救人的事迹。时任北大党委代理书记的项子明亲自主持了报告会。当时的北大学生思想比较活跃,也不大讲情面,作报告的人即使职位再高、名气再大,如果讲不出有价值内容来,都能让人下不来台,而且越是所谓“正面教育”的报告往往越不受欢迎。那次的报告人只是四医大的几名年轻学生,不免都有些紧张。项子明首先讲话,他讲了什么我记不清了,印象比较深的是他的普通话很好,而且还带有一些京腔,而我通常见到的老干部们都是讲方言的。项子明讲了没几句,不知道为什么竟哈哈大笑起来,于是全场两千多人都跟着笑起来。项子明这一笑,让会场的气氛一下子变得轻松起来,报告人也没那么紧张了。他们讲的内容都是围绕着抢险救人过程的,确实比较具体、实在,其中一位北京籍的女生口才极好,令人印象深刻。报告会始终气氛热烈,掌声不断,是我多年来在北大听过的最受欢迎的一次“正面教育”的报告。
项子明任代理书记期间我曾在校学生会当过一段小干事,那时候的北大学生会其实也很有些官场特点,我们这些小干事都学着巴结学生会的部长们,或更高职位的学生干部,以期弄个副部长、部长当当。不过当时学生会的能量还是不小的,能组织许多大型活动,也能请到许多高官、名人。我在学生会呆了一段日子,觉得自己干不上去,就主动离开了。其间我不时在学生干部那里听到一些对项子明的议论,那时候北大上下之间关系比较密切、融洽,校领导也十分重视同青年学生打交道、交朋友。在项子明任职前后,有几位刚从北大毕业的学生会主要干部开始在政界崭露头角,于是在校的学生干部们也很受鼓舞。从他们的议论中,我知道项子明是支持、重视青年干部的,他的形象是比较开明的,得到了许多青年学生的信任和尊敬。
1985年我大学毕业,被选留到校党委办公室工作。其实以我在学生会的简短经历,应该说明我是不善于在官场里混的,这次选择可能是一个错误。当然这是后话了,我当时对自己并没有清醒的认识。项子明已于1984年3月不再担任校党委代理书记,但还担任着北大顾问和全国政协委员的职务,经常参与学校的工作和各种社会活动。记得我刚上班没几天,恰逢项子明从陕西考察回京,办公室需要安排人去机场接一下,于是我自告奋勇地表示认识项子明,可以去接。在机场出站口,我果然从人流中一眼就认出了项子明,他虽然是满头银发,但看起来精神很好,步履轻捷。我迎上去作了自我介绍,项子明十分热情,因我是陕西人,很自然地我们就有了共同的话题,他在回来的路上不断同我谈起陕西的风土人情。记得那次他还很随便地说起去陕西之前已诊断出患了鼻咽癌,在我的印象里当时的人都是谈癌色变的,不过项子明好像并不在意,感觉上他只是在说一种平常的疾病。
因为项子明患了鼻咽癌需要治疗,从陕西回来后他基本上就不参与北大的日常工作了,他在办公楼二楼的办公室也不再保留。1985年底项子明从朗润园的一套四居室公寓搬入燕南园63号的两间平房里。燕南园是燕园中的“园中之园”,环境幽雅,当时还健在的王力、朱光潜、冯友兰、陈岱孙等一些名望极高的老教授都住在这里。63号平房前面有一小块空地,刚搬进来时十分荒芜杂乱,项子明用心经营,遍植花木,还撒上了他女儿从美国带回的草籽——那时国内还极少有这个草种,一般的草坪秋天后就黄了,但这种草入冬之后还是绿的。项子明还在第二年春天买了一株白玉兰,我和党委研究室的金小鹏去帮他在屋前种下,记得他当时满有信心地说:明年春天就可以开花了。项子明对北大是非常有感情的,虽然他的夫人在真武庙还有一套老式的三居室,但他大部分时间都住在燕南园。
项子明原名汪志天,因参加北平地下党改名项子明,解放前在北京做地下党学生工作,任北京大学地下党负责人。解放后历任北京市委办公厅副主任、主任,市委常委、秘书长等职,“文革”期间受到冲击,被撤职、批判、监督劳动。“文革”后期复出后,又先后在北京市的一些部门任职,回北大前任北京市对外经济贸易进出口委员会常务副主任。项子明对北大很有感情,喜欢大学的氛围,有要办好一所大学的理想。于是他在年过花甲、临近离休之际回北大工作,先任校党委副书记,后任代理书记,他是很希望在北大有一番作为的。本来项子明是应该干一任北大党委书记的,据丁石孙《我在北大当校长》访谈中的回忆:项子明1983年访问哈佛大学时,告诉在这里当访问学者的丁石孙,让丁石孙回国当北大校长,他当党委书记,两个人合作。不过后来项子明并没有当上党委书记,据说主要是由于他在畅观楼事件中得罪过彭真,遭到了彭真的反对,所以他仅以代理书记的职务主持北大工作一年多即匆匆离任。
项子明离任后是希望能在北大安度晚年的,但他生命中的最后几年却是多灾多难:他先是在1985年发现患了鼻咽癌,经过积极治疗,比较快地恢复了健康。不想一波刚平、一波又起,1987年间他不慎摔倒,造成颅内出血,几乎危及生命,在天坛医院做了开颅手术才逐渐恢复过来。当时我们都说他是“大难不死必有后福”的,但1989年初的一次检查中发现他又患了结肠癌并已转移到肝部,项子明的生命受到了真正的威胁。经过接连两次的大手术和其它治疗,居然又奇迹般地将他从死亡线上拉了回来。当时我们还乐观地认为他可以再次大难不死,但这些治疗手段都只不过让他的生命多延续了一些时间。
在项子明生前的最后几年中,因为他多次住院,唯一的女儿又在国外,我作为单位工作人员经常要为他办理一些具体事务,如送他去医院,办理住院、出院、医药费报销等事宜。这几年里我多次去他家里,也多次听过他的谈话。项子明一生阅历丰富,同许多重要领导人都有交往,我曾不止一次听他谈起彭德怀同志,认为彭德怀是共产党历史上最正直、最敢讲真话的人,他对某些权倾一时的大人物则时有微词。作为一位经历了几十年风雨的老党员、老干部,项子明对国家的政治形势一直非常关心。我每次去他家里,一般都会和我谈这方面的话题,他对许多问题都有自己的看法,谈及当前时弊,常有一针见血之论。项子明实际上是通过彭德怀等人不同的兴衰浮沉,不同的遭遇、命运,并以自己几十年的实际经历,对共产党的历史、制度等方面进行过许多思考。
记得1989年寒假前我去燕南园项子明家里时,他还是同往常一样和我谈起当前的形势,但不像平时那样谈兴甚浓,而是话语不多,似乎有些忧心忡忡。最后他突然说了一句“邓最近有个讲话,杀气腾腾”,此后再不发一言。我不明白他的所指,只好告辞离开。春节后邓小平的讲话作为中央文件下发了,我作为秘书也负责将文件送党委领导们传阅。我看到邓小平的讲话对“自由化”的泛滥极为不满,表示不能再退让了,并说了一句“实在不行,我们还有300万军队”的话。当时的党委书记王学珍等领导看后觉得这句话讲的过于严重,商量后决定向中层干部传达时先不讲这句话,当然就是讲了一般人也不会意识到其严重程度。只是后来形势的发展证明了项子明的政治经验比较丰富,他的预感是比较准确的。
1989年政治风波期间项子明虽然在进行治疗,但他对形势的变化一直非常关切,由于很多时候局势不明朗,项子明很关注从各种渠道得到的信息。我每次去他那里,都要同我交流信息、议论形势。项子明是希望事态能够得到和平解决的,他甚至还在北大学生送来的某份请愿书上签了名。政治风波之后王孝庭大骂有些老同志给我们党施加压力,我认为他主要指的应该就是项子明。
到了1989年下半年,项子明的身体状况已是每况愈下了。我每次去他那里,虽仍有兴致谈论一些问题,而且分析判断能力不减,但精力却是大不如前了。谈及当前形势,项子明往往是低头叹息,继而默然无语。他对自己的病况实际上也很清楚,已经预感到将不久于人世了,他有时候会拿一张纸,工工整整写上许多人的名字,都是一些已经去世的人。但项子明还总是对去看望的人说:我身体很好,没有问题。实际上无论是对自己的身体,还是对当时的形势,他都已彻底失去了信心。
进入1990年以后,项子明的病情日趋恶化,住到了真武庙的家里,生活已基本不能自理。但他还是心系北大,曾经在一个下雪天乘车回到北大,长时间坐在车里不走,经我们劝说后才离开——他是要最后看一眼北大的校园。3月初我送他去住院,项子明的定点医疗单位是友谊医院。不料当我们到达医院后,预定好的病房却被陈希同住进去了。于是我只能陪着垂危之身的项子明,于春寒料峭中在车内呆了一个多小时,等待医院方面另行安排病房。陈希同曾经是项子明在北京市委工作时的老部下,在项子明住院后也曾多次看望并给予关照,我和项子明夫人颜纯教授当天还在医院大厅里碰见过陈希同,陈希同对颜纯说他是“拉稀了”。陈希同可能并不知道他住进了项子明的病房,不过对医院方面来说,当然还是大领导的小毛病更需要重视。
项子明住院后我曾数次前去探望,还曾在他的病房中守护过一夜,当时他已经非常虚弱了,但仍坚持自己起身洗脸、刷牙。次日我离开时,项子明几次向我说:谢谢你,麻烦你了。此后有一天我忽然接到医院打来电话,项子明指名要我去。我以为他或许有所嘱托,当即出发赶往医院,但到病房时项子明正在昏睡。我在病床前侍立良久,看到他已经是形销骨立、一息奄奄,内心十分沉痛。项子明醒来后看见我,好像略有兴致,但仅问过数语后又无力地合上双目,并无要紧的嘱托。此后我又和学校负责人去医院看过他一次,再过了一两天就接到了医院告知他去世的电话,他是3月29日凌晨去世的。后来我听颜纯教授谈及项子明临终前一直没有留下什么遗言。
项子明的遗体告别仪式大约有上千人参加,我看到很多人泪流满面,是一种发自内心的悲痛,比起生平介绍上那些千篇一律的赞誉之词,或许更能体现出他在人们心目中的位置。我对项子明的一生所知不多,不过在我和他有限的交往中,感到与他同时代的许多老干部相比,项子明身上更多地具备了比较宽容、开明的思想和作风。从一件小事上也可以体现出他的开明:我曾偶然听到过一位学工干部对他表示不满,说项子明任代理书记时,学工干部发现某对男女生同居,要进行处分。项子明却轻描淡写地说年轻人有这个需要嘛,不赞成处分学生。须知当时有过“严打”的历史背景,大学里关于男女关系的校规也十分严厉,但项子明对青年学生的此类行为却是不想过度追究的。
项子明是从延安时期走过来的老党员、老干部,同那个年代的许多人一样,早年的他对共产党、对毛主席都有一种非常朴素的感情,从来没有过任何怀疑,即使在畅观楼事件上得罪了彭真也是出于对毛主席的忠诚。但是在经历过“文革”之后,他曾告诉我们说对有些事才看的明白了,感到以前的自己是没有什么主见的。项子明晚年对共产党的历史和制度进行过一些探索和反思,我以为他总体上的思路是倾向于共产党应该走顺应时代发展潮流的道路的。尽管项子明在北大主政的时间非常短,他也已经去世许多年了,但我和他的这些交往,他的一些思路还是值得记录下来的。
王学珍
 
1981年9月我在大讲堂参加新生入学典礼,主持典礼的是时任副校长兼教务长的王学珍。到了1982年中共十二大召开时,在中央候补委员的名单中我见到了王学珍的名字,1984年3月他担任了北大党委书记。不过对我这样的普通学生来说,学校主要领导和我们的距离过于遥远,我没有印象还在其他场合中看见过王学珍。
1985年暑假后,我到校党委办公室报到上班,开始担任书记秘书的工作。位于办公楼二层南侧的201室是一个大套间,当时的格局是进第一道门后右手是一个会议室,党委常委会议一般都在这里召开,左手一间20平米左右的房间是党委研究室;进第二道门后又分外间和里间,我和办公室副主任李宝珍在外间,东西两侧共有3个各十多平方米的里间,分别是党委书记王学珍、副书记王孝庭、顾问项子明的办公室。另一位副书记郝斌的办公室则在办公楼礼堂门口边的一个房间里。那时候办公室的人员比较少,三位书记加一位顾问只有我一个秘书,不像现在的书记、校长们都有专门的秘书,有的领导还不止一位秘书。
在1980年代,北大校领导的作风是比较朴实的。我开始时不知道怎么称呼领导们,记得我最初和王学珍说话时称他为“王书记”,王学珍听过几次后特意让李宝珍告诉我不要称职务。那时候在办公楼里好像没有称领导们官衔的,于是我也跟着别人称王学珍为“学珍”,称王孝庭为“孝庭”,郝斌为“老郝”,称校长丁石孙为“老丁”,副校长张学书为“学书”。遇到比较正式的场合,则会在名字后加上“同志”二字,如称王学珍为“学珍同志”。这几位领导里除了郝斌年轻一些之外,其他人当时也都60岁左右了,只有20岁出头又身份最低的我直呼他们的姓名,似乎没有人觉得不合适。王学珍平时喜欢穿涤卡中山服,我也挺喜欢这种服装,但是北京没有卖的,只有上海才能买到。有一次王学珍去上海出差,说他要买中山服,我就请他帮我代买了一件,秘书托领导买衣服,同样也没有人认为不合适。
我没有到王学珍身边工作之前,多次在学校的宣传栏里看到过他的照片,总是满面笑容,看起来很温和。到了办公楼之后,才知道王学珍经常也会发脾气。党委常委会一般都在201的会议室召开,在担任党委秘书的十多年里,我只有极少几次顶替党办负责人做过会议记录,对会议的召开情况了解甚少。不过虽然和会议室隔着门,我偶尔还是能听到里面的声音,但听不清他们说的话。王学珍嗓音比较高,嗓门比较大,听起来似乎经常和人吵架。时间一长,知道他也不是吵架,而是在意见分歧时和别人争论。不过即使和别人争论得很厉害,他真生气的时候也不多,其他常委也没有因为王学珍声音大就不说话了。至少说明当时的常委们经常有意见不一致的时候,也经常会发生正常的争论。
虽然在王学珍身边工作的时间不短,我所做的无非是一些接听电话、通知开会、安排用车等事务性的工作。虽然有时也看到王学珍处理工作,但往往也是一些具体的事情,加之年代已久,记忆不是太深刻了。我在王学珍身边经历最多、印象最深的事情,还是他对学潮问题的处理。我上班后没多久就遇到了1985年的“918”学潮,此后又经历了1986年底至1987年初从南方蔓延到北京的学潮,1988年夏天因柴庆丰事件引起的学潮,直到1989年的政治风波。从1985年的“918”学潮开始,处理学潮问题似乎一直是王学珍的一条工作主线。虽然学潮的具体过程往往只是一段时间,但事先事后的各种动态需要掌握,各级领导的指令需要贯彻落实,对学校的广大师生,特别是对学潮的参与者更要进行多方面的工作。我印象中处理这些问题占据了王学珍的大部分时间。
王学珍毕竟是北大的党委书记,在处理学潮的问题上,他的身份决定了他必须执行上级领导的指令。对于北大的许多教师、干部,甚至学校的某些领导人来说,对学潮的认识是逐渐有一些变化的。在这几年中王学珍的认识或许也有一些变化,但他在处理时基本上都是按照上级的要求进行的。在我的印象中,王学珍既没有对上级指令有明显的抵制,也没有像王孝庭那样表现出的强烈的个人色彩,对学潮痛心疾首、极为反感,必欲坚决制止而后快。他只是按部就班地做了他职责中应该做的事情,一直到1989年的政治风波开始,王学珍的态度都没有表现出明显的变化。
1980年代学潮的发生发展和知识界的思想动态密切相关,而北大师生的思想动态一直是从中央高层到各个上级部门都非常重视的,报送北大师生的思想动态是校党委的一项日常工作。当时有稳定工作“全国看北京,北京看高校,高校看北大”的说法,北大的稳定关系全局,北大师生的思想动态可能会直接关系到全国的稳定。我参加工作后的那几年里,这些动态信息一般都是由党委研究室的赵存生、赵亨利两人撰写,我也曾经写过一些相关简报,经党委领导审阅后上报。上面比较看重的动态信息主要有两个方面:一是对中央出台的重大决定、政策的反映,二是师生假期回乡后看到、听到的各地情况。虽然上面要求北大如实报送,但实际上领导们又很不愿意听到不好的反映,我曾听王学珍说过,意见反映上去了,领导们往往会训斥说:现在形势这么好,怎么就是你们北大的意见多。慢慢地就形成一种固定的写法:不管什么情况下,尤其是中央新出台的决策,首先表明北大师生都是普遍拥护的,然后再婉转地反映一些不同意见;如果假期后收集到的负面反映比较多,则先将其激烈程度降低一大半,以领导上能够接受的尺度和语气报送。比较典型的例子是1989年春节之后,可能是当时的社会情绪确实到了要出问题的地步,开学后师生们从各地带回的基本上都是负面反映,如实上报上面肯定不高兴。我们只好反复从中寻找正面的事例,找了半天,发现天津的师生反映说李瑞环坚持彩电不涨价,于是如获至宝,赶紧将其放在醒目的位置上报了上去。
1989年的政治风波产生、发展的过程比较长,情况非常复杂。《人民日报》4·26社论发表后,将学潮定性为“动乱”,北大师生普遍不能接受,情绪非常激烈。按照惯例要立即报送北大师生对社论的反映,那次的动态信息是赵亨利起草的,他还是按照往常的口径,首先说大部分师生对社论是拥护的。这样写当然与实际情况严重不符,如果是其他的表态也就罢了,而这次的反映实在是关系重大。王学珍没有马上签发,后来我看见他亲笔修改了稿子,将大部分师生拥护改成了大部分师生反对,如实地向上面反映了北大的情况。政治风波期间,不仅是广大师生,许多党员干部对上面的决策也想不通。当时北大女性任系党总支书记的只有3位,有一天这3位女总支书记一起来找王学珍,反映她们的思想问题。我不知道王学珍是怎么和她们谈话的,但从他事后谈及此事的态度看,王学珍没有简单地进行斥责和压制,而是做了耐心的思想工作。其实就是王学珍本人和学校整个领导班子,在当时中央出现了不同声音,情况非常复杂的情况下,很多时候也无所适从。我曾经接到过一位党员教师打来的电话,询问北大党委的态度,我请示当班的党委领导该怎么答复,他也没办法表态,我只好告诉这位教师请他自己去分析判断。
绝食事件后形势进一步复杂,其间王学珍曾经去天安门广场看过学生,并参加了在人民大会堂举行的记者会。我印象中他是看过学生后去的记者会现场,我们在办公室看了电视直播,王学珍在谈话中表达了希望进行对话协商,使绝食行动得到妥善解决的态度。不过随后讲话的李鹏态度仍然非常强硬。王学珍回到办公室后我感觉到他的情绪有些复杂,心情比较沉重,他首先嘱咐党办副主任李宝珍,让她安排人买一些卫生巾送到广场——有的女生来了例假,还坚持守在广场。王学珍的这个做法无疑是人性化的,对学生是爱护的。那天的记者会在场的校领导都看了电视直播,但王学珍回来后没有一个人说话。我那时候对学生是比较同情的,就主动说他今天的谈话非常必要,使北大校方赢得了主动。王学珍似乎有点同意我的看法,但是不好明确表态,只说了其他人(对他的谈话)也有一些不同意见。从第二天开始的一段时间内,连续收到了许多从全国各地寄给王学珍的来信,头一天大概有几十封,后来的几天每天都有一二百封或者更多。我拆开看了不少,都是对王学珍的谈话表示支持的。此后的事态发生了急剧变化,形势极为严峻,王学珍当然也不可能再表现出什么个人的倾向来。
政治风波平息之后,王学珍仍旧担任校党委书记一职,他当然需要根据当时的形势,按照上面的指令进行工作。从1989年开始上面决定对北大、复旦的一年级新生进行为期一年的军训,在当时的情况下这个决定是不可能改变的。前几年我听他说过此事,他说他是不赞成这样搞军训的,但既然是上面的决策,作为北大的党委书记,他当然不能公开反对。在其他的事情上,他应该也只能是这样的态度。到了1991年1月,王学珍不再担任校党委书记的职务。
王学珍任北大党委书记一职将近7年,还当选过中共十二、十三届中央候补委员,他也是迄今为止唯一一位从上学到工作从来没有离开过北大的校党委书记。早在1951年王学珍就担任了校党委副书记一职(当时学校还不是党委领导体制),此后一直在北大做行政工作,担任过党委组织部长、教务处长、社科处长、教务长、副校长等多种职务,对北大的情况非常了解。虽然我在他身边工作期间,看到他处理的大都是学潮方面的问题,不过也曾经随他到一些系进行过调研工作,我记得去过中文、历史、哲学等系。他对北大这些基础学科在全国高校中的位置比较关心,详细了解过其他高校相关院系的情况。此项调研本来还要进行下去,只是由于学潮的影响而无法继续。
在王学珍任内,虽然他也和其他人有不同意见,经常发生争论,但没有见过哪位持不同意见的同志受到过不公正对待。1986年召开了北大第八次党代会,会上许多人对学校领导班子提出一些尖锐意见,如提出学校班子在如何办学上思路不够、办法不多,这些意见都能得到正常表达。党代会上发言比较尖锐的无线电系主任王楚,讲话比较直爽的后勤党总支书记赵桂莲等人,都以较高票数当选为校党委委员。在王学珍任党委书记期间,北大的政治生活是比较正常的,各种不同意见是能够得到表达的。政治风波期间,我还多次看到王学珍布置召开民主党派、党外人士等各方面人士的会议,随时向他们通报情况、听取意见。虽然王学珍有时会发一些脾气,后来我也明白往往是由于学潮的问题,他经常受到上级领导的批评、指责,事后会显得烦躁、易怒一些,而这些批评指责往往是以势压人、毫无道理的。到了政治风波平息之后,王学珍似乎也很少再有大嗓门、发脾气的时候了,他不过是按部就班地说一些该说的话,做一些该做的事。
我个人倒有个不见得准确的看法,我认为王学珍主政期间对干部的使用显得保守了一些,在他的任内,北大中层干部的年龄普遍偏大,在干部退休的问题上也不够严格。到了1994年北大召开第九次党代会,党政班子成员中年纪最轻的朱善璐以最高票数当选为校党委委员,倒不见得是朱善璐有多高威望,某种程度上也反映出对北大干部普遍老化的不满。虽然王学珍时期的干部队伍状况有当时的历史背景,也有历次学潮的冲击和影响,但他在干部的使用上思想不够解放,步子不够大。这样就没有能够选拔培养出一批思想作风比较正派,对北大的传统比较坚持的年轻干部群体,为以后任彦申等人改变北大的风格,安排使用符合自己意愿的干部留下了空间。
离职后的王学珍一直还在工作,我知道的是他在搜集整理北大的史料方面做了很多事情,例如由他主编并亲自撰写了很多内容的《北京大学记事(1898—1997)》,全书200多万字,为北大留下了大量珍贵的史料。我在写这本书的过程中就多次查阅过这部《记事》。在目前在世的北大的老人中,王学珍对于北大这半个多世纪的历史可以说是了解的最全面的,堪称是北大的“活字典”。我在写陆平的生平,写北大统战史略的过程中,首先想到的就是找王学珍了解情况,主要的内容都是他提供的。在我离开党委办公室之后,他对我个人的工作、生活、家庭情况也多次询问,表示了真诚的关心。王学珍是1926年出生的,已经是耄耋之年了,不过他的身体状况不错,还经常到办公楼工作,搜集、整理北大大量的历史资料。王学珍卸任后的所做的这些工作,对北大、对北大的历史无疑都是很有价值的。
 
 
丁石孙
丁石孙是1984年3月和王学珍同时上任的,王学珍任党委书记,丁石孙任校长。此前我还不知道丁石孙的名字,只是在他任校长时听说他当过数学系主任。我第一次看到丁石孙是在电视上,当时我们1981级的学生到位于昌平的北大200号植树,时任日本首相中曾根康弘访华并在北大发表演讲。丁石孙在办公楼礼堂主持了演讲会。在我有印象的历任日本首相中,我认为中曾根是最有派头的。但是当我们在电视直播中看到身材高大的丁石孙穿着笔挺的西装,风度翩翩地致欢迎词,邀请中曾根上台演讲,姿态不卑不亢,举止极为得体,都不禁为之感慨:到底是北大的校长!在同学们的普遍印象中,丁石孙的风度丝毫不亚于中曾根,我们都由衷地为丁校长的气质所折服。
1985年我大学毕业后到党委办公室工作,我在办公楼二楼上班,丁石孙的办公室在一楼,他经常也会上来和书记们开会、商量工作,多半是在201的会议室或是王学珍的办公室。我印象比较深的是上下班时经常会在办公楼前看见丁石孙,这时候的他穿的往往是一件洗的有些发白的蓝色或灰色制服,骑一辆旧自行车,在他停自行车要进办公楼或推车准备离开时,多半会有人上去和他说一些事情,下班时他经常是推着自行车边走边和人谈话。在办公楼上班的若干年里我有一种体会:我是书记办公室的秘书,经常会听书记们说话,处理事情,所以对历任的书记、副书记基本上都有一定了解;校长们则不同,虽然也能随时看到他们,但平时没有直接的接触,所以我对历任校长、副校长的特点、脾气秉性就不甚了了。包括丁石孙在内,只能从有限的了解中谈一些看法,而丁石孙在校长任内给我印象最深的,主要也是他在处理学潮问题上的一些态度。
1985年发生了“918”学潮,此次学潮的发起主要是由于日本首相中曾根康弘等政要参拜了靖国神社,同学们出于爱国主义热情要表示抗议,但是上面又不愿意让学生上街游行。9月18日当天北大部分学生聚集在南校门内,准备出去游行,刚上班没几天的我也被派到南门,和一些学校的干部负责拦阻游行学生。我到现场的时候,看到南门已经关闭了。其实聚集的学生们硬要打开南门,推开我们几个手无寸铁的工作人员并不用太费力,他们也可以转到其他校门出去。但是这些情况都没有发生,学生们只是聚集在南门内,情绪并不激烈,和我们形成一种僵持但并无任何冲突的局面。这时候丁石孙发表了广播讲话,他在讲话中说:有一些同学是出于爱国热情要纪念“918”,校方已接受同学们的要求,在五四操场举行纪念大会,请同学们前往参加。现在有些同学去南校门集结,坚持要到校外进行活动,这是错误的。我郑重地请同学们考虑,不要一时冲动,做出错误的行为,要警惕少数人利用你们的爱国热情做出后果严重的事情来(丁石孙讲话内容摘自《北京大学记事》)。我曾估计丁石孙的广播讲话是根据上面的口径起草的,不过也基本符合这个时期他本人和学校多数干部、教师对学潮问题的认识。2013年底我在《炎黄春秋》上看到丁石孙《我在北大当校长》的访谈,丁石孙说讲话稿是陈昊苏给他准备好的,他自己也不清楚南校门是谁下令关的,我想应该也是上面的领导下的指令。
虽然恢复高考后曾有过北大学生因对住宿、伙食、熄灯等问题不满而闹过事,但1985年至1989年之间的学潮,却没有哪一次是由于北大校方的原因造成的,归根到底都是社会思潮和社会问题在青年学生中一种反映。但是上面却并不这么看,学潮一发生,北大校方往往会受到指责,认为是他们没有做好学生的工作。我记得“918”学潮之后,有一次上面几位领导来北大,就在办公楼201会议室开会。我在外面听到时任北京市委副书记的徐惟诚大发雷霆,虽然听不清他说的话,但声音实在是太大,只能说是在咆哮。后来党委研究室副主任赵存生出来说,他看见徐惟诚训话时唾沫直喷到对面人的脸上,不过我不记得那次丁石孙是否在里面。前些年我和曾在党委研究室工作的金小鹏闲聊,他说有一次他参加了学校的干部研讨会,何东昌、徐惟诚等领导来北大听汇报时就由他介绍情况,丁石孙也在场。当金小鹏汇报到研讨会上北大的干部普遍对“自由化”、对学潮问题有不同意见时,何东昌就不高兴了,质问说难道都是这样的看法?副书记郝斌在一旁证实说的确都是这种看法。丁石孙随即拍案而起,大声说:就是嘛,学潮跟我有什么关系!然后拉开门拂袖而去。后来金小鹏从郝斌那里了解到,汇报开始之前,何东昌一再指责丁石孙对“自由化”、对学潮“立场不坚定,旗帜不鲜明”。
不过我那时候还不了解丁石孙对学潮的看法,没有听过他这方面的言论,但我还是能感觉到他的一些变化。1985年学潮时丁石孙发表广播讲话劝阻学生;1987年元旦当天北大有数十名学生在天安门广场被带离现场,当晚有几千名学生包围了办公楼,丁石孙出面和学生对话。处理学潮属于思想政治工作领域,虽然主要由校党委负责,但丁石孙都会参与,只要一发生学潮,丁石孙都会到办公楼二楼和王学珍等领导一起商量,研究应对之策。不过据我的记忆,到了1988年柴庆丰事件发生后,丁石孙似乎不再直接参与处理学潮了。
其实北大的干部、教师那几年逐渐对处理学潮的方式方法产生了不同意见。季老虽有“真话不全说,假话全不说”的处世哲学,但他在怀念胡乔木的文章中,讲到1986年冬天胡乔木询问他应该如何看待学潮。季老明确表示“青年学生是爱国的。在上者和年长者唯一正确的态度是理解和爱护,诱导与教育。个别人过激的言行可以置之不理。”胡乔木当着季老的面表示完全赞成。季老的观点也代表了大多数北大教师、干部对学潮的看法。1988年暑期学校召开了工作研讨会,我参加了部分院系干部小组讨论会的记录工作,我现在无法查阅当初的记录稿,但我印象中与会的干部们普遍对处理学潮的做法不赞成。当时听说中央政治局针对柴庆丰事件开了四次会,有人就说政治局为北大的事情开了四次会,实在是让我们很荣幸,不过希望中央能就教育问题多开几次会;我记得中文系主任严家炎说,现在是改革开放的时代了,不能还像过去那样,总是要求思想统一、万众一心,要允许出现不同的声音。我虽然没有直接听到过丁石孙的言论,但估计他总体上也是这些看法。
1989年的学潮规模空前、过程复杂,影响极其深远。政治风波期间我经常昼夜在办公室值班,但几乎没有印象看见过丁石孙,更不了解他的态度。到了这年的5月初,丁石孙率北大代表团出席在美国举行的大学校长会议,离开了工作一线。大概是在宣布戒严之后,丁石孙此时尚未回国,他在夏威夷发表了一次谈话,对这次学潮有所肯定,在学生中引起极大反响。不过到了丁石孙回国时,形势已经发生了根本性变化,他的谈话明显不合时宜了。我不记得他再参加过学校的相关会议,也没有印象他以校长身份参加过公务活动,好像是住到医院去了。我们都明白,在当时的形势下,丁石孙肯定不会再担任校长了。不过按照中国政治的特点,也没有明确说过他不宜再担任校长,或是干脆宣布免去他的职务,只是到了这年8月份,丁石孙以任期届满的理由离开了校长岗位。丁石孙在《炎黄春秋》的访谈中对1988年的柴庆丰事件和1989年的政治风波均没有涉及,多少也印证了我他没有参与处理这两次学潮的记忆。
丁石孙离任后到民盟中央担任了副主席,费孝通先生退下来前,据说在民盟内部进行过多次测评,丁石孙一直是接替费老呼声最高的人选。于是他接任了民盟中央主席,并担任了两届全国人大常委会副委员长,进入了国家领导人的行列。不过正如人们只知道蔡元培当过北大校长,而不大知道他还当过政府考试院院长等高官一样。在现有体制下,不管丁石孙是当民盟中央主席还是全国人大常委会副委员长,基本上都是荣誉性质的,不可能有太多发挥余地。我们只能在电视上看到丁石孙出席各种会议、活动,偶尔也会看到他回北大参加一些公务活动。
丁石孙任北大校长将近五年半,任期不算很长,我和他的直接接触更是极为有限,写不出更多内容。在丁石孙任内,我确实很难说出他有多少了不起的言行,我印象比较深的,是1986年他率先提出了把北大建成世界一流大学的目标,使北大师生深受鼓舞。他提出过北大应该像国外大学那样向社会开放,大学不是“管”的,而是要“经营”的;还说过他只是搞专业的,当校长并不合适,应该让会管理的人做大学校长。在北大的具体事务上,丁石孙也只是领导班子成员之一,何况他这个校长还要受到许多上级部门的干涉,不可能有太多的发挥余地。但我认为丁石孙仍然是北大历史上一位重要的、有特殊地位的校长,他应该是北大历史上最后一位有自己的独立思想,保持了自己独立人格的校长。在当时的背景下,丁石孙不可能对中国大的政治环境有多少影响,但是他有自己独立的思考、判断,在非常困难的情况下守住了作为北大校长的底线。
几年前我和曾任过北大社科处处长的苏志中闲谈,苏志中告诉我:丁石孙任职期间北大曾提出过对政治课进行改革,结果消息传到了上面,就变成了北大要取消政治课。教育部等部门开始追查,苏志中他们面临很大的压力。丁石孙知道后明确表态:不要理睬他们。我还听见过丁石孙曾以半开玩笑的口气说教育部应该取消。对于任何一位有独立思想、有自己办学主张的大学校长而言,来自行政部门的干预都是难以忍受的,蔡元培如此,刘道玉如此,丁石孙也是如此。但遗憾的是刘道玉、丁石孙这些有作为的大学校长却生不逢时,难以实现他们的理想和主张。
在丁石孙校长之后,北大的行政化、官僚化倾向越来越明显,权力的干预更是不断加强、无所不在,北大已经自觉自愿地彻底同化于体制。期待北大再出现蔡元培、胡适那样的校长已经如同天方夜谭,产生丁石孙那样保持着独立思想和独立人格的校长也基本上不再有可能性。丁石孙之后的北大是一个不断自我矮化的北大,丁石孙之后的历任北大校长则呈现出持续矮化的形象。于是丁石孙校长留给我们的高大背影也就愈发显得高大起来,当我们在对蔡元培、胡适等老校长的风采感到无限神往的时候,还应该记得北大曾经有过一位丁石孙校长。
王孝庭
 
大概是在1985年的上半年,我作为学生中的入党积极分子在办公楼礼堂参加了一次报告会,听时任校党委副书记王孝庭做关于彻底否定“文革”的报告。王孝庭是河南洛阳人,讲话完全是地道的河南口音。报告内容丰富,列举了“文革”中北大大批教师、干部、学生受迫害的事实,很有说服力。过了若干年之后,我也听到有人说起王孝庭的报告虽然讲的不错,但他对“文革”初期一些高干子弟的行为却避而不谈。不过我当年作为一个涉世未深的青年学生,确实对他的报告留下了比较深的印象。
我到办公楼上班时王孝庭还是校党委副书记,我也知道了他此前长期在北大做党务工作,担任过系党总支书记、党委宣传部长等职。大概是由于“孝庭”这个名字的传统色彩太浓,不符合党员干部的形象,所以王孝庭在发表文章或其他一些场合往往会用“王效挺”这个名字。
1985年“918”学潮发生后,上面的领导高度重视,当时的北京市委书记李锡铭、市长陈希同、市委副书记徐惟诚、副市长陈昊苏,教育部长何东昌等高级干部多次来北大了解情况、布置工作,或直接与学生座谈、对话。王孝庭作为主管宣传和学生思想政治工作的党委副书记,更是全力以赴地投入到处理学潮的工作中。有一次在办公楼103会议室李锡铭、陈希同等领导和北大学生座谈,我也随王孝庭参加了。在中国凡是出现群体性事件,一般都会将其归结为有“坏人”进行操纵,上面也很快将“918”学潮定性为有“坏人”要利用学生的爱国热情,达到破坏安定团结的目的。王孝庭贯彻上级领导的指示非常坚决,我好几次听他在干部或学生大会上讲要把那些“坏人”揪出来,每次讲话时都声色俱厉。
大概在1985年年底,校团委和某家电视台合作,拍摄了一部反映北大学生生活的电视片。录像带在校党委审查时我也看了,我那时候毕竟年轻,只觉得电视片拍的并不见得真实,但实在没看出有什么原则问题。王学珍等其他领导可能也有一些不满意,但王孝庭却非常生气,之后我看到时任校团委书记的朱善璐及团委宣传部长等人被王孝庭叫来训话。当时我坐在外屋,和书记们的办公室隔着一道上半部嵌了一层毛玻璃的木头门,虽然不能听清里面说的话,但可以听到王孝庭声音很大,一直在大发雷霆。过了很长时间,朱善璐他们才走出来,和我们尴尬地笑了笑。
王孝庭虽然发火时很厉害,但有时候有点空,也会走出办公室放松一下,和我们党办的人说几句闲话,甚至开一点玩笑。这时候的他往往会笑容满面,表现出随和的一面。不过我在王孝庭身边的时间不长,到了1986年春天,北大召开第八次党代会。王孝庭是1984年才担任党委副书记的,按照事先的安排,他是要继续担任这一职务的,但却在党委委员差额选举时落选,就此离开了校党委领导岗位。对于王孝庭的落选,当时就有一些议论,主要的看法有两点:一是有人认为他太“正统”,有些“左”;二是认为他工作中过于严厉,难免得罪了不少人。
此后的几年我虽然也见过王孝庭,但没有什么能记起来的事情。到了1989年政治风波平息之后,因为要对政治风波中的问题展开清查清理工作,并要进行党员重新登记,党支部的活动比较频繁。王孝庭的组织关系在党委办公室研究室支部,那段时间每次支部会议他都会参加。我感觉王孝庭对这几年的学潮,对“资产阶级自由化”,乃至对自己的下台都积累了许多怨气,用他自己的话说:我对学潮是反感的,对“自由化”是敏感的。大概是物不平则鸣吧,每次支部开会王孝庭都很活跃,经常发言。我印象比较深的一次是他大骂一些老同志,北大有不少老党员、老干部政治风波期间都参加过请愿、游行等活动。他骂道:“你们这些老同志,你他妈的革命几十年了,你们也去签名、游行,给我们党施加压力,简直是他妈的蠢…蠢驴!”讲话时过于激动,甚至气的说不出话来。我实在印象太深了,迄今都可以一字不差地记得他的原话。还有一次王孝庭说到上级组织征求他的意见,让他参加工作组到政治风波中出了问题的单位进行整顿。他考虑自己是落选下台的,不便于再出面,说自己入党几十年了,“从来都没有拒绝过党的要求”,这次却因为个人的考虑,没有服从组织安排,说着说着,竟一下子自责的老泪纵横、语气哽咽起来,很长时间都不能平静。1989年国庆节前的一次支部会上,王孝庭回忆起1949年北平解放后青年学生欢庆胜利的情景,当他们听到解放军势如破竹,解放南京、上海、广州等一个又一个大城市时,他们是如何地激动、兴奋,走上街头唱歌、跳舞、扭秧歌。说起这些往事来,王孝庭又不禁流露出孩子般的幸福神情,彷佛回到了那些岁月。
此后的两、三年间王孝庭还是经常来参加党支部会议,他在多次发言中都对苏联、东欧的情况非常关注,对苏东局势的演变至为痛心。他多次大骂戈尔巴乔夫、叶利钦,并认为戈尔巴乔夫是“国际共产主义运动以来最大的叛徒!”1991年苏联“819”政变失败后,参与其事的苏联内务部长、原苏军总参谋长等人开枪自杀。王孝庭再次痛骂,不过这一次他没有骂戈尔巴乔夫、叶利钦,而是大骂那些搞政变的人:“你们这些笨蛋!有子弹自己吃!你们给戈尔巴乔夫、给叶利钦一人吃一颗不就行了吗!”苏东演变期间北大西语系的严宝瑜教授正在东德任教,回国后向王孝庭讲述过苏东的情况(后来我也听过严宝瑜的报告,他讲的相对比较平和)。不过之前王孝庭就已经在支部会上转述了严宝瑜的见闻,虽然他讲的是严宝瑜的感受,却远比严宝瑜本人讲的要生动、激愤得多。他说严宝瑜认识的一些苏东的老共产党员,向严宝瑜讲述了他们“亡党亡国”的痛苦,他们欣慰的是只有中国还坚持打着红旗。那些老共产党员们向严宝瑜说:他们有生之年的最大愿望,就是想到中国来,要再看一眼红旗啊!
“红旗!”两个字王孝庭是提高了声音喊出来的,在他的心目中,共产党的领导、社会主义制度、“红旗”无疑都是极其神圣的。
1990年代初期,在中国意识形态领域关于“姓社姓资”的问题开始引起了争论。王孝庭绝对是坚定的“姓社”派,他对舆论界开始出现的“不要问姓社姓资”的言论极为气愤,认为是“放屁的话!”大概到了1992年前后,北大成立了党史校史研究室,由王学珍任主任,王孝庭任副主任,他的党组织关系随之转到了研究室支部,我也就没有机会再听到他的言论了,很感到有些遗憾。
此后我很少再见到王孝庭,到了2000年前后,当时的校党委副书记赵存生让我为《新中国北京高等教育的开拓者》一书写一篇关于陆平的文章。于是我找了王学珍、王孝庭等老领导了解情况,他们都向我做了详细介绍。稿子写好后请他们审阅,我提到“大跃进”时可能是用了“一场灾难”的说法。王孝庭看后指出这种说法不准确,当即向我说明了《关于建国以来党的若干历史问题的决议》中的有关表述,令我十分佩服他对党内文献的熟悉程度。从2001年上半年开始,我应当时的校报主编魏国英之约,为校报写一些评论文章,校报为此设了一个“博雅论坛”的专栏。魏国英告诉我可以写一些对学校的批评意见。我那时还有些天真,以为自己的文章会有很大冲击力,怕引起不必要的麻烦,就用了一个笔名。殊不知北大的体制已经到了针插不进、水泼不进的程度,那里会在意我的那些言论。不过还是有一些人对我表示了支持,第一篇文章见报后,我听魏国英说是王孝庭第一个打电话给她,问文章是谁写的?并表示了肯定。王孝庭虽然早就退下来了,但却远比许多在任的校领导们更敏锐、更重视宣传舆论工作。虽然我不见得认同王孝庭在很多问题上的看法,但也不排除我们在另一些问题上有相同或类似的见解,能够得到他的关注和肯定,我还是感到非常荣幸。
对王孝庭的事情我了解的不多,基本上就是上面写到的这些。我还知道王孝庭解放前在北大学习时做地下党工作,曾到解放区汇报工作,以在解放区的见闻写了《大江流日夜》一书,对国统区的进步学生产生了很大影响。中文系的乐黛云教授回忆她做地下宣传工作时,在手电筒的微光下读过这本封面伪装成周作人著作的书,曾令她激动得彻夜难眠。遗憾的是我一直没有看到过。
从我和王孝庭的有限接触及通过其他人的看法,我以为王孝庭应该是一位很有能力,理论政策水平比较高的共产党干部,是一位传统的、坚定的老共产党员。他思想上确实有比较“左”的东西——这一点连王学珍等人都不讳言,他也有过于“正统”,甚至不近人情的一面。但他的信仰是非常真诚的,他对共产党是无限忠诚的,而且从来没有动摇过。尽管我不见得认同他的工作方式,不见得赞同他的所有观点,但我却十分佩服他对于理想信念的那种执着,哪怕是他所坚持的理念某些可能已经过时,某些已经被当局者抛弃。
鲁迅先生曾讲过中国有一类伶俐人,伶俐人都明白,不管形势怎么变,“自己的精神是不会苦的——因为都能变出合式的态度来……然而这一流人是永远胜利的,大约也将永久存在。在中国,惟他们最适于生存,而他们生存着的时候,中国便永远免不掉反复着先前的运命。”在我不算太长的人生阅历中,确实也见过一些鲁迅笔下善于见风使舵,而自己总是一贯正确的“伶俐人”。相形之下,王孝庭显然不是这样的“伶俐人”。不过我倒宁愿我们的社会里能更多一些不那么“伶俐”的人,也许他们会落后于时代,但他们对于理想信念的那种如同宗教般的执着、坚定,甚至是固执,都还是值得人们尊重的。
郭景海
 
1984年的国庆35周年庆典,我参加了由北大学生组成的群众游行方队,我们这个方队就是打出“小平您好”横幅的那个方队。国庆节前几个月我们就开始在东操场进行队列训练,当时郭景海是学工部部长,多次到现场检查指导我们的训练情况。郭景海还不时向我们传达国庆游行总指挥部的指示,他讲话时口音比较重,当时我没听出来是什么地方的,后来才知道他是天津郊县人。我们辛辛苦苦地训练了几个月,但是到长安街预演时指挥部又认为方队走的太整齐了,也像是阅兵,不符合群众游行的欢乐气氛。郭景海事后向我们传达了指挥部的意见,于是给我们拿的单一颜色的花束上加上五颜六色的彩带,并让我们正式游行时也不必走得太整齐。国庆节当天我们的方队出发、汇合时还好,集结过程气氛轻松、活跃,过北京饭店时我看到阳台上有不少外国人拍照,向我们打招呼。走到天安门前方队就开始乱了,不过如果队列一直很整齐,也不方便打出那个著名的横幅。通过天安门后队伍就完全散开了,我们一路跑到了复兴门,花束等更是扔了一地,多年后有人想找到“小平您好”的横幅作为文物收藏,估计当时就被随手丢弃了。按照要求游行队伍是不能夹带任何标语的,郭景海作为方队的负责人肯定会非常紧张,好在这条标语很快就成为了那个时代的标志。
我参加工作后郭景海还是学工部长,他经常会来书记办公室汇报、商量学生工作。在1986年北大第八次党代会上,因为准备继续留任的党委副书记王孝庭落选,于是安排郭景海接替了王孝庭的职务,主管学生和宣传工作,他随后也搬到办公楼201的书记办公室上班。郭景海上任前后的那几年,处理学潮一直是北大学生工作的主线,他的主要工作都是围绕着学潮进行的。
郭景海任副书记以后,我对他的了解逐渐多了一些,我觉得郭景海总体上是一个比较朴实的干部,他不仅个人生活比较简朴,没有什么官架子,而且他对共产党的感情,对上级领导的态度也是非常朴实的。北大一出现学潮,上级领导经常对北大的负责人横加指责,认为是他们没有管好自己的学生。如果换作别的校领导,如王学珍可能并不会太在意,丁石孙会有不同的意见,但郭景海则会非常自责,认为确实是自己没有做好工作,尽管当时的学潮没有哪一次是由于北大校方的原因引起的。上面对北大学生的任何动向一向都非常重视、敏感,郭景海作为主管学生工作的副书记,自然要承担最直接的责任,只要学生中出现了情况,郭景海都要亲临现场。1987年10月底中国足球队战胜了日本队,第一次进军奥运会,学生、市民纷纷上街庆祝,郭景海也马上要去街上察看。那天晚上天气比较冷,他还是穿了我的呢子大衣出去的。不过这一次只是庆祝活动,没有出现其他动向,郭景海回来后也显得比较轻松,还向我们叙述了看到的场景。
同他的前任王孝庭一样,郭景海对学潮也是非常反感的,在立场上他们是一致的,不过他的表现似乎没有王孝庭那么激烈。这里面有个人性格的因素,也有认识上的差别。王孝庭理论水平比较高,对“资产阶级自由化”的认识更清醒一些,他的态度也更主动、坚决一些;而郭景海在理论方面功底比较一般,但他对体制绝对是忠诚的,以服从上面的指令为准则,对“自由化”、对学潮似乎更多一些被动和无奈。郭景海也骂过戈尔巴乔夫,对他有一种本能的反感,有一次戈尔巴乔夫和美国总统老布什在马耳他会晤,我记得郭景海曾骂道:你看那戈尔巴乔夫见了布什,就跟奴才见了主子似的,摇尾乞怜。
1989年的政治风波开始之后,除了风波初起时郭景海的态度比较坚决,曾经指责过学生的一些行动之外,我没有印象他有特别突出的言论和行动,多数时候会表现出一副忧心忡忡的样子。在当时情况那么复杂、局势经常不明朗、上面又时不时没有声音的情况下,对郭景海这样完全听命于上级的人,可能也确实感到有些无所适从。
政治风波平息之后,国家教委组织了一个代表团,由郭景海带队,去美国了解在美留学生的思想状况。他们出发时我从车队要了一辆面包车,顺便送几个一同赴美的人员去机场。当时留学生普遍同情和支持国内学生,很难接受国内的现实,郭景海对此比较忧虑,在路上就和同行人员商量怎么开展工作。其中有一位国家教委的干部,看年纪快要退休了,位置估计也不高,还需要北大的车去接,但讲起话来却慷慨激昂,完全是一副社论口气,说这些留学生“他们受了美国政府的发动宣传”。不过话题一转,他又马上为自己能有机会去美国而感到很得意,说“机关党委,我是头一名”。估计是国家教委机关党委的一名干部,没什么实权,也没什么机会出国,大概在机关党委的干部里他是第一个被派去美国的。我开始听他讲话很是义愤填膺,对美国这个资本主义国家似乎十分痛恨,紧接着说出的话又让我大跌眼镜,实在是生动地体现出此类官员的分裂人格。
到了1989年下半年,林炎志调到北大任党委副书记,接替了郭景海主管的学生思想政治工作。郭景海后来又兼任了副校长,主要负责学校的日常行政和安全保卫方面的工作,之后他搬到了办公楼一层的校长办公室。郭景海之前可能有慢性咽炎,经常咳嗽,那几年忙于处理学潮时我听他说过:人家说我这个病如果不注意,可能会发展成喉癌。随后又叹口气说:哎!活着干,死了算。不想一语成谶,几年后他竟死于一种比癌症更可怕的疾病。
大概在1992年前后,郭景海发现自己的腿没有力量了,走路很吃力,随后的检查结果是他患上了运动神经元方面的疾病,随着运动神经元的坏死,身体各部位的肌肉逐渐不能运动,成为了“渐冻人”。郭景海病情确诊后就不能再上班了,家也搬到朗润园公寓一套一层的住宅,以方便他外出。他生病后的几年里我多次去他家里,有时是给他送文件、报纸,为他办一些事情,有时是带校外的人去看他。郭景海一开始就知道自己的病情,我认为他对待疾病的态度是令人尊敬的。我每次去他家里,他都会向来看望他的人谈起病情,不像有些人,特别是有些掌握权力的人那样很快出现崩溃。我不了解他私下时的状况,但他在外人面前是比较从容、平和的,没有表现出激烈、绝望的情绪,当然随着病情的发展,也能逐渐感觉到他内心的悲凉。郭景海一直在积极寻求治疗,生病后他的夫人董丽芬专职在家照顾他,有一次他们得知《山西日报》专版介绍了一位治疗这方面疾病的专家,就托我找一份报纸看看。我打电话联系了山西一所高校的办公室,但没有等来回音,后来我记得又联系了山西省委教育工委,他们寄来了那份报纸。
虽然郭景海一直在寻求治疗,但此种疾病尚无有效的治疗方法,随着病情的发展,他身体各个部位逐渐都不能动了,即使苍蝇蚊子飞到脸上也无法挥手去赶,其痛苦可想而知。因为后来安排住在朗润园的办公室同事为他送报纸、材料,我也就很少再去他家里,只是听说他的病情继续恶化。到了1996年底,郭景海被送到西苑医院,实际上就是等待最后时刻的来临。住院当天我陪任彦申去看他,那种情况下任何语言、安慰对他已完全没有意义,我们也没有进病房,只在门外隔着玻璃看了看,和董丽芬说了一些后事安排就离开了。第二天郭景海就去世了,我和校办的人到医院后听董丽芬说他临终前没有太大痛苦,是由于各器官衰竭去世的。郭景海的生命力很顽强,是同一批病人中存活时间最长的。校办的邸振江为他穿了衣服,穿的是一件普通的夹克衫,董丽芬说老郭不讲究这些。
郭景海本质上是一个朴实、朴素的人,他不仅个人生活如此,对共产党也有一种很朴素的感情,对党的组织、对党的领导人都是忠诚的。他的知识、理论素养不是很高,也不大会从另外的角度思考问题,而是本能地服从、执行上级的指令。不过郭景海待人还是比较厚道的,我没有见他很严厉地斥责过什么人,也没有听说他整过什么人。可能正是因为他的朴实,使他在遭受某些领导人的无端指责时,也会违心地自觉接受,这样长期下来可能会积累一些不良情绪,而这些情绪又可能对他的致病产生一定影响。郭景海在罹患不治之症后没有失态、绝望,而是比较从容、平和,维护了自己的尊严,他对待绝症时的表现不是一般人能做到的。
林炎志
 
林炎志是1989年政治风波之后到北大担任党委副书记的,此前我知道他是清华大学毕业的,是高干子弟,曾经当过北京团市委书记,也是当时政坛上引人瞩目的年轻干部。林炎志在团市委工作时应该来过北大,但我没有印象见过他。后来林炎志转岗到北京市体委任主任,不过我没有看到过他对体育问题发表的见解。政治风波发生之后,林炎志的表现开始活跃起来,经常可以在《北京日报》等媒体上看到他对形势发表的看法,立场很坚定、旗帜很鲜明,而且常常有一些标新立异的见解。例如风波前期出现了警察打人的情况,我们长期以来所受的是“人民警察爱人民”的教育,但是“爱人民”的警察突然变脸了,动手打了“人民”,许多“人民”一下子想不通。这时候林炎志出来说话了,他说警察本来就是专政的工具,就是要打人的,认为警察不应该打人,这是很可笑的。因为此前从来没有听过这么直白的言论,所以印象很深刻。
大概是由于林炎志政治风波期间的突出表现,于是被派到北大主管学生工作。林炎志虽然是高干子弟,但我最初的印象是此人生活很朴素,他经常穿一身洗的发白的蓝色制服,包括带北大学生去中南海见最高领导人,穿的也是这身服装,只是看起来比平时的要新一些。听说他因为政治见解不同和妻子离了婚,干脆一个人住在北大的集体宿舍,为了便于观察了解学生的动态,他要求把宿舍安排在三角地旁边的16楼里。林炎志入住时我陪他去过宿舍,看到狭小的房间里放着一台老式的黑白电视,就问他为什么不买一台彩电?他叹口气说没有那么多钱呀。林炎志平时去北京市委、国家教委或者更远的地方开会,一般都不让我安排车,而是自己骑自行车去。当时北大文科新生在石家庄陆军学院接受为期一年的军训,林炎志曾骑自行车去过石家庄,还让当时的校学生会主席陪着他去了,据说这位年轻人被累的不轻。
因为林炎志当过体委主任,我有时候看了精彩的体育比赛,想和他交流几句,但我很快发现他对体育话题根本不感兴趣。1990年北京亚运会时,林炎志还送给我两张分别是足球比赛和田径决赛的票,他大概既没有时间也没有兴趣观看,于是我颇感荣幸地在工人体育场和亚运田径场的贵宾席上观看了比赛。
林炎志生活很简朴,我也没看到他有别的兴趣爱好,他的关注点完全在政治问题上。虽然林炎志到任时政治风波已经平息了,但是许多北大的学生、教师、干部思想上并没有转变过来,特别是学生中时不时还有些风吹草动。一到敏感的日子,上面和林炎志这些学校的政工干部们都会非常紧张,那几年多次出现学生们在校园内聚集、起哄,挂横幅、贴大小字报等动静。每次发生这类情况,林炎志都会马上出现在现场。对于学生们持续不断的聚集活动,他提出了“围观即参与,枪打出头鸟,秋后要算账”的针对办法。意思是说对学生的骚动,即使没有直接参与,在旁边围观的也算是参与了;对那些领头闹事的要坚决打击;事态平息后,要对参与者秋后算账。话说的非常坚决,很能体现林炎志的语言风格,大概只有他能这么直接地说出来,不过这些年用林炎志式语言说话的官员似乎多了起来。林炎志话虽然说的很硬,但好像也没有很快见到成效,学生中还是不断出现各种动态,直到他离开之后的90年代中期才逐渐平息下来。
不知道是什么原因,中国人往往在思想、政治领域控制得比较严的时期,对男女关系方面的事也抓的很紧。1989年政治风波之后,曾有一位博士生的女友因为害怕住进了男友宿舍,被学工干部发现了。那时候北大的任何事情都会引起上面的重视,时任政治局委员、北京市委书记李锡铭亲笔做了批示,要北大严肃处理。我见过李锡铭的批示,口气非常严厉,好像是出了天大的事,不知道那段时间一脸不高兴的他是否因为没有进入常委而大发无名之火。那个倒霉的博士生曾一脸惶恐地来过办公楼,他最后还是被退学了。或许有李锡铭批示的作用,林炎志主管学生工作期间,对学生的生活作风问题非常重视,并对女生宿舍实行了封闭式管理,自此北大男生再不能踏进女生宿舍一步。同时学校还组织了一批人检查学生风纪,特别是对男女生之间的亲密行为进行干预。干这种事的多半是干部、教师中一些五六十岁的半大老头、老太太,他们平时就对学生的一些行为看不惯,用某位教授的话说就是“未名湖(周边)都成了高粱地了”。他们最大的乐趣就是在夜晚到处巡逻,看到黑暗处有身影就用大号的手电筒直接照过去。不过林炎志自己倒没有耽误事,听说他离开北大之后又结了婚,妻子很年轻,是北大1990级的学生。
林炎志在北大不分白天夜晚地投入工作,他住在学生区,听说经常有不少学生、学工干部们去他的宿舍,其中不乏一些他的支持者和崇拜者。不过林炎志也有一些遇到挫折的时候,有一次他带一批团干部去北京近郊,我也跟着去了。路上休息时林炎志和团干部们大谈忠诚的问题,强调党员、干部首先要做到忠诚,他在理论上还是有一套的,讲的很有些说服力。我记不清是哪个系的团委书记随后发言,就到底应该忠诚于谁提出了疑问。林炎志似乎也说不出更多道理,没有再进行反驳。还有一次不记得林炎志安排了什么事情,没有征求王学珍的意见。当时王学珍已经明确要卸任了,但还没有正式公布,我听到他很生气地说我还没有下嘛。林炎志知道后赶紧表示说我做检讨。那天下班时我和他骑自行车同行,林炎志一路上唉声叹气,满口“他妈的”不断,说了一些“我整天这么累,我他妈的图个什么呀”,“我他妈的现在就想睡个好觉”之类的话。
林炎志毫无疑问是传统体制的坚决维护者,但是他的语言、行为又往往直截了当、不拘形式、很有些个性。作为体制内的官员,其语言、行为一般是比较规范的,讲究说话、做事滴水不漏;或者像有的官员那样说的是一套,做的又是另外一套。体制内有许多事是做得说不得,或者是说得做不得的,而林炎志却是言行一致的,这样他的个人风格就和体制特点产生了一些矛盾。林炎志在每个位置上呆的时间都不太长,也没有晋升到很高的职位,尽管他在政坛上很有背景,起点不低。林炎志在北大干了3年左右,就被调到教育部任专职委员,后来又兼任了国家语言文字委员会主任。对林炎志这样一心想在政治上有所作为的人,不大可能对语言文字之类的事情感兴趣,果然时间不长,林炎志就到河南当了省委常委、宣传部长,几年后又当上了吉林省委副书记。
我没有太注意过林炎志在河南、吉林期间的言行,不过在江泽民提出“三个代表”之后,林炎志却引人瞩目地发表文章,主张共产党要领导和驾驭新资产阶级,不赞成资本家入党,与江泽民提出的允许资本家入党的精神不一致。林炎志所持的应该还是传统的观点,主张以公有制经济为主体,反对大力发展私营经济,认为共产党是工人阶级的先锋队组织,当然不能允许工人阶级的对立面资本家入党,要保持共产党的阶级性、先进性、纯洁性。只是在众多官商早已融为一体,形成各种利益集团的现实面前,林炎志的观点未免过于脱离实际,至于要“领导和驾驭”又未免过于一厢情愿了。
林炎志出身于高干家庭,高干子弟有的确实飞扬跋扈、不可一世,有的则家教甚严,比较低调,就是出身同一个家庭其子女往往也会差别很大。薄熙来的骄奢淫逸我们是知道了,但是他的妹妹薄小莹却非常低调、朴素,据说在北大历史系很得好评。林炎志在生活上确实是艰苦朴素、律己甚严的,他曾和我说过他从小到大从来没有抽过烟,连尝试一下都没有过,自制力确实很强。林炎志虽然说过不少厉害的话,但平时待人还是比较温和的,说话也比较客气。不过我听北大的司机说送林炎志回母亲家,看到他对其姐姐的态度是比较凶的,也许这是他的另一面。林炎志和薄熙来的年龄差不多,背景也比较相似,而且林炎志在1980年代中期的职位是高于薄熙来的。我无法设想林炎志如果有薄熙来那样的地位会怎么样,虽然他们的个人风格有很大不同,但在对权力的追求方面应该是一致的。据说在“文革”初起的时候,那些父辈们尚未受到冲击的高干子弟们,曾经发出过“天下是老子们的父母打下来的,还得由老子们来坐”的宣言。时间虽然已经过去了几十年,但是不管是从那个年代过来的,还是后来崛起的某些高干及其子弟,他们的这类想法应该是不会有太大改变的。
吴树青
 
对于要不要写吴树青我曾经有过一些犹豫,主要是我对他的了解不多,他又是在非常特殊的时期出任北大校长的,有些事情不太好写。犹豫再三,觉得吴树青毕竟在北大做了整整7年的校长,完全回避有点说不过去,只好勉为其难地把我一鳞半爪的印象写出来,留待有识者指教。
吴树青是1989年的政治风波之后接替丁石孙出任北大校长的。由于北大当时的情况太敏感,卷入政治风波的程度太深,一般人都估计上面要对北大进行重点的整肃。据说曾打算安排比较高级的官员接任北大校长,但又听说没有人愿意来,不知道出于什么考虑,最后是安排了中国人民大学的副校长吴树青出任北大校长。如果是在正常的情况下,身为人大副校长的吴树青是不大有可能到北大当校长的,他出任北大校长是一种特殊情况下的特殊安排。
吴树青上任是在1989年8月,当时学校里很安静,学生们早在暑假之前基本上都离校了。宣布吴树青上任的学校干部会我没有参加,《北京大学记事》中记载国家教委副主任何东昌在会上宣布:丁石孙因任期已满,不再担任北大校长,由吴树青任北大校长。何东昌、丁石孙、吴树青都在会上讲了话,但没有记载讲话的具体内容。吴树青到任不久我就制造了一起水淹校长办公室的事件:当时政治风波刚结束,党委办公室昼夜都要有人值班,我是年轻的单身汉,经常被安排值夜班。那段时间北大后勤说是要防止输水管道跑冒滴漏,每天夜里十二点以后关上全校的总水闸。有一天我睡的比较晚,洗漱时已经停水了,我把洗手池上的两个水龙头都拧开忘了关上。第二天清晨我被哗哗的流水声吵醒,起来一看水流到外面了,二楼的积水倒不多,但是一楼的校长办公室却被水淹了。吴树青当时家还在人大,为了他中午休息就在办公室里放了一张折叠床,结果床上、地下都被水淹了。因为是出于无意,我倒也没有受到什么批评,一个间接的后果是把书记、校长办公室几十年都没有清洗过的纯毛地毯拿出去清洗了。虽说关水闸是为了节水,但不知道全校范围内类似我这样忘了关水龙头的情况还有多少,也不知道水到底是节约了还是更浪费了,反正不久之后又不关水闸了。
吴树青上任后没有什么事给我留下特别深的印象,我参加学校的会议、直接听他讲话的机会不多,有时候偶尔听到他的一些讲话,也都是符合当时口径的一些话,没有什么特别之处。有一次我和同事分别整理吴树青的一个讲话录音,其中一段我记录整理下来大概有近千字,话是说了不少,但我听来听去,觉得他说的主要就是一个意思:就是强调既要坚持四项基本原则,又要坚持改革开放,坚持四项基本原则是改革开放环境下的坚持,而改革开放又是坚持四项基本原则前提下的改革开放。他的其他讲话也大体如此,我没有特别留意过。
政治风波之后北大的形势比较微妙,虽然风波已经平息了,但是大部分师生的思想并没有转变过来,消极、对抗的情绪比较强烈。另外北大许多师生都不同程度地卷入了政治风波,按照当时的要求是要进行清理和清查工作。当时北大的一些老干部对清查工作热情很高,有的人虽然已经退休了,还是很积极地参加清理清查工作,让很多受到审查的师生、干部压力很大。我不太清楚吴树青对待清理清查工作的态度,不过据我的印象,吴树青在处理人的问题上并没有什么特别的言行,似乎比较低调,北大大部分卷入政治风波的人都得以顺利过关。当然这主要和社会的大环境有关,经过了以往多次政治运动的洗礼,整人的那一套做法不再有广泛的群众基础了,即使有人想搞也是搞不起来的。据我了解吴树青也没有刻意去搞这一套。
吴树青刚当校长时我感觉他还有些拘束,不够自信,不过毕竟是北大校长,国内国外出席各种活动的机会很多,周围关注的人更多,慢慢地就当出些感觉了,也有了一定的气度。吴树青后来还担任了全国人大常委,每年要参加多次人大常委会,那几年有关意识形态方面的会议也很多,我印象中吴树青经常出席此类会议,加上他时不时到外地参加各种会议、活动,每年还要出国访问几次。在他任职的那些年里,每年都有大量时间是不在学校的,学校内部对他的这种状况也有一些看法。不过比起后来的许智宏等人,吴树青的做法似乎还算不上太过分。
从1989年开始,北大新入学的本科生开始进行为期一年的军训,这一做法一直持续到1992级新生。军训是政治风波之后上面决定的,目的是为了加强对大学生的思想政治教育,免得他们入学以后受到“自由化”的影响。但是部队也容纳不了那么多大学生军训一年,所以只对风波中表现突出的北大,另外还有上海复旦大学的新生进行了一年军训。军训了几届之后,他们是否具备了坚定的政治立场,是否对“自由化”有了足够的抵御能力,没有人敢打保票,但对北大招生的影响却比较明显,许多考生因为军训而不愿意报考北大。于是学校想打报告从1993年起停止军训。不过在此期间,时任政治局委员、国务委员的李铁映曾到北大讲话,坚持要继续军训,并强调说对于军训的效果,要看这些学生以后在社会上的表现才能体现,口气很强硬,大有将军训长期进行下去的打算。李铁映是主管教育的,我不清楚吴树青及学校领导班子是怎么考虑的,不过在李铁映讲话之后,北大最终还是和复旦一起向中央打了报告,并获得批准,停止了北大、复旦新生为期一年的军训。我虽然不了解其过程,但吴树青作为校长应该是要对这个问题表态的,起码他和当时北大的班子还是实事求是地向中央反映了意见。据说复旦大学开始就没有敢打这个报告,具体是由北大操作的,复旦为此还向北大表示了感谢。
1994年7月北大召开了第九次党代会,这年吴树青62岁了,按照5年的校长任期他也应该卸任了,但是没有听到关于他去留的任何说法。吴树青在北大虽然没有不好的形象,但是也谈不上有很高的威望,加上年龄、任期已到线,如果他在党委委员的选举中落选,将是极没有面子的事情。我是这次党代会的工作人员,选举前我曾听负责会务工作的党委副书记朱善璐一脸严肃地说要做最坏的打算。计票工作是分几个组进行的,我参加的这一组里确实有不少吴树青的反对票,不过最后的结果有惊无险,吴树青顺利当选为党委委员。此后吴树青又当了两年校长,到1996年才正式卸任。除了丁石孙是以任期届满的理由卸任外,北大校长的任期似乎并没有明确的年限,陈佳洱当了三年多,许智宏当了九年,周其凤当了四年多,我到现在也搞不清北大校长的任期应该是几年,可以任职到多大岁数。
吴树青早已离开北大校长的位置了。如果有人问我吴树青在北大做过哪些不好的事情,我的确说不出来;但要是再问他有哪些好的主张,做过哪些好的事情,我也同样说不出来什么。我印象比较深的是吴树青卸任时,任彦申在宣布陈佳洱上任的干部大会上,多次对吴树青给予了高度评价。反映出他们之间的关系比较融洽,至少说明吴树青对任彦申的工作是比较支持、配合的,尤其是对任彦申主张的把科技开发和市场开拓紧密结合起来,大力兴办校办产业的做法是比较赞同的。对于吴树青我大体上就知道这些,他是在特殊的背景下担任的北大校长,还是能比较实事求是地尊重北大的实际情况,也没有做过什么明显影响北大校长形象的事情,北大没有因为他而变得更好,但他也没有对北大的堕落产生实质性的影响。吴树青应该是北大历史上一位过渡性的、没有什么明显特点的校长。
任彦申
我认识任彦申的时间比较早。1985年“918”学潮之后,大概是上面要调查了解北大学生的思想状况,于是由刚从清华大学调任北京市委教育部副部长的任彦申带队,带了几个干部来北大调研。他们具体是怎么调研的我不清楚,我只是负责安排他们在勺园的食宿。这次调研的时间比较长,至少有一两个月吧,任彦申走的时候我到过他的房间,他把几个人应付的伙食费交给了我。勺园是当年北大接待客人条件最好的地方,虽然是公务活动,但按当时规定个人要付一部分伙食费,大概是每人每天一块钱。此后的几年里学潮不断,任彦申应该还会经常来北大,但那时候来北大的大人物实在太多,我没有对他有特别的印象。
不过在1989年政治风波前后,我记得任彦申多次来过北大。我印象比较深的是风波平息之后,他有一次在办公楼礼堂给北大学生作报告。任彦申确实很有口才,讲话很生动,他虽然是力图说明平息政治风波的必要性、合理性,但口气并不强硬,不是用官方的大道理教训人、吓唬人,而是试图以他的见解说服学生。我记得他讲了政治风波期间的一些情况,例如讲到虽然宣布戒严了,但其后的一段时间并不是解放军在戒严,实际上是学生戒了严。台下立即热烈鼓掌,这种掌声谁都能听出其特定的含义,任彦申当然不会不明白,但他似乎也受到了这种掌声的鼓励,越讲越有精神,不断得到许多热烈的掌声。
到了1991年初,上面调整了北大的党委班子,原党委书记王学珍卸任,由北京市委副书记汪家鏐兼任北大党委书记,任彦申调任北大党委副书记,主管宣传工作。汪家鏐主要还是在北京市委工作,她一般只是每周来北大一两次,对北大的日常工作过问不多。但是任彦申迅速地进入了角色,我很快就感觉到他的能力确实比较强,做事很干练,讲话、写文章都很有一套。有一次任彦申和我说过,本来是要安排他去崇文区当区长的,由于北大当时的特殊情况,才被点名调到北大,以加强北大党委的班子。任彦申到北大后一直很活跃,经常讲话、作报告。我那几年身体不好,也很少参加学校的各种会议,直接听他讲话的时候不多,印象中他宣讲的主要还是防止和平演变的那一套观点。任彦申对于形势的判断力比较强,对上面的意图领会的比较深,当时意识形态方面的工作最受重视,任彦申兼任了北大党校的校长,还在公共政治课教研室的基础上筹建马克思主义学院,并自任第一任院长,加强对北大意识形态领域的掌控。
任彦申对于政治形势的变化一向非常敏感、善于把握,不过真正体现出他这方面能力的,还是在邓小平1992年初南巡讲话之后。因为邓小平的南巡讲话,国内舆论气氛大变,继续讲“姓社姓资”那一套肯定不合时宜了。1992年年中我听过一次任彦申的报告,主要是讲解邓小平南巡讲话精神,但他不是单纯地解读南巡讲话,而是把邓小平政治风波之后接见戒严部队的讲话和南巡讲话做了对比,认为这两个讲话都非常重要。他说邓小平如果政治风波之后马上讲南巡讲话的内容就会不合适,而如果南巡讲话时还是讲接见戒严部队的那些内容也不行,就会不符合当前的形势。所以这两个讲话在当时背景下都是非常恰当的,都有十分重大的意义。这样任彦申就十分巧妙地化解了某些前后不一致之处,不露痕迹地将他的立场、观点迅速转变到邓小平南巡讲话的精神上来。
邓小平南巡讲话之后,任彦申的兴趣似乎主要不再在意识形态领域了,而是适时地转向了经济领域。不过他对舆论宣传工作仍然很重视,我印象比较深的有两件事:一次是1992年十四大召开后第二天,北大经济系教师解万英跳楼自杀,后来有一家经济类的报纸(具体是哪家报纸我记不清了,可能是《首都经济信息报》)以《北大教授跳楼记》为题,对这一事件做了长篇报道。任彦申大发雷霆,将写这篇报道的两位记者找来训话,我刚把他们领进任彦申的办公室,就听见他劈头盖脸地训斥说这几年好容易把北大稳定住了,但你们的这篇报道又把北大“搞乱了”;还有一次是在1996年初,《中国青年》杂志发表了中文系教师韩毓海的一篇文章——《北大,魂兮归来》。这篇文章我当时也看了,我认为韩毓海到北大的时间不长,对北大的一些事情看的比较表面化,不过内容上也没什么大不了的。任彦申这时候已经当了党委书记,他对韩毓海的文章非常恼怒,他是否当面批过韩毓海我不知道,我只看到《中国青年》杂志的有关负责人被叫到北大,受到了任彦申的当面斥责。
1992年之后,任彦申的主要注意力转移到了经济领域,尤其对发展校办产业非常热心,应该是他首先提出推倒北大南墙搞商业开发的,并一手促成了以房地产开发为主的北大资源公司的成立。推倒南墙引起了舆论的不少非议,当然外界也存在一些误解,北大倒不是不要围墙,而是在围墙的位置上建商业用房。另外北大在当时办学经费非常紧张的情况下搞一些商业开发,确实也有一定的合理性,所以任彦申的主张还是得到了很多支持。任彦申对北大方正等校办产业也极为重视,热衷于方正公司的各种具体运作,例如促成方正公司在香港上市,力主由王选担任方正香港公司董事局主席等等。我在办公室经常能看到方正等校办产业的人,或者来送文件,或者向任彦申汇报。任彦申曾提出过一系列观点,例如说北大要实现“产学研”的结合,科研工作要“面向国民经济主战场”,进而提出要培养“有市场头脑的科学家”,以及“有科学头脑的企业家”。
我那时候对任彦申的这些见解也很佩服,有一次他要写一篇关于校办产业的文章,由他口授让我记录。我记下来以后觉得就是一篇比较完整的文章,有理有据,对他的能力更是大为叹服。那几年北大的校办产业在任彦申的主导下名声大噪,在全国高校中独领风骚。方正负责人甚至夸口说以后国家每年给北大投入多少钱,方正就也给北大上交多少,一时令人极为振奋,只是后来的实际距离这一承诺相距何其遥远。
客观地讲,任彦申确实是比较有能力、有魄力、有思想的官员,无论是他提出的一些主张,还是实际做的一些事情,在北大都得到了相当的认可。在邓小平南巡讲话之后经济建设热潮的大背景下,红极一时的北大校办产业也为他赢得了一定的声望。到了1994年北大召开第九次党代会,任彦申顺利接替汪家鏐当上了党委书记,正式成为北大的一把手。在任彦申当上党委书记之前,他在北大领导班子成员中已经比较突出了,我感觉没有人能对他接任书记一职形成挑战。担任书记后任彦申进一步提出校党委要管全局,抓大事,要着重对方向性、全局性、战略性的问题进行谋划和决策,要统揽改革、发展、稳定的全局。我认为从1992年之后到2000年初,在将近10年的时间里,北大的各项重要举措和办学思路,都比较深地受到了任彦申的主导。
1997任彦申顺利地被推选为代表北大出席中共十五大的代表,以他的身份和以往的惯例,我们都估计他应该进入中央委员会,起码应该当上中央候补委员,前两任党委书记王学珍、汪家鏐在任时都是中央候补委员。十五大开幕前要准备证件照,任彦申对出席会议还是很重视的,他有一张标准像自己比较满意,但底片找不到了,就让党办副主任薛松岩拿这张照片进行翻拍。我看到翻拍后的照片色彩有些变化,效果并不理想,就开玩笑对薛松岩说不要因此影响任书记的当选。不想十五大上任彦申真的没有进入中央委员会,反倒是一向比较低调,而且不是十五大正式代表的陈佳洱校长当选为中央候补委员。
不过任彦申毕竟是任彦申,没有进入中央委员会这个小小的挫折应该不会对他有多大影响,机遇很快就出现了。1998年北大将迎来建校100周年,北大的百年校庆无疑会引起社会各界的高度关注,对北大的主要领导人来说,更是一个可以充分表现的舞台。早在校庆前几年,北大就开始筹备相关活动,组建了若干个工作班子,校庆前一年还在南校门设立了倒计时钟。任彦申对北大百年校庆可能造成的影响十分清楚,对校庆活动可谓是竭尽所能、全力以赴,要将其做成一件举世瞩目的大事。我从1997年春天后被调整到党委研究室,不再担任书记秘书工作,我本来就是个小人物,对领导们如何进行决策没有机会参与,只是离领导们比较近,时不时能得到些信息。既然不在领导身边了,我对有关校庆的决策就更是知之甚少,不过还是能感觉到北大百年校庆的重大决策都深深地打上了任彦申的烙印,所有重要的举措尽在他的掌控之中。
首先是对北大创办的背景进行了特别阐释,强调北大的前身京师大学堂是由清政府创办的第一所国立综合性大学,京师大学堂不仅是全国的最高学府,还是全国最高的教育行政机关。中国近代高等教育的历史不长,到底哪所大学创办最早?并没有权威的定论,之前已经有大学庆祝过建校100周年了。北大特别强调其政府官方的背景,这样就把京师大学堂和一些更早的由外国人或民间创办的学校区分开来,似乎是要说明北大才是和政府关系最密切、最正规的大学。以此思想为主导,北大的百年校庆就不仅是北大自己的事情,而且应该是上升到国家层面的政府行为,应该由政府出面支持甚至直接参与主办。
百年校庆最重要的一项活动就是纪念大会了。既然要达到政府行为的目的,那么纪念大会在什么地方举行就非常有讲究了,如果是放在北大,好像就不足以体现政府官方的背景。虽然领导班子里有不同的意见,但任彦申一直主张庆祝大会要在人民大会堂举行。校庆之后有人编了一本书,主要是讲述校庆前后的过程,当时已到北大出版社工作的刘乐坚让我帮忙看看是否有必要出版。我大致看了一下,全书洋洋30万字,通篇充斥着对任彦申、闵维方等人校庆事迹的歌功颂德,极尽肉麻吹捧之能事。例如其中有这样的内容:领导们就校庆大会究竟在校内还是在人民大会堂开争执不下,时间已经很紧迫了,在某次会议上,“任彦申像天神一样神威凛凛地站起来,斩钉截铁地说:就在人民大会堂了。”我不了解这本书的写作背景,认为内容过于谄媚夸张,不宜出版。不过我也和刘乐坚开玩笑说如果存心想调侃任彦申等人,倒是不妨出了。后来好像是没有出。
除了确定庆祝大会的举办地点,邀请最高领导人等政要出席大会更是校庆活动的重中之重。另外还提出要给江泽民授名誉博士学位,江泽民没有接受。此外,通过国家邮政局发行了北大百年校庆纪念邮票,将一颗由北大校友发现的小行星通过国际小天体命名委员会命名为“北京大学星”,通过铁道部开通了北大校友返校专列,举办了百年校庆庆典晚会“光明行”并由中央电视台进行直播,等等。庆祝大会当天,由北京市有关方面进行交通管制,200辆满载着北大师生、校友的大巴车队一字排开,绵延数公里,一路绿灯驶往人民大会堂,引来无数路人或羡慕、或不解的目光。这一系列活动不见得都是任彦申直接策划的,但都体现了任彦申要将北大百年校庆做成政府行为的指导思想,是在多个政府部门支持下实现的。最高领导人也很给北大面子,先是亲自来北大“暖寿”,又携数位主要领导人出席纪念大会。任彦申自然要忙前忙后,一时风光无限,其间还接受了因被朱镕基点名而名声大噪的凤凰卫视吴小莉的专访。任彦申侃侃而谈、挥洒自如,据说让见过不少世面的吴小莉也为之折服。
不过除了这些台前的事情之外,任彦申还有更重要的事情要做。最高领导人出席庆祝大会肯定要发表一篇讲话,任彦申事先就带了几个人起草讲话初稿,他后来和我们说过起草过程。对于讲话稿如何写任彦申是很费了一番心思的,要使之成为一篇指导性、纲领性的文件。江泽民的讲话我印象比较深的,一次是在哈佛大学的演说,另一次就是北大百年校庆大会的讲话。我不知道任彦申起草的讲话稿和江泽民最终的定稿有多大差别,不过从任彦申的讲述里,他的思路、提法基本上都得到了采纳。5月4日人民大会堂的庆祝大会是由任彦申主持的,他的口才、能力又获得了一次难得的表演舞台。
任彦申凭着北大百年校庆的机遇大出了一番风头,借着这股余热,又有最高领导人讲话中提出的中国要有若干所具有世界先进水平的一流大学,任彦申很快开始了新的策划。最高领导人是在北大百年校庆时发出的号召,北大自然应该率先响应。当时有一种普遍的看法,是认为中国的大学和世界一流大学的差距首先在于办学经费过于悬殊,所以建设世界一流大学需要大量的经费投入。我在党委研究室的同事还写过一篇文章,被收录到《新华文摘》上,中心意思就是说国家应该给北大重点支持以建成世界一流大学。不过任彦申考虑的更周全一些,虽然北大有中国最高学府的声誉,但如果仅要求国家向北大增加投入似乎又过于特殊,毕竟中国的名牌大学不止北大一所,而其中唯一和北大地位相当的就只有清华了。于是任彦申提议联合清华,共同提出加快创建世界一流大学的计划,建议国家对北大、清华加大投入。这一计划得到了急于做出政绩的教育主管部门的支持,经过一番运作,北大、清华从1999年开始在三年内各得到18亿的资金投入,此外还有后续投入。后来又有一些其他大学被吸纳进来,成为一项波及范围更广的所谓“985计划”,因最高领导人1998年5月在北大百年校庆的讲话而得名。任彦申的谋划使北大、清华获得了很大的实际利益,以前国内的一些著名大学和北大、清华大体还是在一个层次上,但“985计划”的实施却使得北大、清华一下子鹤立鸡群,对其他大学形成了压倒性的优势地位,特别是在每年的招生中垄断了国内最优秀的生源。至于这一计划是否影响了大学之间的平等竞争,是否真正提高了中国大学的办学水平,则恐怕是一个不太好说的问题。
百年校庆的高潮刚刚过去,又一次足以令世界瞩目的重大机遇再次降临到北大。1998年6月,美国总统克林顿访华并要在北大发表演讲。克林顿不仅是世界头号强国的总统,而且还很年轻,颇有些明星范儿,所引起的关注度可想而知。任彦申十分清楚克林顿到访北大的分量,虽然他对如何接待的具体环节不见得都亲力亲为,也不像百年校庆那样可以一直站在前台,但一定会有整体上的掌控。为了接待克林顿,北大方面可谓十分细心周到,我知道的就有为克林顿发表演讲的办公楼礼堂安装了空调,将办公楼东面通往未名湖的一条泥土小道铺设成水泥路,我曾戏称之为“克林顿小道”,后来因为克林顿演讲会上回答提问的时间比较长,没有走这条小道。北大方面也坚持了一定的原则,美方事先提出克林顿发表演讲时,为了安保要使用白宫的讲台。北大坚决拒绝了,认为在北大演讲就要用北大的讲台。后来双方达成妥协,用白宫的讲台,但是在讲台上悬挂北大的标志。不过更周密的筹备是在台面下进行的。
克林顿来访当天我去接待中山大学的党办主任李尚德,我安排他在勺园住下后,正好电视上开始直播克林顿的演讲。看到提问环节,我们感觉到每个学生的提问都咄咄逼人,很有些火药味,有抱怨美国人对中国的了解不如中国人对美国多的,有指责美国向台湾出售武器的,有质问克林顿微笑背后还隐藏着什么的,有提出美国在人权与民主方面是不是也存在着一些问题的。尤其是后来被称为“反美女生”的马楠提出她不认为国家的自由和个人的自由有什么冲突,认为自由是自己一种主动的选择,像中国现在的繁荣发展正是中国人民自由的选择,并告诫克林顿“只有真正懂得自由的人才会更加尊重别人的自由”。因为这些问题太一致,倾向性太强了,反而让我们觉得不对劲。李尚德就问我:这些提问都是安排的吧?我也有同样的感觉,但我不了解内情。
克林顿离开后我回到办公楼,很快我就在书记秘书的桌上发现了打印好的一页纸,刚才学生们的提问内容都在上面,和提问时的语言几乎一模一样。我顺便问了一下,秘书回答说都是任书记拟的。后来人们惊诧“反美女生”马楠为什么要嫁给美国人?其实马楠这些提问的学生们本来就未必真反美,只是出于讨好学校当局和为了自己出风头,充当了一次任彦申的传声筒而已。据说是学生们先准备了一些问题,任彦申看后不满意,于是亲自草拟了这些提问。当天参加演讲会的学生也都是精心选择的,大多是比较可靠的学生干部。虽然提问者由美方随机选择,但如果选择另外的人也还是会提出同样的问题,用中国话讲早就“设好了埋伏”。当然任彦申设计这些提问也不过是揣摩了某些官方机构和某些领导人的意图,将他们不便于向美方说的话通过北大学生之口讲出来,以此表达对美方的不满和对自己的辩护。
1999年1月北大召开了第十次党代会。北大党委作为共产党的基层组织按党章规定应该三到五年召开一次代表大会并进行换届,但是实际上北大的党代会很少按时召开。我经历过1986年的第八次党代会,和上届召开已经过去了8年,1994年召开了第九次党代会,和第八次党代会又隔了8年。1999年的第十次党代会总算是正常了,此后2003年召开了第十一次党代会,也算按时召开,但是再往后2012年才召开第十二次,和第十一次隔了9年。北大的党代会究竟什么时候召开,并不是按照党章规定,而是根据实际形势或者是一些领导人的意图而定。1999年之前我就听任彦申多次说过要按时召开党代会,要使北大的党内政治生活正常化,这个理由自然很站得住脚。不过根据我对当时学校领导班子情况的了解,一再强调要按时召开党代会,恐怕也有让一些老领导尽快腾出位置,让一批任彦申选拔任用的比较得心应手的年轻干部尽早上位的考虑。
党代会召开之前的党代表选举还差点出了意外。任彦申的代表名额是划拨到由党委各职能部门组成的一机关党委选举的,由各部门的全体党员,包括离退休党员一起投票选举,不占一机关党委的代表名额,但是也要经过投票。一机关党委书记王丽梅专门在会上做了说明,但是选举的结果却是任彦申的得票比较低,差点没有选上党代表。事后王丽梅立即跑过来向任彦申解释可能是她没有讲明白,我还听见任彦申说如果我选不上,看这次党代会怎么开的话。我也没搞清楚到底是王丽梅没有说明白,还是有不少人故意不投任彦申的票,总之任彦申当选党代表了,党代会也顺利召开了。无论是这次党代会确定的指导思想,还是在人事的安排上,基本上都实现了任彦申的意图。
此后在我的印象中,任彦申在北大做的最后一件大事就是推行人事分配制度改革。由于“985计划”使北大获得了较大的经费支持,1999年北大开始进行人事分配制度改革,对这件事情我还要另外陈述,这里就不再多说。对任彦申的各种做法学校里也有一些不同意见,任彦申就此讲过一些观点,他说北大已经改变了过去那种动荡不安、争论不休的局面,现在要做到“不讨论,不争论”,对看准了事情就大胆去干。我理解他的意思是希望大家不要对学校的决策指手画脚,最好是不要讨论,不要发表意见,以免争执不下、贻误时机。我最后听到他的话是由于新的人事分配制度拉大了收入差距,许多人心理不平衡,任彦申在一次会上讲了一些老同志心态平和的例子,要求大家对收入差距问题要“想得开”。
2000年初北京大学和北京医科大学合并,任彦申调离北大出任江苏省委常委、宣传部长,其后任江苏省委副书记。任彦申离开北大后十年多我没有见过他,对他在江苏的情况更是没有任何发言权,不过我曾遇到过和他有关联的事情。前几年北大房管部的人和我说,他们在清理住房时发现一套中关园一居室的房子是我签名办的入住手续,他们也估计这套房子不是我的,进一步了解到是任彦申的。据他们说找到任彦申时他表示“忘了”,后来任彦申把房子交回给了学校,但又听说他对北大的做法不太满意。任彦申来北大时还住在清华大学东南小区,我曾经去过他家,是一套三居室的老式住房,为了方便他休息,就在红四楼给了他一间集体宿舍。当时北大的住房条件非常紧张,隔壁的一位青年教师虽然结了婚,还只能和别人合住一间宿舍,看到任彦申不常来,就向他提出可否将宿舍借给自己用。任彦申表示是学校给我的,不能随便给别人,据说是搞得不愉快,任彦申也不太愿意再去宿舍了。以后又给他换了中关园的一居室,确实是我去办的手续,还找人帮他打扫了房间。我当时也是和别人合住一间10平米左右的集体宿舍,对这套有厨房、卫生间的一居室十分羡慕,心里想着如果能给我一套就好了。不过等到北大资源宾馆盖好之后,任彦申大概也不需要中关园的房子了。
2011年秋天我才又一次见到任彦申。我听说是他提出想和原来北大办公室的人聚一聚,于是在北京市委组织部和新闻出版总署任职的前党办主任刘宇辉、副主任薛松岩安排了聚会,也通知我参加了。任彦申此前出了两本书,一本是《从清华园到未名湖》,一本是《后知后觉》,前一本我看过,后一本还没有看,我估计聚会时肯定要谈这两本书,正好同事那里有《后知后觉》,就赶紧拿来翻了一遍。果然聚会时一落座,刘宇辉就问我看了任书记的书没有,我只好表示两本书都看了,而且觉得后一本比前一本更好,思想更解放了一些,胆子更大了一些。任彦申也马上面露微笑。
其实我对任彦申这两本书的看法也不全是违心之论。这两本书的风格首先是比较平实、朴素,基本上都是自己的语言,没有什么官话套话,这一点在当今的领导干部群体中是非常难得的。不过我最佩服的还是任彦申在书中能够左右逢源,可以将不同的观点融为一体,从而达到表明自己立场的能力。例如任彦申在《从清华园到未名湖》中对社会思潮和学潮的看法,他一方面认为“应当尊重思想自由的价值,承认多元共生的权利,容忍异己声音的存在”,认为“学潮是青年学生关心国家大事、参与社会政治生活的一种群体行为,是他们表达自身政治诉求,维护自身权益、发泄对某些社会现象不满的一种有力武器”,对思想自由和青年学生的政治热情多有肯定;另一方面他又提出中国“必须有一个统一的指导思想、共同的社会目标以及为绝大多数人所接受的公共价值观”,认为1980年代的学潮“反映出的一个突出特点和政治倾向是‘全盘西化’的倾向,即资产阶级自由化的倾向……青年学生容易产生混乱和偏激”。任彦申这些从不同角度提出的看法,单独看起来都很有道理,但也令人有抽象肯定具体否定的感觉,最终的结论还是回到了“政治正确”的立场上。
任彦申这两本书更多的篇幅是在讲领导艺术、用人之道这些官场上的内容,是“官场人说官场事,局中人讲局中理”。比较而言,《后知后觉》确实写得更深入一些,对目前官场上的许多问题、弊端都把握得比较准,谈领导艺术、用人之道也很有些见地,不过总体上都没有超过传统政治经验的范畴。另外我也无法得出任彦申言论和行为完全相符的结论,例如他多次讲到领导干部要胸怀宽广、豁达大度,要能够宽容、包容,要听不同的意见。但是联想到他对解万英之死报道的态度,对韩毓海文章的恼怒,让人感到他虽然道理讲的不错,但实际上自己也是做不到的。
任彦申的两本书确实都有一定的价值,听说卖的都不错。书中涉及到不少热点问题,尤其是涉及到官场上的很多现象,任彦申并不像一些官方喉舌那样强调其天然合理性,用大道理压人,用大帽子吓人,而是比较充分地揭示了不少问题,确实有令人信服的地方。但他总的基调还是立足于维护现有体制,他对许多现象的分析是比较准确的,虽然也提到了一些制度因素,但并未就此深入下去,对许多问题、弊端产生的深层原因则语焉不详,基本上没有触及政治制度这个根本性的问题。其实如果从政治制度的层面进行分析,任彦申所提出的这些问题都不难进行更合理的解释,也不难提出更有效的解决办法,但他显然是有意不去触及这个层面。2013年任彦申又出版了新书《如何是好》,我专门买了一本,为他的新书销量做了一点贡献。这本书我感觉和前两本书有一些重复的地方,主要还是为官心得、领导艺术这些内容,总的看没有什么大的突破。当然也能看出任彦申对自己的政治经验是比较自负的,他这些年还是读了不少书的,书中对中国传统典籍,以及西方理论著述的运用显得更熟练了。
那天聚会的主题基本上就是两个:一是高度评价任彦申的两本书,另一个就是回顾任彦申对北大百年校庆的贡献。任彦申看上去精神很好、情绪很高,不断讲述他对北大百年校庆的谋划、举措,在座者无不表示叹服,我们还听他说他也是2011年清华大学百年校庆的总顾问。任彦申当时已经从江苏省委副书记位置上退下来了,还担任江苏省政协副主席,席间有人问他现在都忙些什么?任彦申和我们这些老部下在一起显得很放松,毫不避讳地说:“我现在就是吃喝玩乐”。我理解任彦申虽然是共产党的高级干部,但他对于官场上“假大空”的那一套也是很反感的,毕竟退居二线了,没有必要非去捧场。果然他表示说政协开会的时候不想去就不去了,不愿意听那些官话套话,经常的日程是出去吃饭、唱歌、旅游,说起到广西和陈章良吃了什么野味,平时唱歌时会有歌星作陪,并提到曲比阿乌的名字。饭后任彦申还有其他安排,但在大家的一致要求下还是唱了几首歌,果然字正腔圆、很有味道,比以前大有长进,我心里感慨有歌星陪着唱到底不一样。
任彦申在北大工作的时间不算很长,前后9年有余,担任党委书记5年半左右。不过在我看来,任彦申是上世纪90年代以后对北大影响最大、带来最多变化的领导人。我并不认为以前的北大是什么象牙之塔,不食人间烟火似的,但是任彦申主政前的北大,特别是在上世纪90年代以前,同体制或多或少还保持着一定的距离,多少还保留了一些传统。任彦申的看法则是“过去的北大总嫌过于自大、过于清高、过于图慕虚名了一些,在世人面前常常摆出一副与众不同的姿态、咄咄逼人的气势,为此吃了不少亏”。他并且有针对性地提出“今后的北大,必需摆正与社会的关系,不能总是以社会的指导者、旁观者、评论者的面目出现……而应当努力消除北大与社会的鸿沟,贴近社会……在与群众结合、为社会服务的过程中去展现自己的优势,在科教兴国中去实现自身的价值。”(以上引文均见于《从清华园到未名湖》一书)
这些话虽然是任彦申在书中总结的,但他在北大期间已经讲过不少此类观点,也确实是按照这种思路做的。我认为任彦申在北大的主要言行,都是力图要将北大改造得更符合体制需要,更迎合世俗,更具备工具性和可操作性,而保持着一定传统的北大在任彦申眼里则是“自大、清高、图虚名、会吃亏”的。但是任彦申在改造的过程中又加上了浓厚的个人色彩,他对上面的意图并不是简单地照本宣科、人云亦云,而是能以自己的理解,根据当时的形势和北大的实际状况,提出颇具说服力的言论和见解,从而使他的主张、做法在北大获得了相当大的支持。任彦申在北大一直是强调要“改革”的,认为“北大必须走改革之路,以改革求生存、促发展”,不过他“改革”的整体思路则是要使北大向体制化、官僚化、商业化方向不断靠拢。任彦申对北大的改造应该说是相当成功的,逐步将北大引导到符合体制需要、迎合世俗观念的道路上,后来的北大领导人不过是在任彦申的道路上越走越远,终于使北大彻底实现了向体制化、官僚化、商业化的转变。虽然北大的转变和上世纪90年代之后的社会形势密切相关,但是任彦申确实在这一过程中发挥了最为显著的作用。
任彦申在当今的官员群体中,可以说是不可多得的兼具口才、笔力、行政能力的一员干才,尽管他只是副部级官员,其综合能力却大大超出许多比他地位高很多的官员。大概在北大百年校庆之后,时任党委研究室主任的岳庆平及我们几位同事和任彦申吃饭,当然主要的话题无非就是不断捧任彦申。我那时候对任彦申还很佩服,就举了尼克松评价李光耀能力非常强,但是仅治理新加坡这个小国家是才未尽其用的例子,认为任彦申担任北大的党委书记未免可惜了,应该到更大的舞台上发挥作用。我当时倒不完全是有意捧任彦申,而是确实认为他有能力担任更重要的职务。其实在此前后,任彦申也多次向上面表达过希望换岗的想法,他的理由是干部在一个地方待久了并不好,往往待疲了,失去了创造的冲动。他可能会认为自己对北大的稳定、发展立下了汗马功劳,百年校庆更是将北大推到了一个高峰,恐怕也有些希望论功行赏,更上一层楼的想法。
其实从政治制度的角度看,以任彦申的综合能力,如果在一种主要凭本事、唯才是用的制度下,是完全可以如鱼得水,竞争到更高位置的。任彦申最高的职位不过是做到副部级,而能力远在他之下的闵维方、朱善璐都达到了这一级别,而且先后成为中央候补委员,朱善璐还担任过更有实权的南京市委书记一职。任彦申在他的新书《如何是好》中也感慨说“惟独从政做官,不能太有理想,很难给自己订一个具体的做官目标。因为做官最难把握个人命运,是一个前途最不确定的职业,你能不能做官,做多大的官,在哪儿做官,这一切都是个人难以预料的……做官除了靠本事,靠努力之外,还有一个运气问题。”任彦申的这些感慨实际上已经触及到了制度问题,他肯定也会在这种官员任用的体制下感受过不公,可以说他既是现有体制下的既得利益者,同时某种程度上也是这种体制内的失意者。但是任彦申肯定不会公开质疑中国的政治体制,更不会致力于改变这种体制,而是会根据现有体制的框架,做出最符合他自身利益的选择。
钱理群先生近来曾提出过一个观点,他认为:“我们的一些大学,包括北京大学,正在培养一些‘精致的利己主义者’,他们高智商,世俗,老到,善于表演,懂得配合,更善于利用体制达到自己的目的。这种人一旦掌握权力,比一般的贪官污吏危害更大。”我不知道钱理群先生是否有具体的所指,我也不是简单地认为任彦申就是这种人,但是他的一些做法却未免是开风气之先的。
 
 
叶丽宁
叶丽宁是1987年从北大法律系本科毕业的,被选留到党委研究室工作,她是东北人,家是吉林市的。刚开始同事的时候我感觉她还是比较本分的,也没有表现出很会来事的一面。叶丽宁上班后不久党委办公室、研究室被分配了一个去通州支教的名额,为期一年,当时那里的条件很艰苦,我自己也不愿意去,不知道是不是叶丽宁主动要求的,最后是派她去了。支教结束后叶丽宁又怀了孕,有一段时间为了保胎没有上班,她大学毕业不久就结婚了,丈夫是清华大学的,印象里是她的中学同学。叶丽宁还和我们说过大学期间她光顾着恋爱了,没顾上好好学习。
叶丽宁结婚的时候条件非常简陋,她在校内27楼和别人合住一间10平方米的宿舍,结婚时曾在宿舍请我们几个同事吃过饭。由于房间太小,只能在两张单人床中间摆一张桌子,我们侧着身子才能坐进去。当时北大的教职工,特别是青年教职工的住房条件普遍很差,我刚上班时是6个人住一间宿舍,感觉和上学时没多大区别,只是房间稍大一些,两年后才调整为3人一间。记得我们的月工资大概还不到100元,有一次叶丽宁花500元买了一个收录机,跟我说她兴奋的一晚上都在听。不过叶丽宁多少还是显示了一些不同之处,她和研究室、办公室的领导们关系都比较好,能主动为他们做一些私人方面的事情,甚至她的父母也会参与进来。
1989年政治风波期间,叶丽宁可能是快临产了,我印象中那段时间她基本上没有上班。政治风波之后我们经常进行政治学习和思想整顿,叶丽宁也参与了。当时正是我、金小鹏等青年人和一些老同志思想上分歧较大,正在受到批评教育,倍感压力,同时也是和赵亨利之间矛盾最尖锐的时期。虽然我们承认自己年轻,容易上当受骗,但对赵亨利借机整人的做法也很反感,经常有一些或明或暗的较量。叶丽宁毕竟是青年人,政治风波前后我觉得她思想倾向上和我们比较一致,应该会比较同情我们,但她的表现却让我大为吃惊。在一次会上,我、金小鹏、赵亨利等人都做了发言,而且有明显的对立情绪。叶丽宁也说了话,她没有针对我们,而是高度评价了赵亨利等办公室、研究室的领导,当她说到领导们对我们实在是太好了时,突然激动了起来,竟然泪流满面、哽咽失声了。我确实没有想到她会这样讲话,会场上的气氛一直很紧张,我和金小鹏等人正在饱受压力,她却说领导们对“我们”实在太好了,我们只能在吃惊之余哭笑不得。
叶丽宁确实没有指责我们,她只是适时地站到了赵亨利等人的阵营中,她的“效忠”姿态也得到了赵亨利的高度认可。虽然后来赵亨利并不满意叶丽宁离开研究室,另择高枝,但等叶丽宁成了北大的风云人物,赵亨利也颇为自得,并认为这个人才是他首先发现培养的。而且在叶丽宁离开资源集团但尚未受到通缉之前,我有一次见到赵亨利,他还很为叶丽宁担忧,说叶丽宁的事最后也没有个说法,她没有工作、没有工资。我只好说叶丽宁挣的钱恐怕几辈子都花不完,还用得着我们操心。
1992年任彦申提出拆掉北大南墙搞商业开发,为此成立了北大资源公司,后来发展为资源集团。此前叶丽宁曾和我说过呆在研究室没意思,想出去干点事情。我当时对前途十分迷茫,加之身患疾病,还对她泼冷水说有什么好干的,混日子罢了。但是叶丽宁有自己的打算,南街工程提出后,她主动要求去搞房地产开发。资源公司一成立,叶丽宁就担任了副总经理,从此开始了她在北大的风光岁月。几年之后,叶丽宁又当上了资源集团的总裁,更是成为了北大炙手可热的人物。从资源公司到资源集团,叶丽宁才算是如鱼得水,赵亨利对她的欣赏无关紧要了,她已经有了更深厚的背景和更广阔的舞台。记得南街资源楼建成不久,叶丽宁请我们几个以前的同事去吃饭、唱歌。我们正唱歌的时候,看到已经担任党委书记的任彦申也来了,他是来找叶丽宁的,要亲自修改资源公司的一份报告。资源公司是任彦申一手建立起来的,他对公司的事情经常亲力亲为,不过他以北大头号人物之尊专门来公司修改文稿,还是让我多少感到一点意外。
叶丽宁能够在资源公司平步青云,最主要的依靠无疑就是任彦申了。关于他们之间的关系坊间有很多说法,甚至说他们有特殊关系,邹恒甫微博事件中还坚持这种说法。对此我没有任何根据,不能妄加揣测。叶丽宁本人倒是没有什么姿色,刚到资源公司时穿着打扮还比较土气,有一次我看她穿着一条适合年轻女孩子穿的裙子,就开玩笑说她打扮的像个少女。不过随着经济实力的提高,后来我再见她时衣着高级了,脸部也明显修饰过了。虽然有关叶丽宁和任彦申的传闻有些捕风捉影,但是他们之间存在深层的利益关系,形成为一种牢固的利益共同体应该是不会有疑义的,可以说是一荣俱荣、一损俱损:叶丽宁会为任彦申安排许多他不便于出面的事情,提供许多正常途径不便于享受的待遇;任彦申则会完全信任、支持叶丽宁,就是她出了问题,任彦申也一定会全力施救,确保其共同利益不受到损害和追究。当然叶丽宁背后的靠山并非只有任彦申,以她这方面的能力,肯定和校内外多位权势人物都有比较密切的关系。任彦申调到江苏后不久,我就听说叶丽宁拜了许智宏为“*****”,是真是假、是正式还是非正式的我不敢确定。但是如果说叶丽宁和许智宏之间不存在任何利益关系,我同样也是不会相信的。
叶丽宁成了大红人之后我就很少再见过她,只是偶尔会听到一些关于她的传闻。大概在1990年代后期,有一位同事曾问我知道叶丽宁一年挣多少钱吗?我当时每月的工资最多1000元左右,就很大胆地估计她可能有几十万的年薪吧。但是这位同事告诉我叶丽宁的年薪是180万,而且只是固定收入。我尽管有一定的心理准备,还是不免为此感到吃惊。不过叶丽宁红火的日子没有持续太久,2005年之前她就因为卷入新疆某公司的事情被有关方面带走调查过,随即淡出了北大资源集团。在此前后我参加过一次学校的财务工作会议,听财务部门负责人说其实资源集团并没有给北大上缴多少钱,但是用北大的名义贷了不少款。后来我又听一位曾在北大工作的人说叶丽宁发奖金,有一次就给自己发了300万,这些钱实际上是贷款来的。对有关她的这些传闻我无法一一证实,但恐怕也是无风不起浪的。到了2010年,因涉嫌私分国有资产,叶丽宁和资源集团其他几个人被海淀检察院立案侦查,检方初步核实涉案金额为2000余万元。不过此前叶丽宁已跑到了国外,司法机关进行了网上通缉。
以我作为同事的眼光,我觉得叶丽宁是一位比较普通的女人,她既没有出众的相貌,也没有过人的才能。以前北大党委机关选人的标准是比较传统的,就是有些风情、时尚的女性都不在考虑之列。叶丽宁应该是比较传统的女人,除了和领导的关系密切一些之外,她在党委研究室期间并没有任何突出表现。如果她一直在党委机关工作,估计至少能做到处级干部的位置,在家里可能是一位普通的家庭主妇,日子会过的平平安安,不会大富大贵,但起码是富足的。同她后来坐拥巨资、有多处房产、但是又不得不逃亡国外的生活相比,那个住在集体宿舍,买一台500元的收录机就很满足的叶丽宁或许幸福感还更强一些。当然叶丽宁是不满足于普通生活的,她有一种要一心向上、出人头地的欲望,这种欲望虽然使她红极一时,但终于又归于沉寂,而且是有国不能归,有家不能回。
不过话说回来,叶丽宁无论是成为风光无限的女总裁还是成为了通缉对象,其根本原因都在于北大的校办产业管理体制。北大的校办产业始于1980年代,在当时办学经费非常紧张的情况下,通过创办校办产业增加一些收入,补充办学经费的不足,确实有一定的合理性。到了任彦申时期,北大的校办产业进入了鼎盛期,甚至将其作为办学方向上的重大突破,一时间似乎校办产业就可以为北大提供丰厚的资金来源。比资源集团影响大得多的方正集团,更是夸口说以后国家给北大多少投入方正就给多少。但是任彦申离开北大后不久,我听当时主管财务的常务副校长闵维方在办公楼礼堂介绍北大的财务状况,他通报说之前5年北大的资金收入总共是30多个亿,其中校办产业上缴了1个多亿。我当场估算了一下,占北大这5年总收入的3%多一些。我不免十分失望,北大的校办产业名气那么大,销售收入那么多,对学校的回报却极为有限,还占用了学校的不少资源,真可谓是“枉担了虚名”。以后我没有再听到这方面的具体数据,但是校办产业在北大的总收入中所占份额一直不高则是确定无疑的。
虽然校办产业给北大的回报十分有限,但却并不妨碍公司高级管理阶层获得高额的收入,叶丽宁就是其中突出的例子。不过更大的问题还在于校办公司和北大的产权关系并不明晰,给北大上缴不上缴?上缴多少?并没有明确的规则,往往由公司和校方私底下讨价还价,这样就存在很大的运作空间。虽然公司给北大上缴的不多,但是他们却会和校方的权力人物建立密切的关系,公司有独立的财务,掌握着巨额的资金和大量的资源。在学校正常的体制下,某些权力人物在资金的使用,资源的获取,个人的享受方面毕竟会受到一些限制,而这些校办公司都可以充分提供,甚至还可以为某些权力人物的子女、亲属提供安排和帮助。
1990年代中期手机还比较罕见,党委办公室曾经有两部数字模拟手机,我一度使用过其中一部,但我不知道手机费是谁交的,后来才知道是方正公司出的钱。手机费不过是小意思,我知道任彦申、吴树青都做过方正公司的董事,公司也发给过他们董事费,当然任彦申、吴树青没有拿这笔钱,而是用于了某项奖励或基金。但是我不敢确定这么多年下来,校办公司和某些校领导之间没有形成其他的利益关系。我偶尔就听到某某领导被某某公司“搞定了”的说法,这种“搞定”的含义外人虽不清楚,但当事人都会心知肚明。在北大的某些权力人物和校办公司之间,已经形成了多种利益共同体,叶丽宁和任彦申不过是其中比较突出的一对。校办产业尽管对北大贡献不多,但确实让一部分人富起来了,也让一部分人享受起来了。
叶丽宁虽然倒台了,但是北大校方和校办产业之间错综复杂的利益关系依然存在,学校和公司之间依然没有权利义务方面的明确规则。叶丽宁这些上世纪八、九十年代校办公司的经营者毕竟还是北大的人,他们可能多少还会考虑北大的利益。但是据我了解,目前北大校办公司管理阶层的组成人员更加复杂,利益诉求更加多样。对于北大的校办产业而言,产生叶丽宁的土壤依然存在而且更加肥沃,叶丽宁应该不会是最后一个被通缉的北大校办产业负责人。
赵存生 赵亨利
1985年我刚到党委办公室时,赵存生和赵亨利都是党委研究室的副主任。研究室的工作主要是负责起草校党委的各种报告、文件,主任由俄语系教授陆嘉玉兼任,他一方面要搞业务,另外还在做落实政策方面的工作,不常来研究室。日常工作是由赵存生、赵亨利两人负责的,王学珍经常称他们为“研究室二赵”。“二赵”是当时党委主要的笔杆子,他们年龄相近,工作性质类似,为方便起见,我将两人的事情放在一起写。
赵存生是沈阳人,说话有明显的东北口音,赵亨利也在东北工作过。因为都在办公楼201上班,我和“二赵”平时接触的机会比较多。在我的印象中,赵存生思想上显得保守、正统一些,为人也比较老实、厚道,性格似乎还有些懦弱,讨论问题时如果别人反驳了他的看法,他一般就不再说话了,不过也不会对人有什么芥蒂;赵亨利头两年给我的印象则是思想上比较开明,言论比较大胆开放,经常在讨论问题时发表批评性意见。
大约在1987年,赵存生、赵亨利都得到了提拔,赵存生升任为党委研究室主任,赵亨利则当了党委办公室主任并兼任研究室副主任。渐渐地两个人的差别开始体现出来了:赵存生还是整天起草各种报告、文件,待人处事方面也没有感觉到明显的变化;赵亨利虽然当了党办主任,但办公室的事务主要是由老资格的副主任李宝珍管,他基本上还是做研究室文字方面的工作,但毕竟身份不同了,感觉上不像之前那么随和了,有些如鲁迅说的“一阔脸就变”,时不时会摆出点领导的架子来。
印象中我和赵亨利之间倒没有什么直接的矛盾,无非是偶尔板起面孔说我几句,不过研究室的金小鹏则开始和赵亨利发生了冲突。金小鹏比我早一年到校党委工作,他虽然只高我一级,但年龄比我大五六岁,他当过兵、参加过工作,有一定社会阅历,又喜欢读书,讨论各种问题时往往很有见地。赵亨利和金小鹏的关系以前是比较融洽的,赵亨利对金小鹏很欣赏,认为他很有思想,还让我要好好向他学习;金小鹏对赵亨利也心存感激,金小鹏的妻子在外地,他寒暑假探亲时往往晚一些回来,赵存生、赵亨利也都比较宽容。赵亨利刚当上党办主任时,金小鹏还和我说过你们有了一个好主任的话,不过随着赵亨利地位的上升,二人之间的关系开始出现了一些变化。
我认为直接的原因是金小鹏那时候毕竟年轻气盛,思想又比较激进,赵亨利则身份有了变化,讨论问题时不像以前那样放的开了。金小鹏见解比较高,能言善辩,赵亨利争论不过他,感到伤了面子。研究室的工作本来不需要严格坐班,赵亨利有时候就在家里写材料,不过金小鹏确实也有些散漫,经常上班时来的比较晚。同以前可以让金小鹏探亲晚归不同,赵亨利在一次会上十分严肃地强调要遵守劳动纪律,当然主要是针对金小鹏的,于是金小鹏也只好一大早就来了。假期里办公室和研究室的人是一起排值班的,大概就在他们出现矛盾那一年的暑假,本来已经排定好了值班人员,金小鹏却因为祖父病重赶回江苏老家,没有参加值班,后来赵亨利甚至对金小鹏说他祖父的事是编造的。到了下一个假期排班时,我听到赵亨利有些故意地说:排班时要找靠得住的,别到时候谁的爷爷又死了。赵存生则要厚道些,没有说什么话。
1988年北大迎来了90周年校庆,确定5月4日当天在大讲堂举行庆祝大会,虽然总体规模不能和后来的百年校庆相比,但也是相当隆重了。事先我们得知政治局委员、国务委员、国家教委主任李铁映要在校庆大会上发表一个讲话,讲话稿由北大提供。于是赵亨利让办公室、研究室的几个年轻人分别起草一篇李铁映的讲话稿。我也认真地进行了思考,以我当时的认识水平,提出北大应该在国家发展中起到思想库、智囊团的作用。赵亨利看了以后态度挺好,笑着说领导上这样讲可能不太合适,然后把他起草的稿子也让我看了。我看他写的基本上都是一些套话,诸如“教育要面向现代化、面向世界、面向未来”之类放之四海而皆准的话。我有些不以为然,但是也不好说什么。
5月4日当天庆祝大会的规格不低,由中共中央政治局常委、书记处书记胡启立领衔出席,其他到会的还有北京市长陈希同,以及费孝通、雷洁琼、王汉斌、周培源等多位全国人大常委会副委员长和全国政协副主席,其他领导、各界名流更是济济一堂。庆祝大会气氛很热烈,但是李铁映讲话时却出了问题。李铁映用的就是赵亨利起草的稿子,当年的北大学生是不大给领导、名人们面子的,他们没耐心听那些正确的废话。于是李铁映讲话时全场嘘声不断,搞得他很是下不来台,后来一直都对北大耿耿于怀。当然出现这种情况也不能说是赵亨利的责任,即使李铁映的讲话是别人起草的或是他亲自写的,估计基本上也还是那些内容。
赵亨利号称是北大的笔杆子,校党委许多重要文稿都出自他的手笔,他本人也颇有些自负,认为自己虽然是学理科出身的,但人文方面也很强。任彦申曾说过他刚来时领导们讨论文稿,感觉赵亨利对他说话很不客气,后来发现任彦申很会写文章,态度才变得好起来。不过赵亨利的文章在我看来和他本人有些类似,干巴巴的,可以说是既无思想又无文采。到了1998年北大百年校庆,虽然赵亨利早已去了出版社,陈佳洱校庆大会上的讲话还是找他起草的。这篇讲话除了罗列了一些官方口径的北大历史之外,就是表达了几个决心,没有提出任何有思想、有深度的见解。我听了之后感到内容实在干瘪,同百年校庆这样重大的场合实在太不相称。任彦申大概心思不在这里,也不好干预陈佳洱的讲话内容,事后他也说一听就知道是赵亨利的口气,对这篇讲话很不满意。过了若干年,我在一个偶然的场合里听见赵亨利的夫人对人说,(陈校长讲话)谁写的都不行,后来陈校长找了我们家老赵才写好的。
不过赵存生、尤其是赵亨利给我的主要印象还是在1989年政治风波期间形成的。赵存生一向是谨小慎微的,比较听话,对上面的决策历来是拥护的,他或许也有一些个人的想法,但不会明显地表露出来,政治风波期间没有什么特别突出的言行;赵亨利则不同,最初我以为他的思想比较开明,但是随着地位的变化,以及和金小鹏之间逐渐产生的矛盾,开始有意识地表现出对官方立场的维护。政治风波开始之后,由于相当一段时期内形势十分复杂,上面的态度也不明确,办公室的人,甚至包括几位党委领导在内,都会或多或少表达一些看法和忧虑。但是令人印象深刻的是赵亨利始终一言不发,不过到了《人民日报》4·26社论发表之后,赵亨利却马上表示坚决拥护,而且口气很坚决、态度很强硬。但是在之后一段形势不明朗的时候,赵亨利又开始一言不发,持续到宣布戒严,随后又是闭口不言。总之政治风波期间赵亨利要么不发一言,要么就是强硬发言,发言或不发言都取决于形势是否明朗化。
不过赵亨利最令我刻苦铭心的言论还是在政治风波之后。对于最后的流血结局,我想这也是包括决策者在内任何一方都不愿意看到的。但是赵亨利则不然,他曾以非常轻巧的口气说:出了这么大的事情,才打死三百多人,这不多嘛。我当时在场,听了他的话确实直觉得后背发冷。鲁迅针对三一八事件曾说过有一些评论是可以比刀枪更可以惊心动魄的,我以前不明白,但是赵亨利的话确实让我有惊心动魄的感觉,由此我才开始对鲁迅有了一点略微深入的理解。
政治风波之后党委办公室、研究室的情况也比较微妙。我们几位年轻人政治风波期间虽然没有什么具体的行为,但或多或少都表现出一些思想上的倾向,党委领导和单位的老同事一般都比较理解。但是和之前的沉默形成鲜明对比,此时的赵亨利则非常强硬,调子很高,大有将异己彻查到底的势头。首当其冲的是金小鹏,其实金小鹏政治风波之前就不被信任了,那段时间基本上没有上班,自然也没有多少被抓住不放的言行。但由于之前积累的矛盾和金小鹏的一贯立场,他被认为不适合在党委机关工作,要求他离职。这个决定主要应该是赵亨利提出的,当然赵存生也不会反对。在一次小范围会议上赵亨利对金小鹏进行了尖锐指责,赵存生的态度则要温和一些。我当时也受到不少压力,不好多说话。倒是在二赵眼里一向比较本分的研究室的另一位年轻同事刘乐坚,虽然平时不多说话,这时候却为金小鹏讲了不少公道话,令人大为佩服,当然刘乐坚随即就得到了被二赵谈话的待遇。迫于当时的形势,金小鹏也做了自我检讨,勉强通过了党员重新登记,不过他最后还是离开了党委研究室。那段时间我看到赵亨利咄咄逼人的态度,为求自保,就在一次支部会上夸赞一些老同志一贯立场坚定、旗帜鲜明,不像有的人一看形势不明朗就一言不发。那次会上赵亨利不在场,但我是有意针对他说的。
虽然赵亨利政治风波之后表现得很积极,态度很强硬,但他就像风波期间一些调门很高的人一样,并没有捞到什么实际的好处。风波之前就风闻他要被安排到更重要的位置上去,风波之后反而原地不动了。大概在1990年代初期,王学珍、赵亨利联名发表了一篇《继承和发扬北京大学的光荣革命传统》的文章,我印象是发表在《人民日报》上的,以官方需要的口径重新解释了北大的传统。文章主要应该是赵亨利起草的,大概是“亨利”这两个字太西化,和文章的主旨不符,发表时用的是“赵恒力”的名字。中央广播电台、电视台等官方媒体都宣传了文章的观点,赵亨利那段时间自然也颇为得意。
1990年底我患了慢性疾病,其后的几年身体状况一直较差,但基本上还能坚持工作,只是1993年下半年后病情有所发展,曾回西安家中休养了半年。1994年春节后我感觉身体有所好转,从西安回来准备上班。当时我只有30岁出头,虽然病情不稳定,迁延难治,但还不到完全不能工作的程度,我也不想这么年轻就长期休病假。赵亨利和我谈了话,其间一直板着脸,态度冷若冰霜,让我要么继续治病,要么像正常人一样上班,说话时根本不抬眼看人。我当时可能是因为久病不愈,心理比较脆弱,谈话过程中感到眼泪快要夺眶而出了,强忍着不能在他这种人面前流泪。后来算是开恩让我上班了。
大概到了1995年左右,赵亨利被安排到北大出版社担任总编辑,我终于结束了和他长达十年的同事关系。前些年我有一次和出版社前总编苏志中闲聊,苏志中说赵亨利接替他时,他告诉赵亨利多抓抓出版社的事,不要多往国外跑,结果他一年之内就出了四次国。我知道赵亨利是爱显摆的人,好容易有了这个位置和机会,他怎么可能放过呢?赵亨利虽然当上了总编,但毕竟年纪不小了,在出版社干了没几年就年龄到线卸任了。我和赵亨利共事期间实在是领教够了他的为人,不过以前我们每年元旦时要在办公室搞一次新年聚餐,有条件的同事每人会做一个拿手菜带到办公室。赵亨利的东北大拉皮做的确实不错,荤素搭配、爽口不腻,每次都被大家吃的精光。以后我虽然在东北或其他地方多次吃过大拉皮,但还没有吃到比赵亨利做的更好的。
赵存生在1990年代初期兼任了新成立的北大马克思主义学院党委书记,当初调他兼任这个职务时,听说他为此琢磨了很久,他是个比较内向的人,有些患得患失。到了1994年北大召开第九次党代会时,令我们没有想到的是赵存生担任了校党委副书记,主管宣传工作。赵存生个性比较软弱,属于那种给他权力也不知道怎么用的领导,在下属面前也没有多少威严。虽然他当上了副书记,但平时出头露面的时候并不很多,经常是在办公室里看书、看文件,有一两次还借过我的书在办公室看。往往是其他领导都忙不过来时,有些活动才请他出面圆场。不过赵存生为人确实比较和善,在副书记的任上也中规中矩,没有多少特别值得一提的事情。
赵存生对我虽然没有特别的关照,但也还说得过去。大概在1990年代中后期,听说赵存生也提出过对我的职务安排问题,不过他毕竟比较软,不能坚持自己的意见,一旦其他人说一句否定的话,他也就没有其他话了。1999年底我离开了办公楼去了统战部,赵存生当时也分管统战工作,经常会参加统战方面的活动。2001年我开始在北大校报上写专栏评论,校报的清样要经过赵存生审批,第一篇文章见报时他还亲自给我修改了题目,此后我写的内容他都能顺利放行。只是2003年春天闵维方、张维迎搞所谓人事聘任制度改革,我写了一篇《“改革”杂谈》的评论,虽然没有直接针对北大的事情,但对一些打着“改革”旗号,实则损害人民群众利益的举措多有批评和讽刺。赵存生审查后没有批准,以他一贯谨慎小心的性格,不同意发表这篇文章也是完全可以理解的。
2003年北大第十次党代会后赵存生离开了党委副书记的岗位,此后他主要的工作是在马克思主义学院,还担任邓小平理论研究中心的主任,我也很少能见到他。赵存生卸任后那几年写了不少长篇文章,不过他的文章我看的不多,总的感觉是比较规范,四平八稳,以意识形态方面的内容为主。赵存生确实是非常勤奋的,在他查出绝症前不久还发表了一篇就汶川地震而写的关于民族精神的一万多字的长文。他应该也是比较清廉的,除了他以政工干部出身在马克思主义学院当上了博导,难免有领导职务的作用之外,其他方面应该没有为自己谋取多少利益,他也不擅长搞权力运作那一套。大概就在他去世的一两年前,我有一天晚上还在公共汽车上看到他和老伴一起乘车回家。到了2008年快放暑假时,我忽然听说赵存生患了癌症,此时我已定好了去海南探亲的行程,没有顾上前去探望。不想假期在海南时就知道了他去世的消息,只好委托其他人在他的遗体告别仪式上代我签了一个名,多少表达一点悼念之意。
我和赵存生、赵亨利都有过多年共事的经历,也一起经历过一些重大的事件。总体而言,他们两人虽然是搞政策研究的,都写过不少文章,但基本上没有多少自己的思想、观点。相形之下,赵存生更显得保守、正统一些,不过前后比较一致,而且他性格比较温和,为人处事不失宽厚之处,也没有刻意的整人害人之心。赵亨利则不同,他虽然曾表现出比较开明、开放的一面,只是由于职务的上升和个人的恩怨,特别是在政治形势发生重大变化的情况下,刻意地在观点、立场上迅速做出转变。不过他的变化过于明显、生硬,还要挟嫌报复、借机整人,只能令人反感。好在中国人经历过太多的政治运动,对此类行为早就见怪不怪了,况且社会毕竟是发展进步了,赵亨利的那一套做法已经没有多大市场了。
 
 
陈佳洱
 
我到办公楼上班的时候,陈佳洱已经是北大的副校长了,虽然时常在办公楼遇到他,但我好像从来没有和他说过话。说起来有些好笑,我第一次对陈佳洱有比较清晰的印象是在浴室里,那时候大部分北大老师家里都没有洗浴设备,需要洗澡了就到位于燕南园西南角的公共浴室去洗。虽然分设了学生和教师的洗浴间,但全校几万人只有这么一处浴室,排队洗澡的人太多,师生们往往也就不分彼此了。浴室里面则多半挤得像沙丁鱼罐头一样,洗澡的人大大多于喷头,一般只能先冲一会,然后在一旁搓泥、打香皂,再去等喷头,经常有人长时间占着喷头。有一次我洗澡时就碰见了陈佳洱,我几次看见他稍事冲洗,就主动离开喷头示意旁边的人先用,大家在一片水蒸汽中裸裎相见,估计也没有人注意这位身材瘦小的副校长。在办公楼有时也听人议论起陈佳洱,大都是说陈佳洱是个好人,比较随和,但是原则性差一些,例如说某件事情他本来是不同意的,但报告传到他这里,他看到其他领导签字同意了,他也马上就签了。
虽然陈佳洱一直担任着副校长,但他后来又兼任了国家自然科学基金委的副主任,主要工作在基金委,在办公楼看见他的时候就比较少了。到了1996年,因吴树青校长提出他应该卸任了,上面明确新校长从北大内部产生,于是中央组织部、教育部、北京市委等部门组成了一个联合考察组,到北大对新校长的人选进行调查摸底。因为考察组要在北大住一段时间,我被校方派作考察组联络人员,陪他们住在勺园,负责安排他们的食宿及部分联络工作。这次考察活动参与范围很广,进行个别谈话的有100多人,另外还在400人左右的范围内进行了投票推举,当然参加谈话、投票的主要都是学校的各级干部。对于谁将成为北大的新校长,并没有一位众望所归的人选,我和党办、校办、组织部其他一些为考察组服务的同事,也都判断不出谁的呼声最高。不记得是哪个人提议的,我们每人在一张纸条上写上自己预测的校长人选,一起放到一个信封里密封起来,约定等新校长宣布后,再打开看有谁猜对了,由猜错的人请猜对的人吃饭。后来我们约在勺园打开了信封,结果居然没有一个人写的是陈佳洱,于是只好按AA制的方式聚了一次餐。
这次校长人选考察是我知道的迄今为止时间最长、程序最多、参与范围最广的,我们这些联络人员虽然无法知道考察结果,但多少能判断出几个呼声较高的人选,结果却无一中的。考察组所有的谈话、调查结果都是秘而不宣的。根据我的观察,虽然新校长人选会比较分散,但陈佳洱那几年的工作主要在基金委,在北大的时候不多,他不大会是得票最多的,据我所知他也不是任彦申属意的校长人选。可能的情况是上面已经确定了校长人选,所谓的谈话、投票只是在走程序,尽管为了这些程序需要付出不小的人力、物力、财力。另外那段时间我一直跟着考察组,为他们联络服务,自认为没有什么明显不当,后来却有人跟我说考察组的人对我很不满意。我开始不太理解,不过又深入地想了想才释然了:这些考察组的人所到之处如同钦差大臣,服务人员无不跑前跑后、点头哈腰地伺候着。我没有意识到这一点,只是客客气气地招呼,做的肯定没有别的地方那样到位,当然让考察组的人很不满意。
宣布校长任免的干部大会上还发生了一个小插曲,当几位上级领导及吴树青、陈佳洱等人在主席台就坐后,主持会议的党委书记任彦申宣布会议议程,说明由前任校长吴树青讲话后,再由新任校长陈佳洱讲话。虽然大家都知道了陈佳洱是新任校长,但任命决定还需要由在场的上级领导正式宣布,任彦申提前就把新校长的名字说出来了,引起台下一片嘈杂。陈佳洱的讲话我没有什么印象了,只记得他说要时刻牢记“北京大学校长”这六个大字的分量和责任,用“六个大字”的提法形容北京大学校长,似乎只有陈佳洱做过如此表述。
陈佳洱上任后我曾为《今日名流》(后来被停刊)杂志写过一篇他的专访。《今日名流》对北大的新校长也很关注,早在新校长上任前就和我约了稿。陈佳洱同意了采访,但又说他时间有限,让我趁他有空时再谈,后来他分两次对我谈了他的主要经历、想法。稿子后来发了,主要是介绍了北大新校长的产生过程,陈佳洱的个人经历,以及他任北大校长后所面临的形势。此类文章基本上都是正面宣传的,所写的大都类似于一些先进事迹介绍,没有多少实际价值。
我除了写专访找过陈佳洱之外,直接见到他的机会也很少,不过曾为他写过一些讲话稿,例如开学、毕业典礼上的校长讲话之类,这类讲话不需要校长具体指导,我只需起草好交给校办就行。但有一次我要为陈佳洱起草一篇关于科研问题的讲话稿,这类讲话不宜只说些一般性的套话,我只好去他的办公室听听他的想法。陈佳洱似乎并没有什么明确的思路,我记得他说了“基础研究很重要”的话,此外没说其他问题。基础研究确实很重要,不过我觉得陈佳洱作为北大校长,作为一位核物理学家,他对于基础研究的重要性应该有一些独到的认识,我需要知道他的想法才好去起草这篇讲话稿。作为一位没有从事过科学研究的行政工作人员,我对于基础研究的重要性不会有什么体会。陈佳洱也许是觉得“基础研究很重要”是一个基本命题,不需要具体解释,或者是他虽然认识到了,但不能从理论上很好地阐述。总之我一无所获,只好根据报刊上一些一般性的提法起草了讲话稿,我自己完全不记得写了些什么,也不知道陈佳洱后来用了没有。
陈佳洱虽然在理论上和行政能力上都没有突出之处,但他身为北大校长却没有什么架子,平时总是骑着一辆自行车上下班。1998年我住进了畅春园由筒子楼改建的一套一居室住房,陈佳洱就住在旁边的楼里,也不过是一套70平米的老式三居室。北大西门对面的蔚秀园是我们上下班的必经之处,蔚秀园门口有自行车修理摊,有时我会看到陈佳洱拿着打气筒撅着屁股给自行车打气,他本来就身材瘦小,年纪又大了,打起气来比较吃力。有时候也在办公楼门口看见他打气,不过好在会有人过来帮忙。比起现在办公楼前北大的领导们出行时前呼后拥,一律从奥迪车上进出的场景,陈佳洱撅着屁股打气的形象实在令人有恍如隔世之感。
在北大很多人的印象中,陈佳洱确实是个老好人,他任校长期间的党委书记是任彦申。陈佳洱在政治上、行政能力上完全不是任彦申的对手,于是北大的大政方针明显都是由任彦申主导的。陈佳洱任职期间赶上了北大的百年校庆,但有关百年校庆的一系列策划、活动主要都是由任彦申决定的,我曾听同事说在安排校庆活动最繁忙的时候,还看到陈佳洱有空看专业方面的资料。当然对于北大百年校庆的规格陈佳洱也是乐见其成的,于是我们就在庆祝大会上看到了紧跟在最高领导人身边,只是笑的合不拢嘴的陈佳洱。在如此重大、百年一遇的场合里,陈佳洱作为校长的讲话也毫无出彩之处,只是流水账似的罗列了一些北大的历史和所谓的成就。
我对陈佳洱在科学研究上的成就和影响没有任何发言权,他应该是一位不错的学者,不过作为北大校长的陈佳洱显然有些力不从心,他在思想政治、教育理念、行政管理等方面的思路或做法都乏善可陈。我曾听人说过以前陈佳洱在系里当教研室主任时,教研室里有了矛盾、问题,陈佳洱还要回家问妻子该怎么处理。如果这个说法属实,实在难以设想他是怎么应对如此庞大、复杂的北大的。有一次我偶然参加了学校的办公会议,会上正在讨论北大和北医的合并,讨论到合并后领导班子的安排问题时,我看见陈佳洱满面笑容地说:(合并之后)校长也可以让他们当嘛。虽然他说话的语气并不正式,不过也能感觉到他这个校长当的并不如意,让给别人未尝不是一种解脱的心态。1999年北大搞所谓机构改革,取消了秘书长、教务长、总务长,据说时任秘书长找陈佳洱抱怨,陈佳洱竟然不知道秘书长的职位已经取消了,他这个校长的权威由此可见一斑。陈佳洱做北大校长可能是上面安排的,未必完全是他本人的愿望,他不失为一个好人,但把他放到北大校长的位置上,以他的性格和能力,显然不足以胜任。陈佳洱仅任职三年多,还没有任期届满,就调任为国家自然科学基金委主任,他似乎也是比较愉快地离开了北大校长的岗位。
作为构成北大主体的师生员工,我们从来都没有选择校长或其他任何一位校级领导人的权力,虽然上面有时候也搞一点民意调查,但往往只是走一种形式,我们只能被动地迎接一位又一位校长、副校长,书记、副书记。以前官场上风气还比较正,权力部门做事相对比较规范,还能选拔出丁石孙这样形象、能力都很优秀的校长。陈佳洱虽然不见得有多少民意基础,他在校长的位置上也不能令人满意,但起码还是一位比较正派、朴实的校长,还有一些值得称道的地方。如果不能在学校领导人的选拔任用机制方面有大的改变,那么北大人或许就会不断有一种“一蟹不如一蟹”的感觉,从而使北大校长这个本应该受到高度尊重的身份越来越令人失望。
何芳川
大约在1990年代初期,我在党委办公室不时会见到一位个子比较高、头发比较白而稀疏的人,后来我知道他是历史系主任何芳川。何芳川找郝斌的时候比较多,郝斌是历史系出身的。后来我和何芳川也熟悉了,他进来后看到我,有时会来一个九十度的鞠躬并大声说:谢老师好!何芳川当时应该有五十几岁了,又是教授、系主任,我只是个30岁左右的小秘书,受他如此大礼,实在是有些不知所措。不过我没有多想,以为这只是他的一种风格。后来何芳川当了副校长,在办公楼见到他的机会更多了,他对人还是很热情,但似乎不再行鞠躬礼了。
1998年北大百年校庆前,在湖北主编《今日名流》杂志的同学曾楚风找到我,他们准备出一期北大百年校庆的纪念专刊,要组织一批文章。他们听说何芳川的父亲何兹全老先生,何芳川本人以及他的女儿祖孙三代都是北大历史系毕业的,觉得很有新闻价值,想请何芳川就此写一篇文章。我到何芳川的办公室向他说了这个意思,他还是一如既往地热情,当即表示同意,并强调说自己是很会写文章的,但也说了他时间很紧张、非常忙的话。此前我知道何芳川曾是梁效班子的成员,对梁效的评价是另一回事,其班子成员都是写文章的高手应该是没有异议的。过了一段时间,何芳川把写好的文章交给了我。何家祖孙三代都毕业于北大的经历,无论从历史、家庭的变迁还是从个人的感悟上,应该都是可以深入挖掘的。但何芳川交给我的文章只有一千余字,题目我记不清了,我看了一下,觉得没有什么特别之处,主要是介绍了何兹全老先生的经历,对他本人的事情说的很少,对女儿则只在最后提了一句,基本上就是一篇何兹全老先生的生平介绍。我不免感到有些失望,只好将文章交给曾楚风了事。
何芳川任副校长时主管文科,我听有的同事说他喜欢在各种会议上夸夸其谈,我没有资格参加这些会议,自然无从置评。不过有一段时间我听说北大要搞一项“盛唐工程”,大概是研究唐代历史、文化的一个项目,我估计这个项目可能是何芳川的主张。其间我偶然参加过一次有关“盛唐工程”的会议,何芳川在会上大讲“盛唐工程”的意义,还说“美国朝野”都非常重视。我不禁有些纳闷,美国“在朝”的人知道中国唐朝的或许还有,“在野”的除了少数研究中国历史的专家之外,恐怕是没多少人知道中国还有一个唐朝的,不明白何来“美国朝野”重视之说。但是何芳川讲话时情绪很激动、态度很严肃,似乎是不容置疑的。何芳川此前曾提出北大文科要“开大船”的思路,就是文科要集中力量,争取一些大的研究项目,出一些重量级成果,“盛唐工程”大约正是这一指导思想的产物。但我还是不明白“开大船”和文科研究水平的提高有什么必然关系。
又过了几年,何芳川不再担任副校长了,但还担任多种职务,是北大校园里非常活跃、忙碌的一个人,一直到2006年去世。何芳川去世后吴志攀写文章怀念,对他没有当上文科资深教授深表惋惜(文科资深教授为北大设立的人文社会学科的最高学术职位,待遇上相当于理科的中科院院士)。我对何芳川的学术研究没有任何了解,但我知道北大的文史哲诸系毕竟都有深厚的学术传统,学术水平高的大有人在。历史系的文科资深教授只有一两位,何芳川即使不担任行政职务,专心于学术研究,也未必就能排的上。不过在北大早就成型的“官本位”体制下,利用职权谋取学术地位实在是司空见惯的事情,好在我还没有听到过何芳川争当文科资深教授的传闻。
在北大许多人的眼里,何芳川都是一个非常热情、风趣的人,他可以和车队的司机们勾肩搭背、称兄道弟,司机们叫他“何大哥”,历史系学生则亲热地叫他“何爷爷”。但我总感觉他和官场上的人似乎更亲近些,例如他可以称党委副书记岳素兰为“素兰书记”,称时任校长助理的吴志攀为“小老弟”,诸如此类。在学校的会议上要发言时他会向许智宏说“芳川有本上奏”,说到激动处则“声音哽咽、眼里留出泪水”(见吴志攀纪念文章)。百年校庆之前,我听任彦申讲他很赞许何芳川的说法:北大出现了非常祥瑞的气氛,非常向上的势头。这些话当然是任彦申喜欢听的。同何芳川平时给人热情、温和的印象不同,我听他讲话时往往感觉他很严肃,有时甚至声色俱厉;虽然他见到我这类人时还是很热情,但好像也不难从他的眼神里看出一种漠然。
有一次我在勺园餐厅遇到何芳川,我看见他一边吃红薯一边劝我们要多吃粗粮,说他父母就是这样的。我知道何老先生夫妇当时都九十多岁了,我以为何芳川有家庭的长寿基因,又这么注意养生,应该也是会长寿的。不想此后没过多久,却突然听说他患了白血病,从发病到去世前后只有一月多,以67岁的年纪死在了父母前面。何芳川也许是太忙了、太累了,他不担任副校长之后,仍然有一些显赫的职务,经常要在各种场合出头露面,有人曾议论说何芳川虽然退下来了,但把自己的退路都安排的好好的。另外以我的私心揣测,何芳川虽然对所有人都很热情,但有时候也许是刻意做出来的,是他的一种处世策略,尽管能博得人们的好感,但也难免有些过、有些累心,可能在一定程度上影响到他的健康。另外我还有一种经验:往往越是职务高、权力大的人,面对绝症时心理承受力越差,更容易出现崩溃,可能是他们要失去的东西太多。我没有见过最后时刻的何芳川,无从了解他当时的心态,我所写的仅仅是和他有限接触中的一点印象,不能代表他的整体形象。如果我的看法中有冒犯和唐突的地方,还请何先生的在天之灵能够谅解。
许智宏
 
许智宏是1999年底接替陈佳洱出任北大校长的。同陈佳洱上任前进行过大范围的考察不同,许智宏的任命没有那么麻烦,我们只是有所风闻,然后就看到他直接上任了。按说陈佳洱当校长只有3年多,不应该这么快离任,不过这些事情不是我们能过问的。对许智宏的背景我没有什么了解,只听说他是北大生物系毕业的,曾长期在中科院上海植物生理研究所工作,来北大前是中科院副院长、院士。
许智宏到任的时候,北大正在任彦申、陈文申主持下搞所谓机构改革,我所在的党委研究室扩编为发展规划部,人员、职能都有所增加,据说要负责全校的发展规划。我估计自己在这种强力部门没什么竞争力,恰好因党委统战部的一位老同志要退休,时任统战部长卢咸池找到我,问我是否愿意到统战部工作。我考虑统战部可能没有多少权力、利益方面的纠葛,大概比较适合我这样喜欢散淡的人,于是就此离开了工作过十多年的办公楼,当然以后也就不会有多少机会见到许智宏了。
许智宏上任初期我只是在个别会议上听过他讲话,讲话内容没有留下任何印象,他那一口浓重的苏南、上海一带的口音我也听不大懂。我虽然很难见到许智宏,但是他从中科院带了一位秘书过来,我在勺园餐厅吃饭时和这位秘书聊过几次。1999年北大搞了人事分配制度改革,方案是怎么制定的我不清楚,到1999年底公布出来并开始执行。我认为方案有很大的弊端,就写了一篇6000字的意见转交给任彦申等领导。任彦申没有理会,他很快也调到江苏去了。我想许智宏是新来的,或许可以听一些意见,就和他的秘书谈了对人事分配制度的看法,并将我的意见请他转交给许智宏。过了些日子,秘书告诉我说许智宏看了,但是之后再没有下文,我也就不抱什么幻想了。
不过这位秘书后来却出了点事。大概在许智宏到任一两年后,秘书报考北大的在职博士生,和其他几个干部通过研究生院的相关人员拿到了英语试题,他们也不知道策略些,考的分数都很高,于是被人告发了。调查的结果是他们作弊了,于是许智宏的秘书被调离岗位,安排到北大的校办企业工作,其他牵涉到的干部也分别进行了处理。虽说是秘书出的事,许智宏多少总该有一点表示吧。北大校方经常口口声声说要和国际接轨,尤其是将哈佛大学视为圭臬,可是哈佛的前任校长萨默斯仅仅因为说了几句女性学理科天生不如男性的言论,就遭到了激烈的抗议和抨击,不得不引咎辞职了。我们虽不敢指望哪位领导会引咎辞职,不过许智宏对他带来的秘书多少总有些失察之责吧,但我没有听说他在任何场合里表示过歉意。在这些事情上北大校方是从不强调与国际接轨的。
许智宏是北大众星捧月的中心人物,我则是边缘部门的边缘人物,虽然他当了9年校长,但我见他的次数实在是屈指可数,对他的了解更是少之又少。不过就是在我极为有限的视野里,还是有一些值得记录下来的事情。
有一年学生资助中心搞活动,因统战部长外出,我顺便被中心主任邀请参加了。我在北大虽然工作多年,由于身份低微,参加学校各单位组织的会议、活动很少,另外我也越来越不愿意去这类场合,主要是见不惯活动组织者的铺张以及对领导们的谄媚。但是如果我什么活动都不参加,也确实不知道人家都搞到了什么程度。那天学生资助中心的活动是在勺园二号楼餐厅举行的,我进去后就被餐厅正中挂着的大横幅震惊了,横幅至少有20米长,上面写着衷心感谢许校长及学校对我们的关爱等字样。我以前确实没有在北大见过这么长的横幅,顿时觉得自己太孤陋寡闻了。活动的主题是帮助家庭有困难的学生,但主角自然是许智宏,其中的一项议程是向许智宏献感恩贺卡。学生主持人以十分激动的口气念了贺词,我只记得说有一位慈祥的老人,他像我们的父亲一样如何如何,其他的话我记不清了,总的印象是贺词写的极为煽情、肉麻,我确实有一种被“雷”到的感觉。当然许智宏一直是笑眯眯的站在台上听着并接受了贺卡。
大约在2005年前后,我参加过学校教育基金会举办的一次筹资工作会议,会议是在京郊召开的。第一天上午许智宏到会并讲了话,我记得他说自己有一天没什么事,就到大觉寺去喝茶,知道了茶馆的老板是中文系的学生。许智宏的意思是说北大向校友筹资不要光盯着经济类、管理类专业的,人文类的毕业生也可能是有钱人。他的这个话倒是很有先见之明,后来给北大捐赠手笔最大的校友,恐怕就要数中文系毕业的黄怒波了。大觉寺茶馆我此前和一位当老板的朋友去过一次,对我来说消费确实很贵,很羡慕许校长是既有钱又有闲的。那天讲完话后许智宏就离会了,我也没有再看见他,不过我从会议组织者那里听说许智宏当天晚上又回来唱歌了,而且还有人找来了学生艺术团的女生陪着唱,还说了有的中年女士开始也兴致勃勃地唱,后来感觉气氛不适合她们在场,就主动退了出去。
其实许智宏和年轻女性的交往校内早有不少议论。在办公楼上班的人都知道,经常会看到一些时尚、漂亮的年轻女子来找许校长。我在办公楼做过多年秘书,一般人来找领导都要先问一问,但只要是这些年轻女子来找,秘书却是问都不问的,她们可以直接进入许智宏的办公室。我还听说这些女子主要由两部分人组成,有些是学生艺术团体的女生,有些是校办企业的人员,特别是有的校办企业老总经常让一些漂亮时尚的女子找许校长,她们出入于办公楼的身影引起了很多人的艳羡。还有一次我偶然听许智宏闲谈,他说自己喜欢做饭,有时候亲自买菜下厨,说这是他的一种放松方式。我知道许智宏家在上海,他自己在北京生活,偶尔做点喜欢吃的饭菜也是正常的。不过后来我却又听人说许智宏并不是自己做饭,而是会有一些女生到他的住所和他一起做饭、聚餐。我难辨其真假,假如这种说法是真的,那么许智宏的放松方式又只能令人羡慕了。
许智宏出国访问、去外地出差的机会很多,我还听说他有时会指名带某些部门的年轻女士随同。在北大有些和校领导关系密切的女干部受到特殊待遇,乃至获得升迁是不足为奇的,甚至还传出“许校长好幼齿,周校长喜熟女”的说法。周校长对几位“熟女”的关照我有所耳闻,但是倒没有听说哪位女干部的升迁和许智宏有特别的关系,或许是需要他关照的人太多吧。不过我又听说有的比较漂亮的女生被选留到学校机关工作,似乎又和许智宏不无关系,当然这样也给我们带来了一些养眼的功效。
我有一次外出开会和一位其他学校的干部同屋,闲谈时听他说:你们许校长怎么看起来色眯眯的。我仔细想了想许智宏的神态,他平时总是满脸笑容,经常笑的眼睛眯起来,嘴角似乎也有点歪,给人的感觉是有些轻浮。我确实很看不惯,但又不能准确形容出来,经这位干部提醒,才算找到了一些感觉。有一次学校召开党外人士座谈会,我先到英杰交流中心安排会场。许智宏可能是刚在附近参加完其他活动,提前来了。提前到场还有几个负责摄影摄像的人,看见许智宏进来,其中的一位女士迎了上去。许智宏对其他人只是略表示意,但对这位长相比较普通,看上去也不很年轻的女士却非常热情,说了一句:哎呀,你来了!随即双手紧紧握住这位女士的两只手摇晃着,持续时间远远超过正常的握手礼节,同时嘴张到最大程度地笑着。让我感到他的热情程度实在是有失身份,可能他已经习惯成自然了。另外有一次我参加了某个会议,倒没看见许智宏的表情,却看到一位女生遇见许智宏后非常激动,回来后连声说:我终于见到校长了,我终于见到校长了。又令我不禁想起刘震云小说《新兵连》里新兵看到军长的情景,我这个“老兵”只能在心里暗暗地觉得好笑。
我除了偶尔能当面见到许智宏之外,还经常会在北大的电视新闻中看见他。镜头前的许智宏似乎更让我有轻浮的感觉,他讲话时总是身子前倾,哈着腰,而且不断地左右来回晃。电视上看见他参加奥运火炬传递时也是晃悠悠、轻飘飘的感觉。姿态虽然只是一个人的习惯,不过以许智宏的身份,又是在公共场合,应该给人一种庄重的感觉。以前我每次见到丁石孙校长,他的身影总是挺拔的;陈岱孙先生90多岁时在校园里散步,我看到老人的腰板总是挺得很笔直。但许智宏却从来没有让我有一种庄重、挺拔,令人肃然起敬的印象。
许智宏是搞植物学研究的,是中科院院士,不过他是先当了中科院副院长,然后被评为院士的。虽然院士在中国是一种最高的学术头衔,不过熟悉中国大学、科研院所情况的人都知道,有行政职务的人往往更容易评上学术头衔。对许智宏的专业研究我一无所知,完全不了解他在业界的地位,我只是就一般情况而言。许智宏平时的日程是非常繁忙的,北大校长任内他担任过全国人大常委,当校长后的头几年还兼任中科院副院长,外出参加各种会议,去全国各地参加各类活动占用了他大量时间,出国访问对他来说更是家常便饭,常常一走就是十天半个月。北大新闻网上对许智宏的行踪一般都有报道,我大体估算过,他每年不在学校的时间至少在半年以上,在学校的时间又有多少是用于工作就不得而知了。
许智宏在北大当了整整9年校长,北大历史上只有蔡元培、蒋梦麟名义上担任校长的时间比他长,但他们实际主持校务的时间并不很长,他可以说是北大历史上实际任职时间最长的校长。在许智宏长达9年的校长任期里,我虽然多次听过他的讲话,但仔细地想一想,竟想不起一句让我觉得很受启发或者是很振奋人心的话,也没有见他办过一件比较得人心,能让人回味的事情。
许智宏在北大学生中确实有比较高的威望。他每次在学生中出现,都能获得热烈的掌声,甚至卸任后出席学生的活动,也总是能获得比现任校领导们更热烈的掌声。许智宏还以在新年晚会上演唱《老鼠爱大米》、《隐形的翅膀》等流行歌曲而受到学生们的热捧。我没有参加过此类场合,也不了解现在学生们的心态。我看过许智宏唱《隐形的翅膀》的视频,六七十岁的老头子唱小女生的歌曲,何况又五音不全、严重跑调,实在让人感到不伦不类,不过这并不妨碍他得到学生们的高度认可。对此类现象我确实不大理解,我只能认为同过去相比,北大的学生已经发生了很大变化,经过了多年的应试教育,总体上他们大概已经被驯服了,他们可能不会去想太复杂的事情,不知道北大校长曾经有过其他的形象,或许他们心目中的校长应该就是许智宏这样的。对学生们的幼稚我无话可说,不过许智宏作为中国最高学府的校长,不是高屋建瓴地指导学生应该怎么做,告诉他们应该承担什么样的社会责任,而是以唱流行歌曲这些方式迎合、讨好学生,赢得一种廉价庸俗的赞扬和崇拜。于是被有些不明真相的社会公众还寄予期望的北大校长、学生,却是在一片的歌舞升平中互相欣赏、其乐融融,“不知有汉,无论魏晋”,大概已经完全不知道北大传统为何物了。
许智宏9年的北大校长当得可谓有滋有味,听说他卸任时曾到学校的一些部门告别。我所在的统战部远离办公楼,又不是权力部门,他始终未曾踏进过一步。许智宏去了办公楼旁边的红一楼,到了组织部、宣传部、发展规划部等部门,但惟独没有去也在红一楼里的纪委,过其门而不入。听说时任党委副书记兼纪委书记王丽梅为此颇为生气,原因据说是王丽梅曾受上级部门委托找许智宏了解过和他有牵连的事情,许智宏对此不满。其实北大纪委根本就没有能力调查校级领导,更不会有意针对许智宏,不过是奉命行事罢了。既然是来告别的,却连这一点顺水的人情都不愿做,此人的器量之小由此可见一斑。
许智宏卸任后我基本上没有再见过他,只是偶尔看到他出席活动或发表言论的报道。他卸任后倒是讲过几句真话,例如他说过中国没有世界一流大学。不过他说的只是些对中国高等教育稍有了解的人都能说出来的话,没有什么特别的见解。许智宏任校长的9年也是北大不断被各种“负面新闻”困扰,学校声誉急剧下跌的时期,虽然这种局面不是他个人能承担的。但他除了进行过一些无力的辩解之外,从来没有去寻找过问题的所在,更没有因此影响到他在北大的愉悦心情和多彩生活。他用足了北大校长这个身份带来的名气、地位、快乐、荣耀,即使他卸任之后,北大前任校长的光环仍然可以让他过的十分惬意,或许他还能继续惬意下去。
王德炳
 
在北京大学和北京医科大学合并之前,王德炳是北京医科大学的校长兼党委书记。2000年初北大和北医大合并,原北大党委书记任彦申调离,王德炳担任了合并后的北大党委书记。王德炳曾说他做梦也没有想到会当北大的党委书记,他担任这一职务显然是过渡性的,是出于北大和北医合并后的平衡而做的安排。我见过王德炳的次数不多,对他没有多少了解,总的感觉他还是一个比较厚道的人。
王德炳任职后不久就发生了邱庆枫事件。当时北大文科一年级学生被安排到昌平校区,政治学系女生邱庆枫在从北大返回昌平的途中被人杀害。此案在北大学生中引起强烈反应,学生要求为邱庆枫设灵堂、开追悼会并要求校方道歉,引发了校内群体性事件。此案迄今未破。上面对北大的要求历来是稳定压倒一切,北大受到的关注又远非北医可比。王德炳甫一到任就经历了这种局面,肯定会让他非常紧张。王德炳多次把自己做北大党委书记形容为“如临深渊,如履薄冰”,足见这一事件及北大的敏感地位给他造成的压力。
王德炳的背景和心态决定了他不可能在北大有多少举措和作为。他任职期间,凡是我经历的统战方面的工作,例如要推荐党外代表人士,要举办什么会议和活动,请示到王德炳那里,他一般都不会提出什么意见,只是强调一下要考虑到医学部。学校在2001年曾举行过全校统战工作会议,王德炳作为党委书记要做报告,他只是把统战部起草的报告稿念了一遍。对待其他事情,他大体上也是这种态度。从王德炳本人的经历和北大、北医合并的背景看,他强调要考虑到医学部也是合情合理的。
对于王德炳的任职情况我了解的很少,没有什么值得记述的事情。倒是刚刚宣布他卸任之后,我在勺园餐厅吃饭,听到他对周围人说卸任当天他就举行了家宴,庆祝他不当北大党委书记了。对于不少人梦寐以求的北大党委书记一职,王德炳毫不恋栈,如同卸下了一个沉重的负担,其朴实、率真的一面令人印象深刻。
王德炳曾担任过全国政协委员,每年年初全国人大、全国政协会议召开之前,统战部都会召开座谈会,听取即将出席“两会”的人大代表、政协委员的意见建议。王德炳卸任后参加过我们的座谈会,我查了一下当时的记录,他在会上说:现在大学校园内外商业气息太浓,大学应该安静下来,避免浮躁;农民问题会影响到国家的发展和稳定,农民收入提高不了,就不能解决扩大内需的问题。农村的教育、医疗卫生状况令人担忧,自己回河南南阳老家看了看,在南阳农村很多小孩都上不了学,农民因病致贫、因病返贫现象很普遍;医德医风也是人文教育的问题,现在片面强调科技,对人文教育强调的不够,要注意协调好人文和科技的关系。要注意医学教育的质量,大学不能只强调扩招,要注意保证质量。过去教育部没有管过医学院校,现在医学院校基本上都与其他院校合并,由教育部统一领导,合并后怎么管理、医学教育怎么发展,需要切实重视、认真研究。
王德炳只参加过一次统战部的座谈会,但他谈的这些内容我认为都是比较实在、有针对性的,对教育、农民、医疗问题都非常关注。王德炳是血液病方面的专家,对他的医术我没有什么了解,他应该是一位有造诣的资深医生。王德炳担任北大党委书记只有两年,他担任这一职务主要是由于北大和北医合并的需要,并非完全是本人所愿。他既没有时间充分进入角色,也没有深入了解北大的愿望,不大可能对北大的发展提出有针对性的主张。王德炳卸任之后就回人民医院行医了,他在北大没有做什么令人称道的事情,但似乎也没有做什么让人非议的事情,他只能是一位力求平稳的过渡性的人物,也许他更希望人们知道他是一位救死扶伤的医生。
闵维方
 
闵维方是1980年代后期回国到北大工作的,之前他从北师大教育系本科毕业后赴美国留学,在斯坦福大学获得了教育经济学博士学位,是作为归国留学人才被引进到北大的。那个年代学成归国的留学生极少,北大也只有陈章良、闵维方、申丹等少数几个人。我第一次见到闵维方大概是在1990年代初期,他来北大后还被借调到世界银行工作过一段时间。结束世行的工作后,闵维方曾到党委办公室和我们谈起过这段经历,我只记得他说在世行期间去了很多国家。
闵维方到北大三两年后就当上了教授、博导,并接替汪永铨任北大高等教育研究所所长,1994年成为北大党委常委、校长助理,一年之后又当上了副校长。在他回国后的那几年里,基本上每一两年就会跨上一个新的台阶。大概是物以稀为贵吧,闵维方只是有归国留学人员的身份,就受到了校方的特别重视,得以步步高升。其实不光是社会上当时普遍迷信归国留学人员,我本人和周围很多人都有一种想当然的心态,我虽然对闵维方没有任何了解,仅仅知道他在斯坦福大学学习了教育学,就想当然地认为他进入北大的领导班子,可以为北大带来先进的教育理念、管理方法,从而使北大的办学水平得到提升。我那些年还比较关心北大的发展,也知道北大和世界名校的差距,又认为闵维方是国外一流大学出来的。所以到1996年北大校长换届,虽然最后接替吴树青的是陈佳洱,不过在可能的接任人选中,我曾认为如果让闵维方出任校长或许更合适。估计当时和我有类似想法的人还不少。
闵维方虽然没有当上校长,但他在陈佳洱上任之前已经升任为常务副校长,主管人事、财务等项工作,他的热情和干劲都是很足的。其间最为人称道是他为北大筹到了一笔数额达几千万元的捐款,是当时北大有史以来得到的最大一笔捐款。校办的秘书们对闵维方十分崇拜,将他这次筹资的过程说的很神奇,他不是向捐赠者讲北大怎么穷、怎么缺钱,而是强调了北大要如何发展,要承担怎样的社会责任等等,以此打动了香港富豪何英杰先生的孙子及其女友。后来北大举办各种会议和国际活动的英杰交流中心大概就是用这笔资金建成的。我听了以后对闵维方也极为佩服,愈发坚定了之前对他的期待。那几年闵维方的名气、地位都上升的很快,一时风头甚健,其间我只是偶尔听校办的秘书说过他似乎有点狂傲。
不过到了北大百年校庆前后,我开始听到了一些对闵维方的其他看法:有人说调闵维方到学校工作时,前任高教所长汪永铨就不赞成,认为他能力不足。汪永铨曾当过北大的教务长,是个大胖子,讲话风趣幽默,是一位被公认为能力很强的干部;还有人说任彦申用了闵维方之后也感到后悔了,也是觉得他能力不行。我没有在闵维方身边工作过,对他没有实际的了解,无从判断这些评价是否准确。
1999年底我开始到党委统战部工作,闵维方的夫人周爽女士时任统战部副部长。周爽是一位很正直,对自己要求十分严格的干部,她也比较通达,看人看事比较清楚。周爽不愿意因为闵维方的位置而被人关注,更不愿意别人通过她和闵维方产生瓜葛,处事非常低调。所以我和周爽之间虽然经常谈话,但是极少涉及到闵维方。我只记得闵维方任党委书记之后,周爽曾说过我还能不了解他吗?他也就是能干一些具体的事。闵维方上台后不久,因为北大名义上是由党委书记主管统战工作的,出于回避的考虑,周爽就调到校史馆当副馆长去了。在她调动工作的时候,周爽主动向组织部门提出不要对她有特殊的安排,也不要去那些待遇比较好、可能让人议论的地方,她还是一如既往地低调,不希望引人关注。
2002年春天,闵维方被任命为校党委书记,他在北大和北医合并后就担任了常务副书记,接替过渡性质的王德炳并不出人意料。闵维方刚上任时我对他比较关注,想看看他能给北大带来些什么?对于一位新的领导人来说,第一次正式讲话往往是很重要的,其水平、能力、风格一般都会从中有所体现。我没有直接听闵维方讲话,但是他上任后第一次比较重要的讲话印发下来后,我还是很认真地阅读了,但内容却令我极为失望。作为主政后的首次正式讲话,应该多少有一些个人的风格和思路,但闵维方的讲话却完全是官样文章,主要内容就是“三个代表”。当时还任党委副书记的赵存生历来比较认真,听人说他对闵维方的讲话稿进行了仔细核对,结果是和报纸上的社论语言一句不差。我实在难以理解,闵维方面对全校的讲话,即使讲不出多少高屋建瓴的内容来,也不妨讲一些实话,哪怕从“三个代表”上引申出一些结合北大实际的内容也行,结果他竟然是全盘照抄了一大堆官话套话。此后闵维方的讲话我还看过一些,基本上都是这类官方语言,我也就没有兴趣继续关注了。
到了2003年春季,闵维方忽然在《人民日报》上发表了一篇文章——《向着世界一流大学迅跑》。文章认为北大创建世界一流大学需要跨越式发展,建设世界一流大学是北大的光荣使命,具体措施上则强调要把学科建设视为“安身立命之本”,置于突出的地位,学科建设要“适应国家经济建设、社会发展和科技进步需要”。此外还罗列了北大科研经费的增长数字,提出要建设高水平的师资队伍,强调北大有一流的生源等等。最后展望说“到2005年,为创建世界一流大学打下全面的坚实基础。从2005年到2015年,再经过10年的艰苦奋斗,实现创建世界一流大学的宏伟目标。”全文除了官方式的语言、口号、决心之外,没有任何令人信服的内容。“迅跑”一词也实在过于俗陋,意思是说北大要向着世界一流大学的目标迅速地跑过去,哪怕是用被用滥了的“前进”一词也稍好一些。按照闵维方的说法,2015年北大就要实现创建世界一流大学的目标,现在时间马上就到了,不知届时他是否敢说北大已经是世界一流大学了,好在他的继任者朱善璐又把这一时间点往后推了几年。
大概是为了“迅跑”,北大随即就推出了人事制度改革方案,全称是《北京大学教师聘任和职务晋升制度改革方案(征求意见稿)》。闵维方虽然公开讲话时照本宣科,不越雷池一步,但做事情倒很有些我行我素的强硬风格。这一方案的具体制定者是时任校长助理、光华管理学院副院长张维迎,但背后有闵维方的强力支持。方案的核心内容是北大的教师以后要“非升即走”,就是说讲师如果升不上副教授,副教授升不上教授,就要主动离开北大,或者要被解聘。此外还对教师的提职申请进行了限制,如果两次申请晋升不到高一级职称,就不能再申请提职了;还提出北大以后一般不选留本校毕业生留校任教,教师都要具备用一门外语讲课的能力等等。为了强调改革的合理性,又提出北大是所谓“一流的学生,二流的教师”,所以要对那些“二流”的教师进行“改革”。
《方案》一经公布立刻引起轩然大波,凡是对中国大学稍有了解的人都不难判断其不具备可行性。首先北大就不能保证教师职务晋升的公平公正,另外教师就是升不上去了,你能让他们往哪里走?恐怕这些被北大抛弃的人将会无路可走;用外语讲课的要求更是被中文系的李零教授形容为“脱了裤子放屁,多此一举”;北大学生到底是不是“一流”的还很难说,再说主要由那些“一流学生”转化过来的教师怎么就变成“二流”了?方案争议期间我乘车外出时听一位学校车队的司机说:一流学生、二流教师,这不是挑动群众斗群众吗?顿时让我有一针见血的感觉。北大的教师尽管在学校管理层的强势下逆来顺受惯了,但这项改革如果真的实行,将直接威胁到许多人的饭碗,一时群情激奋,提出了很多尖锐的反对意见,这也是北大教师群体迄今为止最后一次向校方表示了强烈抗议。我作为机关工作人员虽然和“改革”没有直接关系,也接连写了《“改革”杂谈》、《“人才”浅议》、《讨论与争论》3篇评论,从侧面探讨“改革”之不可行。
但是在此期间闵维方的态度很坚决。我曾在中央电视台《对话》节目上看到他谈论北大的“改革”,口气很强硬,大有不达目的誓不罢休之势。节目中还不知道从哪里找了一个人猛唱高调,支持闵维方的“改革”,最后表态说如果他的学识和能力要是影响到北大建设高水平大学,他可以不拖北大后腿,会自动离开北大——只是这个人好像不是北大的。虽然闵维方态度强硬,但是在反对意见非常激烈的情况下,“改革”方案虎头蛇尾,最终做了很大退让,所谓“非升即走”,用外语讲课这些要求都不提了,只是保留了职称晋升只有两次机会等次要内容。此次“改革”之不得人心还在当年年底举行的北大第十一次党代会上体现了出来:“改革”的主要策划者张维迎在校党委委员差额选举中以倒数第一的票数落选,且其得票数大大低于倒数第二的落选者,还连累了另一位搞经济学的校长助理海闻没有当选。
由于地位的悬殊,我没有多少机会直接见到闵维方,只是偶尔能在党外人士的座谈会上看到他。闵维方上任之初的风格和他推动“改革”一样,都是比较强硬的。记得有一次他对党外人士讲北大要办好,就需要扩大空间,外地一些大学有大面积的新校区,但北大没有。他甚至说只要能把某块地给北大,如果磕头管用,他可以给有关领导把头磕在地上。北大校园空间确实非常紧张,造成这种局面最主要的原因是学校的盲目扩张,不过北大办学的水平的高低和校园的大小似乎并没有直接的关系。再说就是想要某块地方,也不必用磕头的方式胁迫吧。在此类会议上,我也没有见过闵维方以诚恳的态度征求党外人士意见,让大家畅所欲言,一般都是自说自话,通报一些学校的情况和已经决定的事情。
闵维方搞教师聘任制度改革,看起来是对北大的教师队伍不满意,要提高北大的师资质量,但是在对待真正的人才时,他的态度却又令人费解。大概在2004年前后,中文系教授裘锡圭离开北大去了复旦大学。裘锡圭是古文字学领域首屈一指的专家,不过古文字学在中文系不被认为是主流学科,裘锡圭受到了一些冷遇,要求他到年龄就退休,其间裘锡圭和中文系负责人之间可能有些不愉快。复旦大学则求贤若渴,提出聘请裘锡圭做终身教授。裘锡圭和闵维方两家是蓝旗营小区的对门邻居,之前我听周爽说他们上中学的女儿向裘先生请教过古文,裘先生曾专门打电话叫她到家里进行过辅导。以闵维方的身份,如果能亲自登门拜访裘锡圭,同他深入交谈、诚恳沟通,应该是不难打消他离开北大的想法的;裘锡圭还是全国政协委员,无党派代表人士,闵维方也完全可以从主管统战的角度出面做工作;在裘锡圭出走前后北大聘任了一批文科资深教授,实际上是北大的终身教授,以裘锡圭的学术水平和影响力,成为文科资深教授应该不会有什么异议。我听说许智宏曾找裘锡圭谈话表示过挽留之意,不过许智宏明显是在走过场,连裘锡圭从事什么研究都没有搞清楚,自然话不投机。尽管闵维方就住在裘锡圭对门,但我始终没听说他迈出过这一步,裘锡圭最终是带着他的弟子们出走复旦,北大的这一优势学科就此不复存在。
闵维方当了9年多党委书记,是北大历任党委书记中时间最长的。闵维方任职初期大概还是想做些事情的,似乎也比较自信,以为自己很行,无论是搞“改革”还是做其他事情,态度都比较坚决、强硬。但他并没有认识到北大真正的问题、弊病之所在,只是针对一些次要的环节用力过猛,必然会遭到挫折。闵维方虽然是搞教育学出身的,又有在斯坦福大学留学的背景,不过他并没有按照教育的规律和国外一流大学的做法管理北大,而是继续沿着任彦申倡导的不断向体制“效忠”的道路上“迅跑”。但是同任彦申有自己的理论、策略不同,闵维方的做法则显得简单、生硬,其强硬的个人风格也没有因为遇到挫折而有所改变,尤其是到了他任职的中后期,更是无所顾忌地维护他个人及其亲信们的权力、利益,终于使北大彻底地变成了一个名利场,在体制化、行政化、官僚化的道路上越走越远。闵维方任职9年给北大留下了大量的负面资产,我认为其中最严重的,就是他对于规则的无视和破坏。虽然北大的规则意识过去就不太强,但是在闵维方主政期间,北大领导层的规则意识几乎荡然无存,不讲规则成为了主要的规则。这一点在北大机构的设置,干部的任免、退休等方面体现的尤为突出。
在我的记忆里,以前北大任免干部,如果是党务工作干部,任命决定里会写上:经校党委常委会议研究决定,任命某某为某职,或免去某某的某职;如果是行政机构干部,则要经校长办公会议研究决定。但是前些年我发现北大的干部任免决定一律改为:学校研究决定,任命某某为某职,或免去某某的某职。不管是党委常委会还是校长办公会,其组成人员总有一定的范围,而“学校”在这里是个什么概念我就不清楚了,总之肯定不包括普通教职工。所谓的“学校”我只能理解为学校的领导人,除了校级干部需要由上级任免之外,北大的教务长、总务长、秘书长、校长助理以及职能部门、各个院系,甚至是工会、团委的干部,都可以由无所不包的“学校”直接任免。至于“学校”这个概念的法定含义,其决定是否符合法定程序从来没有人解释过。我不知道由“学校”任免干部是什么时候开始的,但确是我在闵维方任职期间发现的。
前几年北大政府管理学院党委换届,由于在院党委委员的选举中常务副院长落选(政府管理学院院长由罗豪才挂名,常务副院长实际主持院务),其本人认为是有人操纵了选举。据说这位常务副院长在筹集某笔资金的过程中发挥了作用,是闵维方信任的干部。于是闵维方对学院党委的选举结果不予认可,要求学校纪委进行调查。纪委经过调查后得不出有人操纵的结论,闵维方大为不满,又让医学部纪委再次调查,还是得不出让他满意的结论。其间闵维方还指令将有关情况报给教育部、北京市委等上级部门。我不知道他是怎么考虑的,本来就是自己地盘上的事,自己搞不定,莫非还要上级部门来做主?我曾在一次饭局上遇到北京市委的一位负责干部,他说闵维方把这件事情报上来,搞得他们也很为难。
大概在政府管理学院党委换届选举一年半之后,到了2010年10月份,忽然有一天在学校的公告栏上看到了校党委文件:党委常委会同意政府管理学院党委选举结果,由王浦劬等7人组成新一届委员会,周志忍为书记,李海燕为副书记;但是仅仅过了一两个小时,公告栏上又发布了另一份党委文件:学校研究决定,任命李国平等4人为政府管理学院党委委员、副书记,免去李海燕的副书记、委员职务。书面文件我手头都有保存,前一份落款时间为2010年9月14日,后一份则为10月26日,前后相差一个多月,但确实是同一天在学校公告栏里发布的。而“学校研究决定”任命的4位副书记,没有1位是选举出来的7名委员会成员。我不需要对此进行更多解释,院党委选举的结果可以长时间置之不理,副书记的职数可以从1位一下子增加到4位。我之所以不厌其烦地叙述政府管理学院党委换届的案例,实在是这个案例很典型地体现了闵维方时期干部任免的特点:没有任何规则可言,一切凭主要领导人的意愿,不管是制度的规定还是选举的结果,在当权者面前一概无效。
不仅中层干部的任用如此随意,闵维方时期北大校级干部的安排也经常令人不解。大约2005年左右,林钧敬因年龄过线不担任副校长了,被派到北大深圳研究生院任主要负责人,并由现任的副校长海闻做他的副手。以在任的副校长辅佐卸任的副校长,这样的安排本身就有些奇怪。过了大概三两年,我偶然在办公楼门口碰见林钧敬,问他是否还在深圳干?他说不干了。我想当然地说那你是退休了,林钧敬笑而不语。后来我才听说他不仅没有退,而是以校务委员会副主任的身份回来参加领导班子工作的。我不禁对自己的孤陋寡闻感到好笑,笑自己只有惯性思维,没想到人家根本不按常理出牌。
闵维方曾长期主管北大的财务,对财务工作尤其重视。前任财务部长到退休年龄卸任了,我甚至已经在退休人员名单上看到过她的名字。但是此后不久,主管财务的副校长陈文申到中央党校学习,前财务部长不仅恢复为在职人员,而且被任命为代理副校长主管财务。陈文申回校一段时间后又到驻加拿大使馆任职,前财务部长再次被任命为代理副校长。我没有在北大历史上见过代理副校长这个职位,也没有注意是教育部任命的还是“学校研究决定”的。我相信她有财务方面的专长,也是闵维方非常信任的人,如果以退休人员身份聘为学校的财务顾问,相信她也一定能充分发挥作用。我不明白闵维方为什么要如此打破常规。
对于自己信任的干部,闵维方可以随心所欲地安排使用,但是对于不是嫡系的干部,免去职务时也可以突然袭击、不走程序,即使校级干部也不能幸免。前校党委副书记兼纪委书记王丽梅曾亲口告诉过我,她卸任时没有任何人和她谈话、打招呼,直接就宣布免去了她的职务。校级干部尚且如此,其他干部就可想而知了。不过王丽梅虽然不明不白地离职,但是北大退下来的校级干部乃至一些中层干部却享受到了几乎是终身制的待遇,至少从2000年之后卸任的校级领导,没有哪一位是办了退休手续的。到我写这些文字的时候,这些卸任的老领导们,多半快70岁了,有的已经超过70岁了,仍然都是学校的在职人员,拿着我不知道具体数额的津贴,享受着远远超过离退休人员的待遇;一批早已过了退休年龄的中层干部也因“工作需要”保留为在职人员,只是到了闵维方卸任之后的2012年才退下来几个,而一般的教授、博导最多到63岁就退休了。我曾和一位前高层领导的秘书谈及北大干部的退休状况,他也不禁大为惊奇,说你们的处级干部“比正部级还厉害”。官场上还有基本的规则,就是正部级官员到了65岁也是要卸任的,而闵维方时期的北大却形成了“超衙门化”状态,干部的任免、退休完全无章可循。
以我作为旁观者的角度,我认为闵维方做北大的一把手实在是很不称职的,他不具备把握时代脉搏和北大全局的能力,只是他在财务方面还有些专长。2008年底我参加过一次学校的筹资工作会议,闵维方做了一个财务工资报告,虽然他讲的有些长,但还算比较实在,是我听他的报告中最有内容的一次。据说香港的一些大老板也比较认可闵维方,如果他一直做负责财务的副校长,专心于北大的筹资、财务管理,或许会得到不错的评价,哪怕他去教育部做主管财务的副部长也行。但不幸的是闵维方却成为了北大的主要负责人,把一个不合适的人放在不恰当的位置上,那就不仅是北大的不幸,恐怕也是闵维方个人的不幸。
也是在那次筹资工作会上,闵维方做完报告后出来。我看他向我这边走过来,看样子是要和我说话。此前因为对我的职务安排问题,吴志攀、杨河两位副书记都和我谈过话。闵维方果然走到我身边,而且把一只手放在我肩膀上,和我抚肩而谈,还是表示说要对我进行安排。我只能表示感谢领导的关心。此后不久我又看到闵维方的秘书过来和他说话,也是搂着他的肩膀说的,当然这位秘书是男的。我想闵维方和他信任、喜欢的干部之间已经形成了非常密切的关系,一般的方式已经不足以表达其密切程度,在对这些干部的安排使用上,闵维方几乎是毫无顾虑的,其中一位女干部在他的关照下步步高升,更是早就在校内引起了纷纷议论。
虽然我有幸得到了闵维方“抚肩”的待遇,但至多不过是一种安抚,如果他刻意要对我进行安排,应该没有任何困难。在闵维方当政时期,北大的机构设置、干部职数急剧膨胀,1999年精简机构所撤销的秘书长、教务长、总务长及职能部门几乎全部恢复,校长助理更是增加到10人左右,又增设了校友工作办公室、国内合作办公室、督查室等一批正处级行政部门。很多部门设置了常务副职,待遇相当于正职,一般副职更是想设几个就设几个,前面所说的政府管理学院党委副书记由1个增加到4个就是比较典型的例子。总之只要是闵维方或其他有实权的校领导想安排的人,都可以因“工作需要”,没有位置的可以设立位置,没有机构的可以增设机构,一切皆有可能。虽然任用这些干部需要通过“学校”,但是考虑到北大有的校级领导对其主管部门的干部调整常常都不知情,我只能认为北大的干部任免完全在闵维方等极少数人的掌控之中。他卸任前几年最令我印象深刻的事情,就是大批地安排任用干部,多次让我产生“加官进爵真忙”的感慨。
到了闵维方任职后期,除了大批安排干部之外,他对于北大的工作似乎也没有什么打算和信心了,只是在那个位置上待一天是一天。北大的党代会从2003年开过后就没有再开了,好几次说要开但又没有了下文。我听到和观察到的都是学校内很多人已经对闵维方难以忍受,听说在一批院系、职能部门负责人聚会的场合里,有人问党代会到底什么时候开?北大召开新一届党代会,必然关系到闵维方的去留。但是没人能回答党代会什么时候开,有人甚至掩饰不住地大为失望。我甚至还听到从更高层的人物那里传出来的说法,对如何撤换闵维方也是大感头疼。
这种状况一直持续到2011年8月,终于由朱善璐接替了闵维方的职务,闵维方被安排为全国政协委员、文史和学习委员会副主任。闵维方卸任后不久我在勺园餐厅见过他,我和同事看到闵维方走进来,先是坐在餐厅的另一角,后来又被服务员领到临近我们的餐桌坐下。他没有表露要和我们说话的意思,我们只好和他简单地打了一下招呼,然后他独自用餐,我也没有看到任何人上前和他说话。我知道闵维方的听力不好,和人谈话有困难,但是作为在北大主政近十年的主要负责人,刚刚下台出现在公开场合,就让人产生一种茕茕孑立、形影相吊的感觉。如果不了解北大的内情,估计没有人相信此前不久他还是这个地方的头号人物。
闵维方是从一名矿工走到北大党委书记位置的,我无意否认他在这个过程中付出的努力和艰辛。我相信他是爱国的,在他出国留学的那个年代,主动回国的留学生极少,但是他回来了,虽然这一选择也是他后来得到提拔重用的关键因素。我还听周爽说他们的女儿是闵维方留学期间出生的,其间周爽曾赴美探亲,他们可以像许多留学人员一样把孩子生在国外,但周爽说他们根本没有过这种考虑,她在孩子出生前就结束探亲回国了。我也相信闵维方是希望把北大办好的,他对待工作是非常投入的。但是作为北大的主政者,需要有把握社会大趋势和北大发展方向的能力。我听到对许智宏的个人评价中总有一句“他按照社会主义政治家、教育家的标准要求自己”,许智宏、闵维方距离这些标准都过于遥远,但是作为北大的党委书记、校长,确实应该具备政治家、教育家的素质和能力。
闵维方虽然是学教育学的,但是除了强硬推行不切实际的教师聘任制度改革外,他没有在教育问题上提出过任何有针对性的主张和举措。如果闵维方懂一些政治,他可以充分利用北大的地位和影响,争取到更多的个人话语权和北大的办学自主权。但是闵维方却只会对体制内那些僵化的语言照本宣科,殊不知这些东西早已令人厌恶,徒然增加了人们对北大和他本人的反感。如果闵维方能认识到北大的问题所在,对各类官僚机构有所抵制,对北大自身的行政化、官僚化倾向有所纠正,是不难获得较高威望的。但他却是反其道而行之,对于行政化、官僚化那一套严重背离教育规律,严重阻碍大学进步的东西趋之若鹜、发扬光大,终于使北大彻底地变成了一所官场风气无处不在的衙门。尽管北大走到这一步有多种因素的作用,但在闵维方时期却是使这一趋势走到了极致,他对此应该负重要的责任。
闵维方虽然卸任了,但是他为北大留下了不少负面资产。在他任职期间,北大的官僚机构大幅度膨胀,规则意识荡然无存,利益阶层几乎把持了学校的所有领域。即使北大今后的领导人想要有所作为,也将会遇到规章制度破坏殆尽、利益阶层难以触动的困难局面。如果闵维方能够对自己的行为有所反思,并在他熟悉的专业领域提出一些好的建议,或者对中国的高等教育、教育体制乃至更深层次的问题提出一些意见和主张,或许还可以发挥一些积极作用,取得一些人们的谅解。但是他在北大留下的强硬、专断的个人风格及其造成的严重后果,将会成为北大历史上沉重的负担。
吴志攀
吴志攀当上校长助理、副校长之前,我已经离开了办公楼,我对他是只知其人,知道他当过法律系主任、法学院院长,除此之外没有任何了解。2002年底我申报教育管理研究员职称,吴志攀是评审组组长,当然我最终没有通过小组评审。我以为吴志攀对我没有任何印象,不过就在职称申报期间,他曾私下对我说我的文章写得不错,他指的是我在北大校报上发表的一些评论文章。我当时用的是笔名,吴志攀看过,大概在我的申报材料里知道了那些文章是我写的,所以才有了上面的评价。此后我和吴志攀总共也没有见过几次面,偶尔遇到时他会打一下招呼,或者问我最近又写了什么文章。
2003年底北大召开第十一次党代会,吴志攀兼任了校党委副书记,随后又成为党委常务副书记,分管组织、干部工作。我那几年对学校的状况极为失望,另外我虽然在机关里资格较老,但一直没有任何安排,大批比我年轻的多的干部早就纷纷上位,我已经完全边缘化了。或许是当时还有些看不开,有些怨气,也有些清高吧,总之我对学校的事情,特别是对学校领导层的情况不闻不问,当然对吴志攀也没有任何接近、了解的愿望。
到了2008年底,学校突然调整了统战部的干部,调校团委副书记张小萌任统战部副部长。此前我们从学校组织人事部门了解到的信息是:统战部的编制为3人,设部长、副部长各一人,不设内部机构。统战部已有卢咸池部长、付新副部长和我3个人,张小萌来了以后就变成一正二副,编制也增加到4人。当然此事和张小萌本人没有什么关系,她只是被安排来的,而且她已经是副处级的校团委副书记,到统战部属于平级换岗。不过统战部一正一副、三个编制的说法却没有人再提了。我估计是领导们在通过张小萌的任命时,可能有人提出我干了那么多年了,还没有任何安排,有的领导忽然觉得这还是个事,应该向我做一些解释安抚。当时分管统战工作的是杨河副书记。闵维方时期北大的干部任免有个特点,就是主管领导对其分管部门的干部调整基本上没有发言权,甚至根本就不知情,由闵维方等几个主要领导就拍板决定了。我估计杨河对统战部的这次干部调整也不知情,他或许会表示如果要找我谈话,也应该由分管干部工作的吴志攀谈。
不知道领导们是怎么考虑的,总之我接到了吴志攀亲自打来的电话,询问我是否有时间?能否到他的办公室去一趟?我接到电话就估计和统战部的干部调整有关。吴志攀话说的很客气,我却觉得有些多余,他是主管干部工作的常务副书记,我只是一个没有任何职务的普通干部,何况至少已经有十多年没有校领导和我正式谈过话了——除非有很特殊的情况,否则我没有必要拒绝吴志攀的谈话要求。到了吴志攀的办公室,我看到桌子上、沙发上、地上到处都堆满了书,房间本来就不大,更感到没有落足之地。吴志攀大概也觉得屋里太挤,就领我到了办公楼202会议室,他平时说话声音就不大,这时候可能更觉得不好开口,口嗫嚅而不能言。我看吴志攀为难的样子,就主动说这件事情我早就听说了,我不会在意的,也无所谓什么一官半职的。既然已经说开了,吴志攀也显得轻松了一些,又表示说以后可以安排我做统战部的副部长。我当时还没有认识到北大的干部运作已经到了随心所欲、不讲任何规则的程度,觉得他这样的许愿不太现实,统战部已经有两个副部长了,怎么能再随意增加呢?就再次表态说我不会介意这些事。吴志攀又问我最近写了什么文章没有,并给了我一张名片让我把文章都发给他,然后如释重负地结束了和我的谈话。我没有看时间,但估计谈话过程不超过10分钟。
之后我就将一些文章通过电子邮件发给吴志攀了,同时附了一封短信。此前我看过吴志攀的一篇散文和一篇评论,觉得都写的很好,散文很有文采也很有意境,评论的观点非常鲜明、有说服力。我在附信中对吴志攀的文章进行了比较高的评价。他很快给我回了信,对我的文章也表示了肯定,并说他一直是喜欢文学的,写这类文章是为了做一些喜欢做的事情,不给自己留下遗憾。
也是在2008年底,应该是吴志攀和我谈话后不久,忽然听说季老收藏的字画被人盗卖,一时间各种传闻沸沸扬扬。此前在301医院负责照顾季老的秘书是吴志攀的夫人杨锐女士,听说季老不让杨锐做秘书了,甚至有传言说她是监守自盗,还有传言说杨锐对季老不好。我迄今没有见过杨锐女士,不过以吴志攀的身份和为人,我不相信他的夫人会做什么对不起季老的事情,季老听信谗言、被人利用是完全可能的。至于季老字画事件还有什么复杂的背景,是否有人借此针对吴志攀我就不清楚了。据说杨锐女士为此受了很大委屈,严重影响了身心健康。吴志攀也说过有什么事冲我来呀,为什么要整我妻子的话,但是一直没听说他有实际的行动。
到了2010年初,闵维方忽然在一次学校干部会上宣布了教育部的决定,免去吴志攀党委常务副书记的职务,改任常务副校长。原因据说是吴志攀担任了几家上市公司的独立董事,不符合干部任职的有关规定。虽然常务副书记和常务副校长是平级的,但谁都明白吴志攀的地位下降了。尽管有关干部任职的规定很多,但认真执行的情况似乎并不多见。我不了解有关规定,不过也听人说担任独立董事不是什么大不了的事,再说就算是吴志攀违规了,都是党员领导干部,为什么他又可以当常务副校长?这样处理明显有排挤吴志攀的意思。如果他能够拍案而起,表示说老子不干了,哪怕再去多做几家公司的独立董事,或者专心于学术研究,搞他喜欢的文学创作,倒也不难博得人们的佩服。但是我没有听说吴志攀有任何表示,而是老老实实地去做常务副校长了。
吴志攀虽然主管过好几年干部工作,他改任常务副校长以后,他所主管的离退休工作部增加了一位副部长,据说他事先毫不知情。后来离退休工作部部长也进行了调整,此时校党委书记已经由闵维方换成了朱善璐,但还是没有人征求吴志攀的意见。有一种比较夸张的说法是吴志攀看到原部长在收拾办公桌,就问是怎么回事?回答说要给新部长腾地方,他才知道部长已经换人了。
几年前我有一次见到吴志攀,我也是有意想看看他的反应,就问他答应过我的事怎么样了?我指的是他答应我做统战部副部长的事情。吴志攀先是一脸茫然,经我提醒后表示一定尽力去办。过了些日子,吴志攀遇见我后问我的事情解决了没有?我不禁觉得好笑,就说你是党委常委、常务副校长,我的事情解决没解决你应该先知道呀,怎么反倒问起我来了?到了我写这本书期间,我再次碰见吴志攀时他还问事情解决了没有?并表示他还要去说。我只好说不用再说了,再说就没意思了。吴志攀又立即表示“我和晓黎说”。张晓黎是现任的统战部长,即使吴志攀要兑现诺言,他应该和党委书记,或者是主管干部工作的党委副书记,起码也得和组织部长说。他作为党委常委、常务副校长,尚且对学校的干部任用没有任何发言权,更何况只是中层干部的统战部长了。我想吴志攀也不是故意推脱,而是他说话根本就没有分量,他可能也没有向那些人提出要求的勇气。
2013年暑假前首次召开了肖家河教师住宅售房工作小组会议,因为主管后勤的副校长鞠传进调到教育部工作,不知道学校是怎么考虑的,让吴志攀接替鞠传进管后勤并兼任售房工作小组组长,我是这个小组的成员。肖家河教师住宅项目启动已有十多年了,北大教职工期盼已久,但迄今未进入实质性建设阶段。吴志攀大概是平时开会开怕了,又要应付差事,会议一开始就宣布说今天要开个短会。我听了房管部门的介绍,感到这是一项关系到数千名教职工,涉及到复杂的利益分配,需要进行充分讨论、协商的大事。于是当场提出肖家河项目不是开短会能够解决的,而是应该开长会,要经常开会,哪怕在会上吵架也行,让各方面的诉求充分表达出来。听了我的发言,吴志攀似乎也意识到这件事不是那么简单的,又表示收回他的意见。我估计吴志攀是临时被安排负责后勤的,但是肖家河项目毕竟牵涉面广,教职工的关切度极高。就是对待如此重要的事情,他也只是敷衍的态度。会议结束后我和吴志攀一起往外走,他说还要去参加什么会。我说那些无关紧要的会你没必要都参加,但肖家河的事情应该高度重视起来。吴志攀却表示说不敢不去呀,随后匆匆赶往下一个会场。
我和吴志攀的接触很少,基本上就是上面说的这几件事。吴志攀在专业领域应该是有造诣的,特别是他作为一位法学家,文笔也很好,他的散文不失为上乘之作。听说吴志攀还会写诗,画画也不错,是很有些才气的。吴志攀几年前出版过《闻道与问道》一书,其中有他对北大一批著名学者的认识和感悟,以及对许多教育问题的见解,很多观点都体现了他对公平正义,对教育改革,对美好事物的追求。通过他对我的文章的评价,我知道他对我的一些观点和看法是肯定和赞同的。吴志攀长期处在北大三、四号人物的位置上,是完全有机会、有条件表达他的意见,提出他的主张,从而影响学校的决策,哪怕只提出一些不同看法也行。但遗憾的是我没有听他说过这样的话,做过这样的事,如果他甘愿同流合污,我自然没什么好说的,偏偏他私下里又表现出一些洁身自好之处,似乎他是另有所求的。实际上吴志攀的这种姿态,只能让他在北大领导层中充当花瓶的角色,说一些不痛不痒的话,做一些无关紧要的事,真让他负责肖家河项目这样关系重大的事情,他又明显敷衍了事。甚至在他的妻子和他本人受到不公正对待时,他也没有任何抗议,而是心甘情愿地任人摆布,或许他这样做是为了所谓的“顾全大局”。对于一个连自己的妻子都不能保护的人,还能指望他在别的事情上挺身而出、维护公道吗?
李锐曾评价胡乔木是“骨头有些软”,不过胡乔木的软恐怕主要表现在对上,而吴志攀则不仅对上软,对下也同样如此。我听说他任常务副书记时有一位中层干部到退休年龄了,他叮嘱组织部门过半年办退休手续,组织部门怕不好办,拖到了一年后再办。结果这个干部找吴志攀一闹,他马上就改口说不退了。我以前不愿意接触学校领导,主要还是有些怨气,不过对他们多少还有些敬畏。自从吴志攀和我谈话之后,闵维方等领导也对我表示了安抚之意,反倒让我一下子看清了他们虽然表面上为所欲为,其实并没有足够的底气。否则他们完全可以对我不予理睬,即使我主动去找也可以打打官腔。
前两年网络上突然传出吴志攀的一条微博,是针对社会上屡屡出现的老人摔倒了没人扶现象的。吴志攀写到:你是北大人,看到老人摔倒了你就去扶。他要是讹你,北大给你提供法律援助,要是败诉了,北大替你赔偿!被网友评价为是一条相当硬气的 “撑腰体”微博,也有网友怀疑其真实性,据核实确实是吴志攀发的。吴志攀或许是平时软弱惯了,不知出于什么心理,偶然对一种小概率事件表现了硬气的一面,其实他只需要在自己受到不公正对待时表现出一点硬气来,就足以令人刮目相看了。我曾经写过一篇《应该形成一种敢于表达意见的氛围》的评论,主要就是针对吴志攀这类人的。有一次我在办公楼门口遇到吴志攀,他又问我写了什么文章没有?我说很久没有写了,写了也没有用。吴志攀连说有用有用,就走进去了。我明显针对他的文章对他都没有用,不知他说的有用是什么意思。
以前我认为吴志攀有点像三国时的刘表,“善善恶恶”,也是“善善而不能用,恶恶而不能去”。不过当我看到《资治通鉴》上东汉桓帝时杜密对刘胜的评价,觉得把吴志攀比作刘表还是有些抬举他了。杜密评价说“刘胜位为大夫,见礼上宾,而知善不荐,闻恶无言,隐情惜己,自同寒蝉,此罪人也。”实在是极为精确地刻画出了吴志攀这类官员的形象。北大之所以堕落到现在这个地步,虽然有多种因素的作用,但是也和领导班子中有一些吴志攀这样的人关系很大。正是他们在其位而不谋其政,尸位素餐,“自同寒蝉”,从而使任何荒唐的决策都可以在北大畅行无阻,他们也将是北大历史上的“罪人”。
张 彦
我认识张彦是他当哲学系团委书记的时候,当时他的家庭遇到了变故,时任党委副书记的朱善璐曾帮他安排过家事,其间张彦来过朱善璐的办公室。张彦比我小六七岁,是哲学系1988级的本科生。虽然参加工作比较晚,他的仕途却十分顺利,从哲学系出来后,先后当过招生办公室主任,校团委书记,党委办公室校长办公室主任。到了2003年底北大召开第十一次党代会,张彦则更上层楼,当上了主管学生工作的党委副书记,当年他只有34岁。张彦从考入北大到成为校级领导,前后不过用了十几年时间。
我和张彦的直接接触很少,我们之间地位相差悬殊,不可同日而语。不过我毕竟在党委办公室呆过,所以张彦见了我一般会打一下招呼。大概在2004年前后,我有两篇文章被《人民日报》社编的《思想理论动态参阅》转载了。张彦碰见我时说他看到了,还说我讲的“是那么个理儿”,他是黑龙江人,说话有一点东北口音。
张彦做副书记的头几年里,有一次学生资助中心在勺园举办家庭困难学生的活动,许智宏、张彦都参加了,我在《许智宏》一文里已经描述了当时的场景。其实学生们也给张彦献了感恩贺卡,并要念上面的贺词,张彦制止了。我当时正为献给许智宏的谀辞大感肉麻,所以对张彦的制止行为还有几分好感,不过从张彦这些年的表现来看,他当时的做法可能只是为了不抢许智宏的风头。
大概是因为我能写几篇文章,张彦见到我时还有几分客气。有一次我在艺园餐厅和几个朋友吃饭,忽然肩膀上被人一拍,回头一看,是张彦带着一帮学工口干部从包间走出来了。张彦停下来和我们寒暄了几句,两个女干部一左一右地趋奉着站在他身边,斜弯着身子做出随时准备搀扶的样子,和张彦大约只有半步距离,感觉上再近一些会显得太亲密,再远一些又不足以显现她们对领导的关切,正所谓“增之一分则太长,减之一分则太短”。后面跟着的才是学工部长、团委书记等一批干部。此前我虽然见过张彦的做派,但这次看到他众星捧月的阵势还是给我留下了深刻印象。说了几句话之后,张彦慢悠悠地踱着方步,两只手前后大幅度地摆动着,在学工干部们的簇拥下派头十足地走出去了。
张彦除了主管学生工作之外,还主管学校的安全保卫等工作。由于我所在的统战部人员很少,学校有关安全保卫工作的会议一般都是我去参加的。这类会议开得还比较频繁,大概每三个月就要召开一次,一般都是由保卫部长安国江主持的。安国江是部队转业干部,我印象中人还比较朴实,但是一到召开安全保卫会议,我感觉他的主要任务就是不断吹捧张彦。每次宣布张彦讲话前,安国江总要说:“下面请张彦书记为我们做重要指示”,然后我们就开始听张彦慢条斯理地做“重要指示”;有一次在稻香湖酒店开保卫工作研讨会,张彦头一天还没有到会,但安国江提前告诉我们说,明天张彦书记会来给我们“揭示保卫工作的真谛”。第二天张彦讲完话后会场休息,那天天气比较寒冷,我看见他身边至少跟着四五个人,有给他拿着外套的,有拎着皮包的,也有空着手侍立在旁边的;还有一次在外研社培训中心开会,安国江又事先告诉我们说“张彦书记最近对保卫工作又有许多新的思考”。在安国江等人的吹捧下,张彦每次讲话都是自我感觉极其良好,讲起话来拿腔拿调、派头十足。我有时候听一些领导讲话,特别是听一些比较年轻的领导讲话,往往对自己的智商感到怀疑,因为这些领导经常会用一种开导式的语气给我们讲一些浅显的道理,听张彦讲话有时就让我有这种感觉。
张彦近几年的地位还在不断上升,先是2010年兼任了副校长,2011年又在和另一位党委副书记于鸿君的竞争中胜出,当上了校党委的常务副书记,成为了仅次于党委书记、校长之后的北大第三号人物。学校的两办、学工口等部门称呼张彦时,规范的提法都是“张彦常务副书记、副校长”,而不会称“张副书记”或“张副校长”,否则就和其他副职没有区别了。近两年我曾有两次替统战部长参加了学校安全稳定工作一线小组会议,安全保卫会上的张彦已让我难以接受,但是和他在“一线小组”会上的表现相比,还只能算是小巫见大巫。在所谓稳定压倒一切的指导方针下,北大有“安全稳定工作领导小组”,组长由党委书记、校长兼任;在“安全稳定工作领导小组”之下,又成立了“安全稳定工作一线小组”,组长自然由张彦出任。“一线小组”成员是由保卫部、学工部、团委、宣传部、统战部等职能部门负责人组成的,张彦是最高领导。我这些年极少参加学校的会议,偶尔参加过几次,感觉北大的会议有一个明显特点:就是不管开什么会,谁是这个会上的最高领导,基本上整个会议就成为这位领导的个人表演。朱善璐是如此,张彦也是如此。
在这个所谓“一线小组”的会议上,我看到张彦是摆足了派头的,完全是他一个人在发号施令。保卫部长安国江一向以吹捧张彦为能事,虽然他年龄比张彦大了十多岁,但张彦却是毫不客气,一口一个“老安”要如何如何的话,安国江则一直十分认真地记录着“张彦书记的重要指示”;张彦对学工口的干部,更是一副高高在上、颐指气使的口气;2012年叶静漪当上了党委副书记,并接替张彦主管学生工作,她虽然比张彦大了六七岁,但在张彦面前却完全像一个小学生。我参加过的两次“一线小组”会都是有关学生工作的,第一次会上因为叶静漪刚接手,张彦就以一种完全是居高临下的口气对叶静漪说:这次(学生工作的事)还是由我替你说,下次就该你说了,我让你说你就说。叶静漪则十分乖巧地不断点头称是。
我参加的头一次“一线小组”会议上,谈到了部分学生对食堂的拥挤状态有意见,在校园网上发了不少帖子表示不满。其实北大食堂拥挤的主要原因是学生数量增长太快,加上教职工以及大量的聘任、进修人员也需要就餐,食堂面积远远达不到实际需求所致。有一位学工干部提出让聘任、进修等非北大正式人员推迟就餐。只要稍加考虑,这个建议根本不具备可行性,难道北大的食堂要把人分为三六九等?要让一些人饿着肚子等饭吃?但是张彦却说我们首先要考虑自己的学生,然后煞有介事地讨论起这个事情来;我参加另一次“一线小组”会议时临近放寒假了,会上讨论起寒假安全问题。此前由于邹恒甫微博事件,北大的名誉受到了很大影响。邹恒甫微博指责了北大一些院长、教授管不住自己的下半身,虽然有些捕风捉影,但此类事情在北大绝非不存在。于是张彦强调假期对学生宿舍要严格管理,要坚决禁止男女生同居,一经发现要严肃处理,不能又成为北大的负面新闻。我不禁感到有些好笑,北大的院长、教授们的下半身自然要管,学生里即使有人管不住,似乎也不会对北大的声誉产生多大影响。30年前项子明就对学生的此类行为网开一面,张彦上纲上线的态度让我觉得有些小题大做了。
我参加的两次“一线小组”会议都只好提前离场,倒不光是觉得讨论的事情比较好笑,主要还是看不惯张彦举手投足间表现出的狂妄自大、目空一切,用他们东北话说就是太“嘚瑟”了。我虽然一天的领导也没有当过,但级别很高的领导我还是见过一些的,就是当今最高层的领导人中,在他们比现在的张彦更年轻、职务更高的时候,我也是见过几位的,但没有见过像张彦这样的。恐怕只有内心极度膨胀的人,才会有他那样的表现。
我虽然在北大30多年了,但对于北大的许多现状还是有些孤陋寡闻,我在近一两年才听到了所谓“标配”的说法:这些年北大的毕业生能留校从事党政工作的,基本上都有家庭背景,多半是各级官员的子女。如果其家长是司局级干部,就可以称之为“标配”,即标准的配置;如果其家长职位高于司局级,就称之为“高配”;如果是低于司局级的,自然就是“低配”了。一般的平民子弟已经没有多少留校工作的机会,一些权贵子弟更可以在权力的庇护下一路畅通,他们可以被保送进北大,保送读研究生,然后留校工作,进而很快获得提拔,“保送、保研、保留、保提”一条龙服务。张彦作为长期主管北大学生工作的党委副书记,作为一位重量级的实权人物,我不敢说这些事情都是他一手操作的,但如果说出现这些情况和张彦都没有关系,恐怕也不会有人相信。前几年两个经济学院官员子弟保研的事情就牵涉到张彦,一时在网络上被炒得沸沸扬扬,只是后来不了了之了。目前北大的主要领导人中,朱善璐、张彦都是黑龙江小地方出来的,没听说他们有特殊的家庭背景,如果他们是近些年的毕业生,基本上不会有留校的机会,更不用说能坐到现在的位置上。但也正是在他们的把持之下,北大已经基本杜绝了平民子弟的上升通道。张彦在北大干部的选留、提拔、使用、安排方面所起的作用,不是我这个局外人能说的清楚的,但却是很多相关人员都明白的。
在北大目前的领导层中,我认为张彦还是有一定能力的,我曾听他讲过北大的校园管理,认为北大的管理应该体现出文化,不失为有针对性的见解。张彦以34岁的年龄进入北大的领导班子,难免有些年轻得志,特别是他任党委副书记以后的这些年,正是北大彻底走向官僚化体制的时期。作为一位年轻又掌握实权的领导干部,张彦受到了身边很多人的过度吹捧,如果他政治上比较清醒,知道自己今后的路还很长,应该对这些吹捧保持一定的警觉,对权力、利益的运作保持一定的分寸。但我看到的张彦却是完全沉浸在权力带来的快感中,完全没有意识到他的言行、做派已经让很多人看不惯了。他大概和朱善璐一样生活在梦境里,如果不能及时从梦中醒来,恐怕将为此付出沉重的代价。
杨河
杨河是2001年担任党委组织部长的,此前他是马克思主义学院教授、党委书记,不过我不认识他。杨河到组织部以后我才见过他,我看他头发已经完全花白了,以为他岁数比较大,其实当时他只有四十多岁。此后我也只是偶然在一些场合见过他,他2005年底担任了党委副书记,位居张彦之后,随后开始分管统战工作。
2006年前后中文系的孟二冬教授被作为模范教师代表进行了广泛宣传,北大校报在2006年3月出过一期介绍孟二冬先进事迹的专刊,校报的编辑让我为专刊写一篇评论。我对宣传孟二冬的情况也有所了解,就写了一篇《板凳要坐十年冷,文章不著一句空》的一千来字的评论。杨河作为党委副书记还分管宣传工作,每期校报的清样都要报给他审查。也是在2006年初,汉字激光照排技术的发明人,被誉为“当代毕昇”的王选教授因癌症去世了,王选去世时担任着全国政协副主席、九三学社中央副主席的职务。王选的成就和影响力都很大,中央宣传部、中央统战部、教育部等部门组织了一个王选事迹报告团,准备在全国各地宣讲王选的先进事迹。因为王选的主要贡献是在北大完成的,有关的报告稿自然就要由杨河牵头负责了。方正公司此前已经起草了一份王选主要事迹的报告稿,但没有得到认可,于是杨河点名让我负责撰写主报告稿。他对我说看了我关于孟二冬的评论,觉得写的还可以,所以考虑让我撰写。
我接受任务时离预定的报告会时间已经很近了,就在对材料没有充分消化的情况下匆忙动笔,在比较短的时间内起草了两三稿。其间杨河曾对我提过具体建议,例如他提出可以参考恩格斯《在马克思墓前的讲话》中对马克思的评价方法,让我很受启发。报告团一共准备了4份报告,杨河数次召集有关人员开会统稿,有时一边听大家的意见,一边亲自动手在电脑上修改文字,还先后两次和我们一起去教育部开会,听取各方面的意见。虽然我对自己写的报告稿不很满意,但总算是完成了杨河交代的任务。
北大的统战工作按说是由党委书记主管的,杨河只是协助书记分管。但实际上闵维方对统战工作基本不管,也没有专门来过统战部,只有一次接受党建工作检查时陪检查组来过,平时的各项事务都是杨河主抓的。我觉得杨河对统战工作是比较上心的,经常会主动来统战部。北大一般每年召开两三次党外人士座谈会,如果是闵维方、许智宏等人参加,只会泛泛地通报一下学校的事情,也不留多少时间让党外人士发表意见。统战部每年也要召开几次民主党派负责人会议,杨河一般都会参加,他对学校情况介绍的比较全面、具体,对一些大家关心的热点问题会主动进行通报,例如有一次他对季老文物纠纷的情况就做了比较详细的介绍。各党派负责人对杨河的到会是比较欢迎的,北大的民主党派在学校没有任何权力,闵维方、许智宏等主要领导参加相关会议往往只是走形式,杨河的态度则体现了一种对他们的尊重。
杨河在有关统战工作会议上的讲话,通常都有比较充分的准备,能讲一些有针对性的意见。例如有一次他对党员干部讲统战工作方法,提出要做到“明、诚、稳、细、和”,意思是说对统战工作要做明白人,要真心诚意,要稳妥、稳当,要讲求“润物细无声”,要宽容、和谐。如果没有经过认真的思考,恐怕是提炼不出来的。对党外人士希望参政议政,参与学校管理、监督工作的愿望,杨河提出一方面学校应该提供这样的平台,另一方面党外人士自己也要积极争取机会。诸如此类的讲话还有不少,虽然不敢说有多大突破,但大都比较实在。
杨河对我及其他同事也是关心的。2008年底学校调整了统战部的干部,大概是怕我有想法,吴志攀找我谈了话。过了几天,杨河又亲自到我的办公室和我谈话,态度非常诚恳,当时我的妻子和孩子还在外地生活,他对我的家庭情况也表示了关切。我对谋求一官半职早就没有了兴趣,这时候也知道了杨河在干部安排上是没有什么发言权的,我体谅他的苦衷,对他的细心周到表示了感谢。付新以前是北大校医院的党委书记,为人处事很正直、能坚持原则,结果受到了排挤,从正处职的院党委书记安排到统战部做副部长。付新2010年下半年发现患了乳腺癌,杨河知道后非常重视,会同医学部有关负责人一起到北大肿瘤医院,对付新的治疗问题进行了妥善安排。
虽然杨河在学校领导层没有多少实权,但他还是在自己的权限内对我给予了很大支持。我前些年一直在北大校报上零零散散写一些评论,虽然主要是一些批评意见,但口气上还是比较温和的。到了2008年之后,我对学校的状况愈来愈难以忍受,再写此类评论时明显加大了力度,有的文章直接对北大的现状进行了批评。2009年底我写了一篇《北大应以整体改革的形象重铸辉煌》的评论,将近4000字,其中有不少文字是比较尖锐的。校报的编辑看后觉得内容太敏感,担心杨河不同意发。我说你们不妨先拿去试试,结果清样送去审查后杨河未表示任何反对,文章一字不改地得以顺利发表。此后我又写了几篇类似的文章,杨河都顺利地放行了。其间我没有和杨河进行任何沟通,他也没有主动提起过,但他是以默许的态度对我给予了支持。
2011年初统战部部长进行了更替,杨河曾透露过对这次更替他事先是不知情的。此前宣传部任命了两位副部长,我听宣传部的人说他也是不知情的。主管领导过问不了主管部门的干部任免,这是闵维方时期北大干部工作的一个突出特点。从我的角度看,我认为杨河有比较软的一面,不能据理力争,但是设身处地从他的处境考虑,确实也有独木难支、比较为难的地方。在北大极不正常的政治环境下,不好对他有更多的苛求。在新任统战部长在场的某次会议上,杨河除了对新旧两位统战部长进行了充分肯定之外,还对我做了比较高的评价,可以说是一种“力挺”。我明白他是为了让我在新的环境里有比较宽松的空间。
2011年年中在杨河等人的争取下,组织部门算是给我安排了一个正科职的位置,距离首次有人提出给我解决正科级待遇已经过去了二十多年。据说还是非正常操作的,因为统战部按规定是不设内部机构的,尽管其他部门经常可以“因工作需要”任意设置岗位。我当然也没必要拒绝,起码可以增加一些我不知道具体数额的津贴。这时候我对北大的干部运作已经有了清醒的认识,觉得实在没必要为此自寻烦恼,不过杨河还是力图让我更进一步的。朱善璐上任后事必躬亲,倒是能主动参加统战口的活动。2011年底我们举办统战系统新年联欢会,杨河陪同朱善璐一起参加了。我在台上主持联欢会的过程中,杨河在台下又向朱善璐说明了我的情况,并且随即就将朱善璐的表态告诉了我。过了几天,朱善璐专程来统战部,又当场表示要将我的事情在学校领导层里讲一下。我感到奇怪的是北大的干部部门对主要领导人的意见从来是坚决贯彻的,甚至不需要领导人主动发话,为什么在我的事情上多位领导都表了态,但就是没有人落实。当然他们大概是很不愿意给我安排位置的,他们也会揣摩主要领导人未必真想解决我的问题,不过杨河对我的支持一直是真诚的、实在的。
2012年6月北大召开了第十二次党代会,杨河这年58岁了,没有再进入新一届党委,不过他随后出任了教育部社会科学发展研究中心主任,级别也从副局级提升为正局级。在北大近些年来的领导班子成员中,杨河是一位比较难得的有正义感、有较高的理论水平,同时作风上又比较朴实、正派的干部。在北大极不正常的政治环境下,杨河确实很难发挥作用,但他有自己的原则和底线,是一位能让人尊敬和信任的学校领导。
周其凤
我第一次知道周其凤的名字是在1994年召开的北大第九次党代会上,他当选为那一届的校党委委员,但我不清楚他当时的职务。到了1995年,原已确定出任研究生院常务副院长的历史系教授成汉昌突然去世,于是学校决定由周其凤担任这一职务。此后我时不时会在书记办公室看到周其凤来汇报工作,如果赶上领导们正忙,他也会和我们聊几句。我印象比较深的是周其凤虽然个子不高,但看起来很精干,精神头总是很足。我那时候对上级部门过多干预学校的事情有看法,经常遇到有的官员职务不高,也要对北大指手画脚。有一次趁周其凤等领导时,向他请教过这个问题,我以为周其凤要和这些部门打不少交道,或许会有同感。周其凤却表示说既然人家在那个位置上,当然要和人家搞好关系,要尊重人家。原话我记不清了,但大体是这个意思。还有一年学校举行研究生毕业典礼,任彦申突然吐血住院了。我听参加典礼的人回来说,周其凤特别强调了任书记本来是要出席的,但因为住院来不了了,可能还说了其他一些话,被传话的人认为是在向任彦申表示“效忠”。
此后我知道周其凤当选为中国科学院院士,后来又调到教育部工作,先后担任了学位办主任等职,几年后空降到吉林大学任校长。其间我只隐约听说周其凤在吉林大学遭到过抗议,据说以前吉大的教职工子弟如果报考本校,只要成绩达到本科分数线,就可以被吉大录取。这明显是一项违反高考招生政策,违反公平公正原则的做法。周其凤取消了这条土政策,因此遭到吉大部分利益受到损害的教职工的抗议。不管我此后对周其凤有什么样的看法,他取消这项招生特权应该是无可厚非的。
到了2008年暑假前,我接到一位以前在办公楼工作的同事的电话,告诉我他听说周其凤要回北大当校长了。他认为许智宏干的不怎么样,问我周其凤做校长会不会好一些?我首先对消息的准确性表示相信,根据多年的经验,所谓的传闻、小道消息往往都是真的;其次也是根据多年的经验,我认为不要指望换一个领导就能有多大变化,只要不比前一任差就谢天谢地了。到了这年年底,果然周其凤接替许智宏出任北大校长。
虽说北大换不换校长和我没有任何关系,我也早就对他们不抱什么期望了,不过周其凤毕竟是新任校长,他的动向我多少还是会有所关注。很快我就听到了一些消息,先是听说周其凤从吉林大学带了一位秘书过来,我顿时就有些不以为然。我是做过多年秘书的,知道这个职业不需要特殊的专业技能,没有谁是不可替代的。周其凤需要秘书完全可以从两办现有人员中挑选,如果他觉得吉大的秘书跟着自己劳苦功高,也不妨在调离之前予以安排,许多离任的领导都是这样做的,不过是一种人之常情。周其凤从吉大带人过来,起码要解决秘书夫妻两个人的北大编制,解决包括孩子在内至少三个人的北京市户口,可能还要解决其住房问题,而北大的编制、住房,北京市户口都是非常紧缺的资源。秘书熟悉北大的情况又需要一个过程,觉得周其凤实在没有必要舍近求远,“窃为其不取也”。至于听说秘书的妻子被安排在经济效益最好的学院工作,又在党办校办设立了专门的督查室,由周其凤的秘书兼任主任,解决了其正处级待遇。这些已经是后话了。
周其凤任校长后我听过他几次讲话,那段时间我写过几篇文章,主张大学,特别是北大这样的大学要引领时代潮流,推动社会进步。周其凤在讲话中也表达了这样的意思,我不免对他又产生了一点幻想。其实周其凤还是比较实在的,我记得他说过他们给我起草了这个稿子,我照着念一下的话。只是我太渴望周其凤能有这样的想法了,以为他讲的是自己的话,是准备这样做的,但是很快我就明白是我会错了意。
周其凤上任之初我除了听过他几次讲话之外,还在大讲堂多功能厅看到他参加学校教育基金会一位工作人员的个人演唱会,演唱者并不是专业歌手,但是周其凤自始至终没有离开。我觉得他这样重视一位普通职员的非专业演出,还是很能放下身架的;另外我有一次在大讲堂看北大师生演出,演出结束后周其凤上台同演职人员握手,握过第一排后又绕到第二排继续握。虽然觉得他没必要去第二排,但看上去确实是很随和、很亲民的。或许是那段时间周其凤对文艺产生了兴趣,愿意出席文艺活动。到了2010年下半年,忽然在学校新闻网上看到他写了一首《唱给妈妈的歌》,歌词是:妈妈,亲爱的妈妈

今天是你的生日,孩儿不能回家,不是孩儿不牵挂,不是孩儿不想妈

世上让儿陶醉的是你温馨的气息

给儿力量的是你轻柔的双手

催儿奋进的是你期待的目光

还有你绵长的唠叨就像孩儿总也没有长大

世上孩儿惦记的是你安康和吉祥

总担忧的是老房屋四季的暖凉,总揪心的是家乡暴雨和骄阳

还有你行走的路上,那些满眼飞驰的车辆

妈妈,妈妈,妈妈,妈妈

不是孩儿不牵挂,不是孩儿不想妈

只因不敢辜负你养育和期望

我不了解周其凤写这首歌的背景,觉得他有许多比写歌词更重要的事情要做。歌词给我的感觉如同白开水,没有什么味道,也没有什么内涵,是任何一对母子之间都可以有的一种普通情感,但看上去也还文从字顺。有作曲家为歌词谱了曲,由军队歌手刘一祯演唱,还在北大搞了一场刘一祯个人演唱会,主打歌曲就是这首《唱给妈妈的歌》。周其凤也在演唱会上清唱了这首歌,据说现场效果不错,但是没有在更大范围内引起反响。
真正让周其凤曝得大名的是他2011年写的《化学之歌》。大概是受了上一年《唱给妈妈的歌》的鼓舞,周其凤作词的兴致越来越高。2011年是国际化学年,周其凤作为化学家、北大校长自然要参与其事。可能是有人提议周校长既然写过歌词,应该也为国际化学年写一首歌。周其凤欣然允诺,于是就有了那首火爆一时的《化学之歌》,其词曰:
化学究竟是什么 化学就是你 化学究竟是什么 化学就是我
  化学究竟为什么 化学为了你 化学究竟为什么 化学为了我
  化学究竟为什么 化学为了你 化学究竟为什么 化学为了我
  父母生下 生下的你我 lalala 是化学过程的结果
  你我你我 的消化系统 lalala 是化学过程的场所
  记忆和思维活动 要借化学过程来描摹
  要借化学过程来描摹 描摹描摹
  即便你我的喜怒哀乐 也是化学神出鬼没
  也是化学物质的 神出鬼没
  化学 你原来如此神奇
  哦 化学 难怪你不能不火
  哦 四海兄弟 我们携手努力
哦 为人类的航船 奋力扬波
  你我你我 要温暖漂亮 lalala 化学提供
衣装婀娜
  你我你我 要吃足喝好 lalala 化学提供
营养多多
  你我要飞天探地 化学提供动力几何
  化学提供动力几何 动力几何
  即便你我的身心健康 也是化学密码解锁
  也是化学为生命 密码解锁
  化学 你原来如此给力
  哦 化学 难怪你不能不火
  哦 四海兄弟 我们携手努力
  哦 为人类的航船 奋力扬波 奋力扬波
既然周校长亲自做了词,当然不会没有捧场者。很快就有人为歌词谱了曲,并组织北大的学生艺术社团——中乐学社排练为合唱节目,还在国家大剧院进行了演出。过了一些日子,不知是哪个好事者将演出视频放到网络上,顿时引起轰动,周其凤立刻成为网络上最热门的人物。有关《化学之歌》的评论更是铺天盖地,有称其为北大校长“神曲”的,有说其歌词“雷人”、“天雷滚滚”、“斯文扫地”的,有攻击谩骂的。我看了以后也觉得歌词过于粗鄙,不伦不类,出自北大校长之手实在令人难以接受。尽管近年来北大的声誉早已江河日下,但在一般社会公众的心目中,北大、北大的校长还是被作为一种文化符号看待的,但结果却是他们看到了这首《化学之歌》。
周其凤不是不能写歌词,如果他能将《化学之歌》写得既有哲理,又有文采,未尝不可以让人赞叹“到底是北大校长的水平”。当年毛泽东的《沁园春·雪》在重庆发表后,顿时轰动山城,尽管对其评价可以见仁见智,但客观上确实为共产党树立了文化方面的形象;假如毛泽东拿出的是像有的领导人那种附庸风雅的诗词,恐怕同样会引起轰动,只是轰动的效果会不一样。当年的共产党虽然不乏一些受欢迎的政治主张,但一般人并不了解来自延安山沟里的他们有多高的文化;而一向被视为是文化重镇的北京大学,其校长拿出的却是极没有文化含量的《化学之歌》。
然而周其凤并不认为《化学之歌》有什么不妥,我多次听人说周其凤在很多场合都主动提起他的《化学之歌》,对人们为什么会讽刺批评他毫不理解。2012年初学校召开全国人大代表、政协委员座谈会,我又亲耳听到周其凤向与会者抱怨此事,认为他的《化学之歌》为宣传国际化学年做出了贡献,很委屈地说不仅不应该骂我,而且“应该表扬我”。如果周其凤没有北大校长的身份,只是一位普通的化学教授、不知名的中科院院士,以他《化学之歌》的文字水平,肯定是不会有人请他写歌词的,更不会有人张罗着为他谱曲、排练、开演唱会。热衷此道者看中的无非是周其凤的身份,但遗憾的是他似乎并不明白这一点,更不明白他作为北大校长是不可以这样没有文化的。
虽然《化学之歌》让周其凤饱受抨击和挖苦,但他倒颇有些愈挫愈奋的心气,创作热情并未因此而稍减。于是2012年周其凤又写了一首《妈妈的油茶果》,歌词是:
在山溪旁的油坊里水车吱扭吱扭地旋转着

妈妈背回的茶果哟

榨出了滴滴香油,留下了饼饼茶枯

洁白的油茶花开了又落

化作妈妈年年的果

油茶果的背篓里

装满着妈妈的希望,妈妈的我

在我远行的日子里

妈妈一天一天地变老着

妈妈捎来的茶油

炒香了我的饭团,陶醉了妈的爱抚啊,

在高山深处的悬崖陡坡

长着妈妈的油茶果

油茶果的油汁里

饱和了妈妈的眼泪

妈妈的苦

不知道是不是有高人指点,这首歌词的水平比前两首有了明显提高,词意雅致了不少,表达也比较含蓄了。如果周其凤的前两首歌词能有这样的水平,或许不会受到太多批评。《妈妈的油茶果》照例有人谱了曲,由更大牌的湖南籍歌唱家宋祖英演唱并灌制了唱片,不过没有引起多大关注。我还听说周其凤在许多场合都会主动谈起他的这三首歌,以此博得人们的夸奖和赞誉。2011年注定是周其凤火爆网络、名声大噪的一年,其实他在化学歌中就预言了“难怪你不能不火”,只是“火”的并不是化学而是他本人。《化学之歌》余音未绝,2011年年底周其凤又在长沙市第一中学作了一次两个多小时的演讲。据报道周其凤此行是去为北大招生做宣传的,他在演讲中说“美国的教育一塌糊涂”,此言一出立即又引起舆论大哗。大概这个观点太惊爆眼球了,很多人不相信是出自北大校长之口,怀疑是不是媒体断章取义了。我专门核对了一下,周其凤的原话是这样说的:“现在大家都觉得美国的教育好,我们也在向美国学习,什么哈佛、MIT等等,其实美国的教育也不是那么好。它有它好的地方。怎么讲?美国的教育对于培养合格的或者说优秀的美国公民,这是很成功的,因为为美国培养了那么多人才,把美国建成为这么一个很霸气的强国。但是如果是从我们现在是个地球村,在培养世界公民这个角度来说,我认为美国的教育是一塌糊涂。它培养的人,也就是说他们感到骄傲的是他们的总统,哪个总统懂得尊重人家?就想欺负人家,就想把它的价值观强加于人,就想按照美国说怎么样就怎么样办。所以,从这个角度来说美国的教育是一塌糊涂,这是我的看法。”
作为在美国大学接受过教育并获得了博士学位,又身为北大的校长,周其凤的这番言论的确令人无语。我没有去过美国,更不懂美国的教育,美国的教育也不可能是尽善尽美的,不是不能批评,但美国毕竟是世界公认的教育强国,而中国的教育则一直饱受非议。作为代表中国教育最高水平的北大,其校长即使要批评美国也应该有一定的层次和水准。我们姑且看看周其凤的批评,他认为美国的教育之所以一塌糊涂是因为培养了不懂得尊重人,就想欺负人家的总统。这就有些莫名其妙了,美国的大学每年总得招收上百万名学生吧,美国立国以来的总统不过四十多位,莫非美国大学有未卜先知的能力,事先就知道谁会当总统,大学期间就开设了将来怎么当总统的课程。再说凭什么认为美国人“感到骄傲的是他们的总统”,反倒是批评总统的言论随处可见。至于美国的总统是否尊重人、欺负人,将他们的价值观强加于人,主要考虑的恐怕是美国的国家利益及全球战略,同大学的培养似乎没有多少关系。
我不知道周其凤对美国的历任总统知道多少,太远的姑且不说,罗斯福支持中国的抗战算不算欺负人?尼克松以朝圣般的心态拜见毛泽东,亲手为周恩来脱大衣算不算不尊重人?周其凤的这番言论无论从史实上还是逻辑上完全讲不通,自己说的话倒是“一塌糊涂”的。当然周其凤这样讲也并非全无目的,他不过是站在某些官方机构的立场上,根据某些官方人士的口径鹦鹉学舌般地表达对美方的不满,实际上也是在显示一种对体制的“效忠”姿态。他的言论同任彦申设计的对克林顿的提问如出一辙,但其技术含量又远在任彦申的问题之下,而且是亲自披挂上阵,不免显得更加荒唐可笑。
周其凤虽然屡遭抨击,但还是不肯低调。我甚至有一种感觉,如果隔些日子没有出现关于他的热点新闻,似乎都有些不正常。果然到了2012年暑期,周其凤回湖南老家为母亲祝贺90岁大寿,祝寿过程中他突然跪倒抱住老母亲痛哭的图片再次成为网络热点。周其凤是农家子弟,他从湖南农村考上北大,并一步步走到大学教授、中科院院士、北大校长的位置,的确离不开母亲早年含辛茹苦的抚养之劳。周其凤对母亲的感情非同一般,他的三首歌里就有两首是写给母亲的。但祝寿毕竟是私人的事情,周其凤作为北大校长、公众人物,如此高调地为母亲祝寿是否合适?楚人项羽曾有“富贵而不还故乡,如衣锦夜行”的感慨,同为楚人的周其凤在大庭广众之下为母亲祝寿,是否也很能找到些衣锦还乡的感觉?周其凤祝寿似乎也不完全是私人行为,有眼尖的人很快在图片上发现了北大某校办公司老总的身影,莫非也是专门去为周母祝寿的?
按理说周其凤衣锦还乡为高龄母亲祝寿,应该是一件非常高兴、极有面子的事情,但是周其凤却突然跪倒抱住老母亲痛哭,实在有些令人费解。有人将其解读为周其凤事母至孝,是孝心到深处的自然流露,也有人认为他是在有意炒作。以周其凤公众人物的身份,如此表达孝心的举动还是在私底下更合适一些,另外他在公开场合为老母亲祝寿,炫耀之心可能有一些,但没必要以这种方式进行炒作。我以为可能的情况是周母虽然年纪很大了,但并不糊涂,可能也或多或少听到了一些对周其凤的指责,老人毕竟心疼儿子,祝寿过程中说了一句“有困难就回家来,妈妈还在”。这句话一下子触及到周其凤的内心深处,他本来就对舆论的指责很不理解,感到非常委屈,虽然他向许多人诉说过委屈,甚至向某些高级领导人诉说过,但是没有任何人能代替自己的母亲。于是周其凤一下子仿佛回到了童年时代,在外面受了委屈,回到家里扑到妈妈的怀里寻求安慰。所以才出现了抱头痛哭的一幕。
周其凤的一系列言行不断受到激烈的批评和质疑,甚至出现了丑化他的漫画。还有人将一张他陪同李克强、刘延东视察时,从人丛中探出头来一脸灿笑的照片发到网上,并配发了一张胡适翘着二郎腿和蒋介石并排坐着的照片,作为新旧两位北大校长的鲜明对比。其实这两张照片体现的不过是胡适、周其凤内心境界的自然流露。我不知道周其凤对他的这位前任了解多少,胡适不仅在中国思想文化界影响巨大,而且他是敢于对国民党政府、对蒋介石本人提出批评的。虽然如此,胡适在蒋介石那里却得到了充分的尊重,抗战时被任命为驻美大使,抗战后任北大校长不久,蒋介石请他出任考试院院长,胡适拒绝了。1948年国民党召开行宪国大,蒋介石更是提出请胡适出任总统,自己做行政院长,只是因为在国民党内部遭到反对才没有实现。当年的北大校长没听说有行政级别,但胡适就是做总统好像也不存在身份障碍,在蒋介石面前他是有完整人格的,所以可以和蒋介石平起平坐;周其凤却只知道自己是副部级的北大校长,他流露表现出来的是一种下级对上级的“效忠”姿态,于是在高官身后探头灿笑就再自然不过了,只是他的神态在当今的官场上也显得过于夸张了。
这几年出现过取消高校行政级别的说法,周其凤也曾表示他支持取消高校的行政级别,但又说在整个社会等级观念非常强的情况下单独取消高校行政级别,教育家将得不到社会的应有尊重。他还不无委屈地表示待遇是与行政级别联系的,取消级别后,开会要习惯坐最后一排,坐飞机不能再走VIP通道。周其凤的这些看法其实不值一驳,他首先混淆了大学校长和教育家的概念,中国多得是大学校长,却几乎没有真正的教育家,所谓的教育家不受尊重完全是一个伪命题。再说北大、清华这些名校的校长,本来就应该有很高的社会地位。1987年我去过河北正定北大学生军训的38集团军某部,部队的人问是丁石孙官大还是秦基伟(时任北京军区司令员)官大,当时的北大校长只是地师级,不过相当于部队的师长。问这样的问题至少说明他们认为北大校长应该地位很高,好在后来秦基伟、丁石孙先后当了全国人大常委会副委员长,算是平级了。
北大、清华这些名牌大学的校长只是地师级确实太低了,于是1999年将一些重点大学的党委书记、校长升格为副部级。其实这是一项完全违背大学特点,背离大学的改革方向,将大学进一步纳入行政化体系的举措。开始只有十几所,后来扩大到三十多所,实际上越来越成为教育主管部门解决其司局级官员出路的主要渠道。只要看一看近年来有多少教育部的司局级官员空降到这些大学任党委书记、校长,就不难明白这一举措的真正含义,周其凤本人就是由教育部司局级的学位办主任空降到吉林大学任副部级校长的。当然周其凤是很在意他的副部长级别的,他不知道北大校长可以有远比副部级官员更高的声望和地位,更广泛的社会影响力,更无法理解蔡元培、胡适这些前任们的思想境界和精神追求。
2013年3月,周其凤在一片非议声中卸任北大校长。他卸任后我听一位化学学院的退休教授说:当初周其凤回北大时,他在化学学院的同学、同事们普遍不看好,认为他不具备当校长的能力。但是周其凤能否做北大的校长,不管是了解他的同学、同事,还是其他的北大师生,都是没有任何发言权的。
周其凤卸任后我只见过他一两次,2014年初他作为全国人大代表参加了学校召开的“两会”代表、委员座谈会。周其凤讲话直率的特点还是没有改变,我感觉他对北大现任的两位主要领导明显不满,所谈的问题也不无道理。他对所谓的《高教法》提出了质疑,认为其中的一些条目完全经不起推敲,他也不赞成在各种关系都没有理顺的前提下匆忙制定《大学章程》。虽然周其凤的见解未必有多高明,但起码是合理的,是有正常分析判断能力的。但是过了没多久,到了2014年5月,周其凤在面对湖南北大校友的谈话中,又一次旧事重提,对他批评美国的教育等问题进行了辩解,还指责说“我们现在有一部分国民很可悲,可以骂自己的娘,但却不可以骂美国”。对自己受到的批评仍然耿耿于怀并且没有任何反思。
其实我倒觉得周其凤是一位很有个性、很有活力的人,也不乏几分率性和天真。但是他对于北大校长身份的敏感性,对于当今社会的多元化显然缺少认识,以为自己想做什么就可以做什么,想说什么就可以说什么,只要懂得“效忠”就行了。周其凤既是被“捧杀”的,如同《皇帝的新衣》中那个不知道自己什么也没有穿的皇帝,同时又是被“骂杀”的,北大的历任校长加起来恐怕都没有他那么多的骂名。但是不管是对“捧”还是“骂”,周其凤都始终不明所以,完全迷失了自我。如果周其凤只从事化学专业研究,未尝不可以是一位很有个性的学者,或许还会在北大留下一些传奇。但是他却很不恰当地被推上了北大校长的位置,只能让他在北大的历史上留下很大的笑柄。如果不能从根本上改变大学校长的任用方式,不能彻底改变大学官僚化的管理体制,周其凤这样的校长肯定还会不断产生。在这些校长们的带领下,正在“创建世界一流大学”的北大,或许还包括其他一些国内的大学,都将越来越成为世人的笑柄。
朱善璐
 
朱善璐是哲学系1979级的学生,大约在1982到1983年之间,他是北大的校学生会主席。学生会主席当时在我眼里就是很大的官了,我这样的小干事一般是见不到的。我记得有一次开会时朱善璐走了进来,他戴着一顶军帽,年纪看起来比我们大许多,但不记得他讲没讲话。后来我知道他是1953年生人,当时已经快30岁了。朱善璐1983年大学毕业后留校工作,任校团委副书记。
1985年秋天新生报到入校的时候,有一天晚上我在学生宿舍区遇到朱善璐,他当时已升任为校团委书记。朱善璐知道我是刚到党委办公室工作的,跟我说他要去新生宿舍看一看,让我和他一起去。我们去了中文系的女生宿舍,当年中文系破格招收了几个少女作家,我们见到了其中的一两位,只是她们虽然当时很引人关注,但后来都无声无息、泯然众人了。不过我对朱善璐喜欢到处跑、闲不住特点留下了最初的印象。
从1985年9.18学潮开始,北大进入了学潮比较频繁的时期。其间朱善璐先是任校团委书记,后来又接替郭景海当了学工部长,是学工口的重要干部,应对学潮应该是他的主要工作。我经常会在党委办公室看到朱善璐,不过除了那次他受到王孝庭的严厉训斥之外,我对他别的事情倒没有太多印象。1988年暑假前发生了柴庆丰事件,朱善璐处理这次学潮时累病了,听说是得了心肌炎,只好离职休息,还曾经离开北京去外地休养过一段。本来他的病不太严重,但是我听学工部的人说朱善璐病情刚有好转,就进行了跑步锻炼,想尽快恢复体质,结果跑了没几天引起心肌损伤,不得不彻底病休。这一下就休养了好几年,直到1992年前后才开始恢复工作。
我早些时候对朱善璐了解不多,只知道他工作上非常投入,经常没日没夜地干,不过也能感觉出他迫切希望上升的心态。1977年恢复高考之后,最初的几届北大学生可谓是天之骄子,当时北大每年招2000左右本科生,研究生极少,四个年级的在校生共8000多人,号称“八千精英”,学生会的主要干部更被视为政治明星。北大学生会一般每年换届一次,由从高到低的各年级学生依次担任主要干部:1977级是张炜担任学生会主席,李克强任副主席兼常代会会长;1978级是潘维明任主席。张炜一毕业就去天津任团市委书记,后来又做了天津经济开发区管委会主任;李克强尚未毕业就担任了校团委书记,不到两年调团中央任书记处候补书记;潘维明则接替李克强任团委书记,不久调回上海,短时间内就当上了上海市委宣传部长。美国《时代》杂志曾将他们预测为中国未来的政治领袖,只是后来张炜、潘维明因为各种原因离开了政治舞台。到了我入校的1981年,大学生没那么稀缺了,北大学生的“精英”程度也有所降低。不过我们在入学典礼上听学工部长刘崑讲话,还是说北大学生将来是要担负党和国家重要职责的,顿时让我们十分激动,全场响起了非常热烈的掌声。
作为1979级学生,朱善璐继张炜、潘维明之后担任了学生会主席,不过未来的政治领袖毕竟不可能太多,到了朱善璐毕业的时候,就没有再得到特别的安排。只是前面有张炜等人迅速升迁的参照,朱善璐难免也对自己抱有很大的预期。本来朱善璐生病后应该好好休息,但他却急于锻炼身体,要尽快恢复工作,实际上是非常迫切地想回到权力的竞技场上。他的心态是可以理解的,可惜从效果上看是欲速不达、事与愿违。
朱善璐病休期间我见他的次数不多,只记得1989年政治风波期间我去他家里送过材料,他当时住在未名湖北边全斋的平房里。朱善璐笑着和我说他是“家徒四壁”,我一看确实如此,不大的房间显得空空荡荡,不多的几件家具更是十分简陋。朱善璐虽然养病,还是很关心时局,我记得也和他说了现在情况不明朗,请他安心养病的话。当时北大教职工普遍待遇低下,朱善璐又上有老、下有小,加之需要养病,家庭经济状况自然更紧张。后来朱善璐身体恢复后当了组织部长,家里没有电话不行,但当时安装一部电话需要五六千块,朱善璐实在掏不起这笔钱,最后听说是由单位出钱给他装了电话。
朱善璐毕竟是学生会主席出身,虽然没有像别人那样平步青云,但从政的起点还算比较高,又当过团委书记、学工部长,所以他恢复工作后就被任命为组织部长,不到一年就升任为校党委副书记。朱善璐当了副书记之后,我作为党委秘书对他才有了比较多的接触和了解。
朱善璐任副书记后主管学生和组织工作,这两项工作事情都比较多,以往是由两位副书记分别主管的,朱善璐却是一身二任。学生工作关系到“稳定压倒一切”的既定方针,朱善璐上任时学潮的余波犹在,凡是涉及到学生的事情上面都高度重视,朱善璐自然要竭力表现;组织工作则要面对全校上百个院系、部门,班子换届、干部调整几乎随时进行,更是一项头绪繁多的工作。朱善璐如果有比较强的能力,能够处理好主次关系、轻重缓急,而且善于用人,一身兼二任也未尝不可。但是这位老兄对待工作却是从来不讲章法,眉毛胡子一把抓,往往越抓越忙、越抓越乱。
我在朱善璐身边时发现他的一大特点是几乎没有时间观念,他每天都从早到晚把日程排得满满的,或是开会,或是找人谈话,或是外出,但一般都是前面的事情还没完,后面的时间就到了,于是不断往后拖延。那时候校领导们没有专车,朱善璐外出时让我向车队要车,例如他要求司机下午5点来接他,但是到了6点,他前面的日程还在进行中。如果偶然几次这样倒也罢了,但朱善璐却从无例外,推迟一小时出发对他来说算是基本正常,往往还要继续拖延。等候的时间长了,司机们也会烦躁,我经常要向上来询问的司机解释,他们也只好叹息着下去接着等。有人约好了或临时来找朱善璐,但他又往往不在,等不及了只好托我传话。此后的一段时间里,我明明随时看到他进进出出,但就是找不到一刻可以插话的时机,或者和人谈话,或者打电话,好容易看他谈完了、打完了,我正想上去说话,他又急着赶往下一场活动了。就这么过了三五天或者更长时间,我硬是和他说不上话,如果事情没那么要紧,也就只好拖过去了。
时间一长,我发现朱善璐的工作方式有有意为之的一面。虽然他负责的头绪比较多,但也到不了需要没日没夜的程度,他这样做更多是在显示一种姿态,显得他比谁都忙,比谁都投入,以此获得领导上的好感和赞赏。当然思维上的混乱、能力上的不足也是造成朱善璐忙乱不堪的重要原因,例如他和人讲一件事情,能力强的领导三言两语就说清楚了,他可能要反复强调半个小时,他打一个普通的电话往往就需要很长时间。我曾听见他和时任团委书记王登峰通电话,听见他交代召开学代会、研代会的事情,说要把这两个会开成团结的会、向上的会、鼓劲的会等等,一下子说了有五六个词。我记不住那么多,总之都是些社论上的语言。
朱善璐的另一大特点是非常热衷于拉关系,尤其是喜欢和领导人拉关系。有时候他的办公室堆得东西太多,我作为秘书只好帮他清理一下,时常会在他的办公桌上看到一些领导人的名片,其中我看到过某些省委书记、省长的名片。朱善璐去外地时往往主动去找当地省级领导,他毕竟是北大的副书记,这些领导一般也会给面子。1995年暑期朱善璐带学工口干部去辽宁葫芦岛市考察,我也跟着去了,参加考察的人分乘一辆大巴和一辆中巴从学校出发。我们一到葫芦岛市界,就有地方上的官员来接,还享受了警车开道的待遇。那次出行我沿途在一些市县交界处,经常看到有小车停在界碑前,有时还有警车,小车上的人分别下车握手,或是欢迎,或是告别。我才知道官场上的很多迎送,已经不在政府所在地了,而是延伸到了其管辖的边界上。我们在葫芦岛市也得到了当地高规格的接待,每到一处食宿条件都很好,朱善璐善于拉关系的特点确实发挥了作用。回京时路过某驻军部队所在地,大概也是朱善璐事先联系好了,我们在部队营房住了一夜。为了给我们腾出住宿的地方,士兵们出去拉练了,第二天上午还安排我们打了靶。总之我们在朱善璐的带领下,兴致勃勃地完成了这次考察,至于都考察了什么内容我倒是没有任何印象了。
大约在1995年下半年朱善璐到中央党校学习了几个月,他所在的班上都是和他职位差不多的各地官员。学习期间朱善璐回来说要带班上的同学到北大参观,让我联系安排了参观路线。参观当天他向任彦申汇报了,说带党校的同学来北大看看,这些人以后可能对北大有帮助。任彦申说了一句那有什么用就忙自己的事去了。那天朱善璐不知又有什么事,让我先带他们到各处参观,晚上在勺园餐厅用餐时他再过来。晚饭开始时朱善璐还没有到,但他让学工口安排了一些女生晚饭后陪着唱歌。结果我们在包间吃饭时就到了一拨女生,我只好出来让餐厅拿一些饮料让她们在外面等,不想等我们吃完饭后又来了一拨女生。大概是学工口之间没有协调好,分别安排了两批女生前来助兴,最后只好让两拨女生都进来了。不过这批官员们还比较收敛,倒是没有看到他们对北大女生有过分的举动。
那天朱善璐席间反复强调了一个意思,说你们都是很有实力的,北大没什么资源,不过各位如果需要拿个什么学位,我们可以提供帮助。那时候许多官员已经热衷于读学位了,我多次听到朱善璐接待各类官员时,都要向他们表示说北大可以帮助拿学位。其间他本人也读了政治学系的博士研究生,他没有硕士学历,是直接读博的。朱善璐回北大任党委书记后,我在一次会上听他说他的博士学位没时间读,后来看到社会上对官员读学位有很多批评,他觉得自己再读下去不合适,就主动放弃了。
1996年暑假前后朱善璐调任为海淀区委副书记,他临走前北大学生中有一点动态,具体是什么事我记不清了,无非是涉及到了稳定。当时兼任北京市委书记的尉健行发话说让朱善璐先不要上任,处理好北大的事情再走。有了高层领导的指示,朱善璐立刻兴奋起来,加班加点,大会小会上进行布置。但是他又没有什么新鲜内容,无法就是反复强调北大要稳定之类的话,有的会上一讲就是三四个小时。其间我和党办副主任李宝珍在办公楼前遇到一位系总支书记,他大概是连着听了几次朱善璐讲话听烦了,和我们说能不能劝劝老朱,讲话不要那么啰嗦了。我们也只能表示无奈。
朱善璐对于上面的任何指令都是极其重视的,“唯上”是他非常显著的一个特点。北京市委教育工委是一个主管思想政治工作的部门,以前叫市委教育部,在上世纪八十年代取消市委工业部、农业部等部门时曾考虑过要一并取消。有人认为大学的思想政治工作很重要,关系到“稳定压倒一切”,于是改名为市委高校工委得以保留,后来又更名为教育工委。我和这个部门断断续续打过近30年交道,虽然他们的名称、人员已经多次更替了,但其工作思路和方法却从来没有改变过,只要有一点小事被他们知道了,一定要寻根问底,上纲上线,把芝麻看成西瓜,把蚂蚁当作大象。然后不断发出指令要求北大做工作,这些指令往往十分刁钻,要么无法执行,要么让人难以接受。假如一件事情可以有多种方式进行处理,他们一定会选择其中最简单、最生硬、最愚蠢、最能激化矛盾的方式,至于“做工作”的实际效果则不在他们的考虑之列。我就亲历过有人不过是略有一点想法和动向,被他们要求不断“做工作”,做着做着就做到彻底的对立面去了。其实不光是教育工委,许多党政部门在处理思想动态、安全稳定问题上几乎都是这种思路,结果都是不断激化矛盾、制造对立面。
有一次教育工委还不知道北大的某件事(具体事情我想不起来了),但是朱善璐却要主动汇报。我平时写这类材料早就写烦了,向朱善璐抱怨说这点小事还用得着汇报吗?朱善璐则语重心长地对我说,(这件事)汇报了,出了问题就没有我们的责任,要是不汇报,出了问题就是我们的责任了。后来朱善璐当了教育工委的书记,我认为倒是一种比较合适的安排,他们之间可谓相得益彰,朱善璐肯定会对教育工委的风格完全接受并发扬光大的。
朱善璐离开北大后,先是当海淀区委副书记,后来当了书记,然后做了北京市委常委、教育工委书记。那些年我基本上没见过他,只有一次我去家园食堂吃饭,意外地看见朱善璐一个人坐在食堂的一角,看样子是在这里刚吃完饭。我想和他也没什么可说的,就不必过去打招呼了。北京奥运会前我在学校新闻网上看到朱善璐来北大体育馆视察,这个馆将举办奥运会乒乓球比赛,当时刚刚建成。我看到报道上说朱善璐指出乒乓球馆的建设要体现绿色奥运、科技奥运、人文奥运的理念,感到虽然这么多年过去了,朱善璐还是没有什么长进,还是只会讲一些官话套话。再说乒乓球馆已经建成了,这些话也不适合事后才讲吧。
此后不久看到朱善璐调任为南京市委书记。我觉得像他这样既没有能力又很喜欢揽事的官员,在教育工委这类政工部门干能量还有限,到了南京这样经济发达,又有近千万人口的大城市,朱善璐折腾起来的代价可就大了。他在南京的情况我不了解,不过2011年我见到任彦申时听他说过:朱善璐喜欢往下面跑,看到老百姓生活有困难倒是很热心,提什么要求他都满口答应,但是回去后他就把说过的话忘掉了。市委书记说话不算数,造成了很不好的影响。极端的例子是他答应为某人解决住房,但是按政策又无法落实,市里只好买了一套房子替他圆场。另外2013年落马的季建业,就是在朱善璐任市委书记时当上南京市代市长、市长的。以朱善璐的观察判断能力,对季建业违法乱纪、包养情妇之类的事情或许难以明察,但是他总不会不知道季建业在南京砍梧桐树,大拆大建,大搞政绩工程的行为吧。不过朱善璐也一直是喜欢做表面文章的,在热衷于政绩工程方面他不会和季建业有多大区别。
北大党委书记在闵维方任职后期就一直传说要换人,但是等到很多人都不耐烦了,新的书记人选还是没有浮出水面,据说是一直找不到合适的接替者。当然在现有的干部体制下,北大的书记、校长只可能在极有限的范围内进行选择,想选出众望所归的人选并不比中彩票的概率更高。虽然我早就对任何一位新任书记、校长不抱期望了,但是当我听说朱善璐要回北大任党委书记时,还是感到了深深的失望。我对朱善璐有一定了解,知道他思维层次非常肤浅,做事情没有任何章法,由他当北大的一把手,只会让北大乱上加乱。我当时就说恐怕过不了多久,北大的人就会念闵维方的好,起码闵不至于整天折腾。我还和同事们说最好不要让朱善璐关注我们,任何事情汇报到他那里,没有他不重视的,但也没有他真重视的,如果他经常过问我们的工作,就会让我们非常忙乱,而这种繁忙通常都是毫无意义的。很快我的这些看法就变成了现实,只是其严重程度远远超出我的预计。
朱善璐当副书记时毕竟资历还浅,北大的官场风气也远没有现在浓厚,再说他不是北大的最高领导,虽然能力差一些,讲话啰嗦一些,毕竟还能有些分寸。到了朱善璐当过海淀区委书记、北京市委教育工委书记、南京市委书记再回到北大的时候,他已在地方官场上历练多年,虽然还是没学到什么领导艺术,但毕竟体会了一把手的权力滋味;同时北大的风气也发生了巨大变化,形成了完全唯领导意图是从的官僚化体制,学校的整体氛围已经能够充分满足他的欲望,他可以不受任何制约地天马行空、为所欲为了。
同以前一样,朱善璐在工作安排上还是没有任何章法,而且更加任性,预定的日程说变就变、随时在变,不到最后时刻都无法预计。以前朱善璐当副书记时让我通知开会,如果交代的比较早,我多半拖几天再通知,他经常会改变原来的计划。但是现在的朱善璐早已今非昔比,不是光推迟开几次会的那点能量了。
2012年春天朱善璐计划去香港,日程、机票都定好了,统战部长也要随他出行。本来他们预定在某个周三出发,到了这周周一上班时,我听部长说他们不去了。朱善璐这次去要会见曾荫权、李兆基等政商界要人。李兆基此前为北大捐款2亿元建起了人文学苑,曾荫权本来没必要见他,但朱善璐提出他一定要见到特首。于是北大外事部门动用了大量关系,终于安排了他和曾荫权会面,但谁也没想到朱善璐突然决定不去了。据说外事部门的人一闻此讯,连“跳楼的心都有”。北大对外交往中还从来没有出现过如此失礼的情况,外事部门只好给港方人士一个个发函致歉,并多方设法补救。朱善璐取消香港之行并非遇到什么天大的事,我注意了一下此后几天他的活动安排,他是去北大深圳研究生院参加了一次普通的活动,其间见到了政治局委员、广东省委书记汪洋,也只是一次礼节性会面。
朱善璐虽然善变,但有一点他是从来不变的,那就是以结识、会见各种高官、政界名流为最大满足。大概朱善璐认为汪洋比曾荫权官大,所以他为了见汪洋而可以不见曾荫权、李兆基,这样在别人看来极为反常的事情对朱善璐来说其实是完全正常的。听说他还让外事部门给他安排会见克林顿、潘基文,外事部门也颇感为难,姑且不论他见克林顿、潘基文有什么实际意义,光是和克林顿的见面费就需要一笔不少于10万美元的资金,这笔钱从哪里出?所幸到目前为止还没有听说他见了克林顿。朱善璐实际上是以北大的地位、资源满足他追逐高官、名流的个人愿望,他唯一考虑只是他们的地位和名气,为此他可以改变所有的既定安排。
2012年暑期统战部组织了一批党外人士去江西考察,行程已经安排好了,朱善璐得知后表示他要和党外人士在井冈山开一次座谈会。为了满足他的时间计划,我们只好改变原定行程,退掉已经订好的车票,把原打算第一站到的井冈山改为最后一站,另外让几位不参加考察活动的民主党派负责人专程飞赴井冈山,参加为期半天的座谈会。这类座谈会朱善璐上台后我参加过几次,基本上都是他一个人讲一些大话套话,其他人只需要附和着表几句态就行了。就是这样一次毫无意义的座谈会,我们不得不为此改变既定行程,付出更大的工作量和资金投入,只是为了满足他又一次的个人表演。而且朱善璐当时还要求第二年的考察必须去延安,别的地方都不行,于是党外人士2013年只好去了延安,所幸的是这一次他本人没有去。
2013年上半年朱善璐让我们筹备召开全校统战工作会议,说是要重视统战工作。其实重视不重视根本不在于开会,做一件实际重视的事情可能比开十次会都有用,但是朱善璐的重视却只有开会。朱善璐当面和主管副书记、统战部长确定了会议日期。我一看时间已经很紧了,对他的善变也有些麻痹了,就马上预定了会场并交了押金,与此同时我们向中央统战部、北京市委统战部等部门发出了邀请。但是会议临近时朱善璐又决定推迟召开,于是预定的会场只好更改,押金也打了水漂,只能等着他重新确定时间,将会议的组织工作再做一遍,而且一直提心吊胆地怕他又变。总算会议时间没有再改,我们一直提着的心才终于放下来。
我所在的统战部不过是北大很小的一个部门,朱善璐过问的时候并不多,都要被他折腾的手忙脚乱。全校有上百个院系、部门,他又喜欢到处插手,不知有多少次活动因为他而被搞得人仰马翻。当然最辛苦的还是他身边的秘书和两办的工作人员,朱善璐的活动安排经常一改再改,他除了睡觉之外从不休息,但也从不考虑别人的休息时间,这些人只得没日没夜地伺候他。有的工作人员住的远,不得不在学校附近租房子住;更有的年轻人该恋爱的不敢谈恋爱,该结婚的不敢结婚,该要孩子的不敢要孩子;他的专任秘书更是累病了好几次,不得不再找一位更年轻的同时做他的秘书。其他校领导、有的部门负责人据说夜里十二点前都不敢上床睡觉,听说杨河十二点以后就接过他好几次电话,但没有一次是急迫到非要半夜三更不让人安宁的。以朱善璐的工作风格,北大许多部门都需要增加编制,增加大量的工作量和资金投入,因为他而产生的各种效应肯定会对GDP的增加有所贡献。
朱善璐身边的人虽然为他拼死拼活地干,但如果认为这些人能得到安排提拔大概又是一种错觉。前些年朱善璐还在南京的时候,我接待过北京市委教育工委的几个干部,中午吃饭时我看司机比较面熟,一问果然就是朱善璐任教工委书记时的专车司机。我看他长得和以前常见的汪家鏐的司机有几分相像,就顺便问汪的司机怎么样了?朱的司机回答说很不错,当了副教授,党校那里又给了一套房子。汪家鏐是从北京市委副书记兼北大党委书记调任为中央党校常务副校长的,她的司机跟着去是当了副教授还是相当于副教授待遇,朱的司机未必很清楚,但汪家鏐没有亏待他应该是可信的。我又问朱善璐给了你什么待遇?司机摇摇头说什么都没有,还说海淀区委、教育工委跟在朱善璐身边干的人也没有安排,都是原地不动。朱善璐不用身边人,在外面任职不用北大的人早有传闻,我从他的司机这里又得到了证实。问题是这些人拼命为他干,他是可以在职权范围内做适当安排的,无论从人情世故还是官场规则上讲都是正常可行的。但这时候朱善璐却要坚持原则,不讲关系和情面,对这些拼死拼活为他服务的干部视而不见。
对于身边的人或关系比较近的人,朱善璐往往弃而不用,反倒是有的他不熟悉的干部可能一下子被他看中,很快就提拔起来了。朱善璐用人不喜欢“日久生情”,而是喜欢“一见钟情”,所以要想在朱善璐手下得到提拔,最好是离他远一些。身边的人虽然干的多,但他的要求往往不合常理、不近人情,没法让他满意。就像有的老人身边有子女,但一起生活往往会产生一些矛盾,总有不满意的地方,这时候一个远方的子女回来照顾了几天,老人就认为这个子女最好,全然忘了常年伺候他的其实是身边的子女。朱善璐用人还有一个特点,就是喜欢赶时髦、图虚名,例如学历开始吃香了,朱善璐用干部就非常看重学历。以前博士还比较稀少,王登峰二十来岁拿到博士学位,30岁就当上了教授。朱善璐对王登峰似乎有一种发自内心的喜欢和欣赏,选拔他担任了校团委书记。记得有一次王登峰到朱善璐的办公室,大概是头几天忙什么事情累着了,朱善璐就让他斜躺在沙发上,说话时口气十分柔和,可谓关切备至。现在博士、教授已经多如牛毛了,但朱善璐还是喜欢追求这些名堂,他自己只是学士,那些博士、教授,甚至是院士们能为他所用,或许他也可以从中获得了一种满足。
朱善璐虽然当上了北大的最高负责人,但是他对于如何管理北大没有任何思路和主张,只会照搬官场上形式主义、政绩工程那一套。他上任后提出北大要“冲刺入列”,意思是北大要以冲刺的姿态进入世界一流大学的行列,比闵维方的“迅跑”又加快了速度。北大第十二次党代会报告的标题是“勇担使命、团结奋斗,更加执著地加快推进创建世界一流大学步伐”,非常符合朱善璐“假大空”的语言风格。为此他提出北大要实现“跨越式发展”,提出了所谓“2048”远景规划和“三步走”战略设想,把北大的历史分为三个50年,从1898年至1949年前是第一个50年,从1949年至1998年是第二个50年,从1998年至2048年是第三个50年。北大要在2018年建校120周年前后,率先跻身世界一流大学行列,到2048年建校150周年前后,全面实现创建世界一流大学的目标。朱善璐的这些提法被写入了2012年召开的北大第十二次党代会报告,他进而将这些目标简化为实现创建世界一流大学的“北大梦”,甚至还对“梦”进行了分解,要求全校各单位都要有“梦”,例如他要求我们有“统战梦”。有的老同志私下和我说,朱善璐的一系列提法都是完全违背教育规律的。其实这样说还算比较客气,实际上朱善璐本人完全是生活在“梦”中的,他是真心以为他在带领着北大向世界一流大学“冲刺”,他不仅自己做梦,还要求北大的人都跟着他做梦,只是不知道他还有没有梦醒的时分。
北大第十二次党代会报告是朱善璐主持起草的。他先是要求全校各单位都要提出建议,为了替统战部应景,我也以邓小平主持起草四届人大政府工作报告不超过五千字为例,建议党代会报告不要写得太长、面面俱到,当然我也知道这些建议对他毫无作用。此外他还要求一批批、一遍遍地开座谈会,光党外人士座谈会就开了好几次。报告稿完成后,他又多次要求征求修改意见。报告稿洋洋3万多字,比十八大报告,比历届政府工作报告都要长,办公室只能一次又一次地反复印刷。到了党代会召开的前两天,朱善璐再次要求征求意见,而且必须征求党外人士的意见。那天是休息日,又遇上下雨,我只好赶到办公室一个个打电话,或者请党外人士自己来拿,或者找人送去。对于这样一篇冗长、空洞,事无巨细、面面俱到的报告,还非要在党代会召开前夕再走一遍形式。我不知道朱善璐是诚心征求意见还是有意折腾人,不过这样倒符合他只会做表面文章的一贯风格。
以我对朱善璐的长期观察,我认为他基本上是不读书、不看报,也不思考问题的。首先他根本没有时间看书看报,我估计他至少大学时代就不大看书了,他一直热衷于社会工作,又当了学生会主席,以他的工作方式,根本不会有时间看书学习。我只是在朱善璐当副书记时见他看过书,那时他要读政治学系的博士学位,曾经把办公室的门关上,嘱咐我不要让人打扰他,说他要准备一下英语考试。还说虽然他肯定能上,但英语也不能考的太差,大概有两三次把自己关在屋里看了一阵英语,此后我再未见过或听说他看了什么书。我知道的北大历任党委书记中,王学珍写过不少文章,任彦申出了好几本书,闵维方也写过“迅跑”。但是我认识朱善璐有30年了,却从来没有看到过他的署名文章,哪怕是一篇几百字的短文。
从上世纪90年代以来,北大几位主要领导人的最大特点就是不断向体制靠拢、表现出一种“效忠”的姿态,不过他们的表现还是有区别的:任彦申有自己的思路和策略,是一种有意识的引导;闵维方既要迎合但又不熟悉套路,未免有些生硬、蛮干;许智宏是在体制的庇护下逍遥自在;周其凤显得有些天真烂漫,乃至不自觉地成为了某种喜剧式人物;朱善璐则是从骨子里和体制融为一体,除了体制内那些僵化的思维和语言,他没有任何属于自己的东西。如果偶然接触一下朱善璐,可能会觉得他对人很热情,讲话也有点激情,他能够将官面上的话变成自己的口语,听上去好像是那么回事。但只要多听他几次讲话,就不难发现不管在什么场合,对待什么问题,他说的基本上都是同样的话,表面上慷慨激昂、义正词严,实际上空无一物。
朱善璐喜欢开会,喜欢讲话,喜欢做批示。他的批示我以前就见过很多,往往从头批到尾,洋洋洒洒,几乎占满了所有的空白处。现在凡是他的批示下来,办公室还要专门打印一张“领导批示誊清件”,以便他那些冗长、杂乱的字迹能让人看清。朱善璐更喜欢会见领导人、各界名流,喜欢到处察看。从好的方面讲,朱善璐确实有深入基层的一面,闵维方当了9年半党委书记,但从来没有专门来过统战部,朱善璐上任后来过不止一次。朱善璐对工作似乎是非常投入的,他有时一天要安排二十多件事,每天不到深夜是不会回家的,不仅周围工作人员忙的团团转,据说连他的夫人也无法适应。
加班加点对朱善璐来说是一种正常状态,任彦申多年前就说过什么时候朱善璐不加班了,他的水平就提高了,前两年我听任彦申又说过这个话。任彦申这样说实际上是很看不起朱善璐的,他在新书《如何是好》中有一段话大概主要是针对朱善璐说的,“他们终日劳碌,加班加点,马不停蹄地工作着。不论大事小事,交给别人都不放心;不论分内分外,都要亲自过问;不分轻重缓急,只要心血来潮就去抓。他们最大的爱好就是开会,把大部分精力都消磨在文山会海中。他们没有既定的目标和固定的行动计划,谁找他他就为谁办事,谁官大他就听谁的,工作日程不断变来变去,不仅自己手忙脚乱,搞得部下也穷于应付,疲于奔命。这种忙而无序、劳而无功的瞎忙,弄得大家怨声载道。”听说也有其他前任校领导当面劝朱善璐不要太折腾了,但是这些劝告对他都毫无作用。胡锦涛同志曾提出“不折腾”,但朱善璐却是无时无刻不在“折腾”。我所能庆幸的是我在朱善璐身边时,他“折腾”的程度还没有这么厉害,对我的个人生活还没有明显影响。
不知道是任彦申他们没有看透还是没有把话说透,从表面上看朱善璐确实是在忙于工作,他整天都忙着会见、开会、讲话、批示、考察,没有片刻的空闲,确实会让人觉得他对工作非常投入,非常有激情。实际上他的这种“工作”状态更多是一种个人的需要,正如有人喜欢运动,有人喜欢打牌,有人喜欢喝酒,有人喜欢夜夜笙歌一样。朱善璐的“工作”对他而言实际上是一种娱乐,他既不读书,又不思考,也没有其他爱好,我估计他如果有5分钟空闲就会立刻坐立不安、不知所措。但是一旦“工作”起来,朱善璐就非常充实,他喜欢那种忙忙碌碌,一声令下手下人都围着他转的感觉。“工作”对朱善璐而言已经是一种须臾不可离开的状态,实际上已经是一种病态,我估计他可能有狂躁病的某些症状。至于他“工作”的效果,不知是北京还是南京的人早就给他总结了三句话,“心中一团火,脑中一团麻,办事一团糟”。
朱善璐的一系列表现固然有他个人的因素,但主要还是制度环境造成的。首先,如果在一种优胜劣汰的用人机制下,像朱善璐这样早就引起过很多非议,而且思维层次和工作能力都很低下的人,是不适合安排到南京市委书记、北大党委书记这样重要位置上的,尽管他对自己可能还有更高的期望;其次,也是更重要的原因,是在目前的体制下,一个地方或一个单位的主要官员,特别是一把手,往往都处在毫无监督、毫无制约的环境中。他们说任何话,做任何决策,一般都不会听到反对的声音。北大虽然是一所大学,实际上早就彻底官场化了,朱善璐在北大也没有受到任何制约。如果北大的领导层比较正常,朱善璐许多荒唐的讲话、决定是会受到质疑和反对的,例如他要取消和曾荫权的会面,应该有人劝阻他不能这么做,但遗憾的是北大领导层早就没有这样的人了。朱善璐这类官员就像是被宠坏了的孩子,非常任性,无论做什么事都没有人阻止,他也根本不考虑别人的感受。
只是到了群众路线教育实践活动开展以后,北大的一些同志对朱善璐的做法实在有些忍无可忍,才不同程度地提出了一些意见。朱善璐似乎也有所收敛,连我都能感觉到学校里似乎清静了一些。但是他的本性是不会改变的,就在我们举办的统战系统2014年新年联欢会上,虽然总共只有一个多小时的活动安排,但是朱善璐又做了长达半个多小时的讲话,全然不考虑他的讲话完全不合时宜,不顾及(其实他根本觉察不到)会场上普遍的厌烦情绪。今年五四习近平同志到北大考察,座谈会上让朱善璐发言控制在10分钟,但他还是足足讲了20分钟;今年5月底朱善璐率北大代表团访问台湾,在宋楚瑜安排的招待宴会上,宋楚瑜作为主人讲了半小时,朱善璐则喧宾夺主地讲了45分钟。
除了“工作”之外,朱善璐确实没有其他嗜好,特别是没有听说他有什么桃色新闻,他似乎也没有明显为自己和家人谋取过更多的利益。从我和他的接触中,我觉得他还是比较朴素、比较随和的,按一般标准他可能是一个传统意义上的好官、清官。虽然人们都痛恨贪官,那些贪官们一经暴露几乎无不是财色兼收,但在朱善璐身上我却感到了一些迷茫。他确实既不贪、又不色,我甚至假设朱善璐如果多少好一点色,有限度地谋取一点个人利益,只要不像动辄富可敌国、情妇成群的大贪官们那么过分,或许能耗费掉他的一些多余精力,可能还比他这样整天折腾的破坏性更小一些,浪费的资源更少一些。其实早在朱善璐当副书记的时候,有一位车队的司机可能是被他折腾的烦了,这位司机平常就爱说点怪话,有一次我乘他的车时跟我说:你回去告诉朱善璐啊,让他晚上多陪陪老婆。原话的口味还要更重一些,但是我现在越琢磨越觉得这位司机的话其实是很有道理的。
季 老
在北大只要一提起季老,所有人都会知道是季羡林先生。季老不仅在北大人人皆知,就是在国内的知识界、文化界、舆论界,只要说起季老的大名,几乎也是无人不知、无人不晓。和季老同时代的老一辈学者中,虽然不乏一批大师级人物,但能够有季老这样的知名度,得到季老这种政治礼遇的,几乎找不出第二个人。
季老有这么大的名气,首先应该和他的资历、背景有关。1952年院系调整之后,北大集中了全国人文社科界最多的著名学者,而在上世纪五十年代评定的北大一级教授中,季老是最年轻的一位。其他人大都于上世纪九十年代之前先后去世,1997年陈岱孙先生去世后,北大的老一级教授就只有季老一人了,全国范围内有这种资历的学者也属凤毛麟角;其次,许多大学者一辈子从事的都是高深的学问,普通人自然不懂,无从了解。季老的专业研究如梵文、巴利文虽然没多少人懂,吐火罗文更是全世界也没几个人能懂的文字,但季老又善于写散文,很多人读过他的散文作品。他还写过《牛棚杂忆》、《留德十年》这样颇有些影响的书,一般人都可以通过这些文字了解季老;再有,季老受到的政治礼遇极高,他去世前几年住在301医院,温家宝总理几乎每年都去探望,前后去了五次;还有季老的家事,如他和儿子的关系,关于他遗产的纠纷等等,多次成为舆论的热点,无形中也使得季老名气大增。
我是1981年考入北大的,那时候北大的前辈学者还有不少,季老只是其中之一。印象中我也听到过季老的一些逸闻趣事,例如说有新生看到一位衣着朴素的老人,以为是学校的老工友,就委托他照看一下行李,开学典礼上才知道他是时任副校长的季老。1985年我大学毕业后到校党委当秘书,季老那时已不担任副校长了,我也极少能看见他,但我经常会在办公楼看到李玉洁女士,听人说她是季老的秘书。我心里还有些不解,当时王力、冯友兰这些老学者还在,但没听说他们有专职的秘书,另外我以为秘书应该是像我这样年轻的,而李玉洁看起来差不多是退休年龄了,因此对季老的特别之处留下了一些印象。不过在我参加工作的头些年里,一直没有和季老有直接的接触,也不知道多少关于他的事情。
大约在1990年代初期,有一段时间我早晨上班时经常会在图书馆北边的路口遇到季老,后来看到有报道说季老为了写书,每天都要去图书馆查资料。我不记得季老的夫人是哪一年去世的,就在我时常遇到季老的那段时间里,有一天早上似乎天气不好,好像还点下了点雪,但我仍然在路上遇到了季老。我记得那天到办公室后,听同事说季老的夫人去世了。我当时很有些纳闷,为什么季老在夫人刚刚去世时还照常外出呢?后来也看到有报道以敬佩的口气说季老一心扑在研究上,夫人去世时仍然坚持工作。我是在过了很长时间以后,才了解了一些季老的家庭背景,特别是季老去世后看到他儿子季承的说法,才算解开了当年的疑惑。
我直接和季老的接触大约只有两三次。1998年是北大建校100周年,不知出于什么考虑,最高领导人忽然对北大的百年校庆异常热心起来,先是于4月29日来北大“暖寿”,又于5月4日出席纪念大会并发表讲话。我私下里曾有一种看法,当时朱镕基刚刚出任总理,又是要闯“地雷阵”、“万丈深渊”,又是要“准备一百口棺材”,一时风头正盛。最高领导人有意为北大造势,是否还有更深层的考虑?毕竟朱镕基和最高领导层的几位清华校友都颇为引人瞩目。当然我只是妄加猜测,不过有人以朱镕基出席校庆大会看起来似乎不愉快,对我的看法表示了一定认可。
“暖寿”当天在勺园举行了一次座谈会,由北大老中青三代教师和学生代表参加。以季老的资历和名望,自然要躬逢其盛。有关这次座谈会的报道说最高领导人一见季老,即说了“久闻大名,如雷贯耳,今日一见,三生有幸”的客气话,足见季老的分量之重、名望之高。季老当然要在会上重点发言,不过我听一位参加座谈会的人说,季老那天的发言比较一般。我后来专门查了一下有关报道,季老大概说了两个意思:一是人才培养要注意文理并重,二是要采取措施避免人才流失。季老是座谈会上辈分最高的“一老”,其发言确实未见出彩之处;反倒是参加座谈会的“一小”——法律系女生李岭的发言令我印象深刻。她将北大学生的状态概括为三句话:学习上勤奋努力,生活上丰富多彩,政治上积极上进。并表示爱祖国、爱北大,是我们的口号。我们要把自己的命运同祖国的命运、北大的命运联在一起,要努力努力再努力,学习学习再学习,以实际行动表达对祖国的热爱。实在是佩服这位小女生对北大当局和最高领导人意图的把握能力,果然她发言结束后,“江泽民同志带头鼓掌”。
最高领导人亲临北大是一件大事,按照惯例要马上报送北大师生的反映,上面也迫不及待地开始催问了。我当时在党委研究室工作,和几位同事分头收集各方面的反映,季老的看法自然是首先需要了解的。当天晚上我打电话到季老家,记得是李玉洁接的电话,她听明白意思后说季老已经睡下了,不便再让他起来。当时在场的领导们也只好作罢。但过了不长时间,季老的电话就打回来了,季老还没有睡着,询问了来电情况后亲自回了电话。我做记录时感觉季老很激动,他说这是历史上最高领导人第一次到北大,意义十分重大,其他的话我记不起来了,基本上都是这类意思。通话过程中季老激动、兴奋之情始终溢于言表。
我还有一次和季老直接接触是在1999年底。当时我的大学同学曾楚风在湖北主编《今日名流》杂志,因为马上要进入21世纪了,他们想请一些名人发表对新世纪的看法、展望。季老是北大辈分、名望最高的学者,于是找到我希望能请季老谈一谈。我和李玉洁联系后征得季老同意,于是陪杂志社的几个人到朗润园季老家中拜访。我是第一次进季老家,看到季老家里的摆设十分简朴,家具都比较老旧。季老应该是刚吃过午饭,桌子上还摆着一些没吃完的白菜豆腐之类的家常饭菜。我们还未坐定,就在一个比较显眼的位置上看到电影明星许晴的照片,季老爱猫是很有名的,照片一看就是许晴抱着季老的猫拍的。我们都有些好奇,我感觉季老似乎也在等着我们询问,果然曾楚风刚一开口,季老马上就用十分愉悦的口气说:噢,那是许晴。进一步解释说是他的学生刘波正在和许晴恋爱,是刘波和许晴来家里时拍的。
刘波其人此前我见过,但不知道他正在和许晴恋爱,只知道他是诚成文化公司的董事长,在北大读研究生期间可能也受过季老的指教,所以对外说他是季老的学生。刘波曾策划出版过一套影响不小、售价很高的《传世藏书》,并请季老任主编,不过季老自己说他那个主编是“挂名的”。刘波还出资200万美元设立了以季羡林为名的研究基金,我参加了在友谊宾馆举行基金成立仪式。经季老解释后我们才明白了,一位是才子、富商,一位是当红女明星,更有一位名满天下的前辈学者,他们之间的交往对任何一方而言都是锦上添花的事情,季老当然也可以为女明星的崇拜而感到几分自得。至于听说刘波和许晴分手,破了产并跑到国外,这些已经是后话了。
但是当问及季老对21世纪的看法和展望时,我却不禁有些失望。作为一位享有盛誉的大学者,又是一位饱经风霜、年近九旬的世纪老人,我以为季老理应对新世纪谈出一些深邃、独到的见解。但季老似乎没有多少想说的话,经曾楚风他们一再恳请,也只是简单地谈了一点看法。或许是这些看法太平常了,我已经想不起来季老都说了些什么,总之感觉是像我这样学识、阅历都非常浅的人也能认识到的。后来我从季老的文章里看到他对21世纪做过一些展望,例如季老在《梦游21世纪》一文中就写到:“我梦到,我们的国家继续安定团结,繁荣昌盛下去……56个民族团结得像一个人。南方不再洪水泛滥,北方没有森林火灾……”;“我梦到,在每一个家庭里,父慈子孝,兄友弟恭,夫妻相敬相爱,相忍相让……对待爱情坚贞真实,谁也不做露水夫妻,把离婚当作家常便饭……”。诸如此类的一些梦想和期待,作为一种愿望也许是好的,但是在中国社会还充满着各种问题和冲突,人性在可预期的未来不可能有太大改变的前提下,季老的想法只能是一种“梦游”。
如果和一些真正的大家相比,季老的思想深度的确比较有限。例如爱因斯坦虽然是一位大科学家,但他对人类社会的问题也有深刻的洞见;陈独秀、鲁迅、胡适等北大前辈学者,无不以思想的深度和力度而贡献卓著、影响至今。相比之下,季老的见解恐怕就太简单、太理想化了一些。我不是苛求季老,不要求他一定达到大思想家的境界。但季老毕竟是这个时代年龄最长、辈分最高、名气最大的学者之一,以他的阅历、身份、影响力,完全可以对这个时代及国家民族的未来发表更深入一些的见解,他也应该有这个责任和义务。但是季老显然离这样的期待相距较远。
对季老的专业研究我是一窍不通的,他的散文我看过一些,不是太多。我认为季老的散文是写得不错的,例如写胡适的,写胡乔木的,虽然不见得全面,但写出了很多真情实感,文笔也比较质朴。我曾听王学珍说季老在“文革”中所受的迫害远不是最重的,《牛棚杂忆》真实地记录了这段历史,但是这本书最大的不足,还是对“文革”这样一场空前浩劫发生发展的深层原因缺乏分析;《留德十年》我感到也有类似缺憾,对于德意志这样一个科学和文化素养很高的民族为什么会走上法西斯道路,季老似乎也没有多少涉及。
前些年季老发表了一些观点,例如他讲过“21世纪必将是东方的世纪,将迎来东方文化的全面繁荣与复兴”;还有“三十年河东,三十年河西”,他是指西方文化虽然长期占据主流,但将会逐渐让位于东方文化;他尤其推崇中国古代“天人合一”的观念。这些观点自然是仁者见仁、智者见智。我对于博大精深的东西方文化都所知甚少,不过总觉得在中国这样一个还没有经过深入的思想启蒙,民主、自由、法治等人类公认的普遍原则还远没有深入人心的国度里,是否急于期待东方文化的复兴?我曾听汤一介先生明确讲过不同意季老“三十年河东,三十年河西”的看法,认为我们现在主要还是要学习西方文化。我对季老的见解比较认可、印象深刻的是他积多年阅历的一些经验之谈,例如他讲坏人不知道自己是坏人,坏人是不会改好的,倒是很让人信服的名言。
2005年前后我因为要编写北大统战史略,偶然在统战部的档案里看见一份1950年代有关季老的材料。当时季老40多岁,任东语系主任。材料里有两点评价我还有印象:一是说季老比较好名誉,什么荣誉都要争,如果西语系受了表扬,他就会比较介意;二是说季老一个人在北京生活,长期把妻子留在山东老家不接过来,想和妻子离婚,又不好意思提出来,毕竟是妻子多年承担了家庭责任。季老和夫人的关系从季承的说法里得到了证实,虽然材料带有那个年代的特点,但这两点评价应该是大体不差的。季老去世前几年,忽然提出要辞去加在自己头上的“国学大师”、“学界泰斗”、“国宝”三顶桂冠,博得了舆论的不少好评。但北大有学者认为这也是季老获取名誉的一种方式。我不知道季老的想法,也不敢完全苟同这种看法,不过季老好名誉的特点看来北大有一些人还是了解的。
季老去世前后还出现了一些戏剧性事件,不断形成热点新闻,直到现在也没有完全平息下来。先是钱文忠以季老的“关门弟子”自居,给季老行跪拜大礼,着实炒作了一番;然后又传出季老收藏的书画“失窃”,时任秘书杨锐被停职,此事甚至惊动了温家宝总理;再有季老13年未见面的儿子季承回到他身边,由此引发了一系列后续情节。2009年季老逝世后,围绕季老的遗产季承和北大发生了持续纠纷;季承出版了《我和父亲季羡林》一书,全面披露了季老特殊的家庭生活。中间还穿插了季老故居被盗等事件,整个过程颇似一部跌宕起伏的电视连续剧。
对这些事情我了解的有限,谈不了多少看法,不过在季老的遗产问题上倒是有些话想说。据说季老早就表态将他收藏的字画等文物捐给北大,季老毕竟是耄耋之年,生前最后几年一直住在301医院。北大校方早就可以根据季老的愿望,请季老立下有效遗嘱,将文物移交给学校妥善保管起来,其实北大图书馆就有季老的工作室。但是北大校方却一直不作为,似乎季老可以长生不老下去。在季承回家之后,虽然季老和儿子之间有过很深的隔阂,但面对的毕竟是血浓于水的亲生儿子,季老不再明确表态将文物捐赠给北大,也是可以理解的人之常情。只是季老去世后其遗产纠纷愈演愈烈,对北大和季老的名誉都有不小损害,这种情况恐怕也不是季老愿意看到的。另外季承的书我没有看,不过主要内容也有所了解。虽然季承的做法让很多人难以接受,认为他损害了季老的形象,但也有不少人赞许季承不为亲者讳的勇气,是讲了真话的。
季老愈到晚年名气愈大、影响愈大,所谓树大招风,可利用的价值自然也大。刘波、钱文忠等人可能都听过季老的课,但是“亲授弟子”、“关门弟子”之类恐怕是谈不上的。季老的秘书中我只认识李玉洁女士,有一年我和李玉洁一起去机场接从韩国访问归来的季老和郝斌副校长,一路上李女士十分健谈,感觉是一位干练、直爽、风风火火的老太太。李玉洁长年照顾季老,早就被很多人视为是季老的家庭成员,那一次我带《今日名流》杂志社的人去季老家,他们都以为李玉洁是季老的夫人。2003年底我所在的党委统战部搬到燕南园53号办公,紧邻54号李玉洁家,但我只见她回来过一次。为了翻建53号小楼,施工部门在54号东侧搭了几间临时建筑,没有及时拆除。李玉洁看到后大为不满,不仅骂施工单位,也高喊着让统战部长出来,后来干脆找来一帮人把临时建筑拆了。我不禁感慨老太太跟着季老见了很多世面,口气、脾气都大了许多。我不了解李玉洁等人对季老的作用,但是季老受到身边一批人的包围、影响恐怕是难以避免的。
季老生前和身后,各种宣传、介绍、回忆、评价他的文章都非常多。我和季老的接触十分有限,本来是没有必要再写这些文字的。不过季老毕竟名气极大、影响极大,是一位非常有代表性的北大前辈学者,我也不能不对季老有所关注。尽管我没有能力对季老做全面评价,也不妨把我知道的一点季老的事情,把我对季老的一些看法告诉世人,或许能对人们了解季老起到一点拾遗补缺的作用。
我想季老作为一位大学问家应该是没有什么异议的,他在梵文等领域的造诣、贡献、成就是得到公认的,他对待学问的认真、刻苦、勤奋早就被奉为学界的典范;季老还是一位不错的散文家,他的散文很有影响,不乏许多对真、善、美的追求。但季老又是有局限的,首先他不是一位深刻的思想家,以他的身份、阅历、影响,他没有对时代、社会发出多少令人警醒、发人深思的声音,而是比较顺从、配合,充当了某种适应体制需要的角色;其次季老应该是一个公认的好人,虽然他在家庭中未必是一个好丈夫、好父亲,但他远不能称得上是伟人,尽管很多人希望他成为伟人,甚至有人认为他已经是伟人了。在季老去世前的若干年里,他一直是北大资格最老、名望最高的教授,是最能代表北大形象的一位前辈学者。但是季老的局限也是比较明显的,有些“盛名之下其实难副”。同样是盛名之下,被许多社会公众还寄予厚望的北大,其实早就彻底依附于体制,整体上失去了为社会贡献有价值的思想和行动的能力。何况在今天的北大,能够达到季老做人、做学问境界的学者,恐怕也已经不多了。
几位经济学家印象
1981年我参加高考的时候,经济学已经开始热门起来了,填报北大的专业志愿时我也赶时髦地把经济学作为第一选择,只是由于相关成绩稍差,才被录取到第二志愿的中国文学专业。当时北大经济系和中文系的规模差不多,每年都招收100名左右本科生。如今三十多年过去了,中文系还是叫中文系,本科招生规模也基本上没有变化,但是原来的一个经济系已经发展演变为经济学院和光华管理学院两个学院,还单独成立了中国经济研究中心,近年来改名为国家发展研究院。北大的经济学科和过去完全不可同日而语,成为了北大发展最快、规模最大、名声最为显赫的学科。
北大的经济学专业学科齐全,专家、学者数量众多,许多教授都有深厚的学术造诣和广泛的社会影响,但是要说起其中名气最大的,则恐怕非厉以宁、林毅夫、张维迎三人莫属。
厉以宁是三人中年龄最大的,成名也最早,他毕业于北大经济系,后来一直在北大工作和任教。大约在1980年代初期,厉以宁就提出了组建股份制企业以解决就业问题,他是改革开放后第一个提出股份制问题的,并以“厉股份”而成名。在当时的社会背景下,股份制究竟是姓“社”还是姓“资”,曾引起过激烈的争论,厉以宁也蒙受了不少压力。不过大概也正是由于这些争议,愈发使厉以宁声名鹊起,连我这个经济学的门外汉,厉以宁的大名早在上世纪八十年代就让我如雷贯耳,尽管我对他的理论完全谈不上了解。到了1989年之后,厉以宁一度受到更大压力,我曾在《中流》杂志上看到厉以宁的股份制理论被作为当代最反动的思潮之一受到批判。好在这种状况没有持续多久,1992年邓小平南巡讲话之后,姓“资”、姓“社”的争论暂时告一段落,厉以宁很快又开始大红大紫。
1990年代初期我曾听过厉以宁的两次讲座,一次是在办公楼礼堂,他讲的很生动,用“靓女先嫁”和“靓仔先娶”比喻国有企业的转制问题。“嫁”有给的意思,“娶”则有拿来的意思,厉以宁说如果把“靓女先嫁”改为“靓仔先娶”,或许可以增加人们对国有企业转制的接受程度。厉以宁有比较高的文学素养,能吟诗填词,讲演时还善于用一些文学名著中的例子说明问题。办公楼礼堂内座无虚席,许多人都站在楼道里听,足见厉以宁的人气之高。此后不久由党委研究室牵头举办过一次十四大精神学习培训班,请厉以宁为培训班的学员讲了一次课,我印象中和此前在办公楼礼堂听过的内容差不太多。
对于厉以宁的学术著作和经济学理论,我既没有读过也没有能力去系统了解。但是前些年厉以宁提出小康家庭的标准是拥有第二套住房,随即遭到了不少批评,他也多了一个“厉二套”的称呼。近年来厉以宁毕竟年事已高,继续撰写系统的经济学理论著作可能有些力不从心了,但他有极高的名望和影响,他对于经济问题的任何看法都会引起高度的关注。厉以宁提出过许多好的建议,但是确实也有一些观点饱受非议,除了第二套住房之外,我注意到的厉以宁的观点还有:根据他的新基尼系数算法,中国的基尼系数将是一个低于0.2的数值,厉以宁进而表示中国不存在贫富分化问题,中国的问题恰恰是贫富分化太小;中国不应该建成福利社会,否则人们便没有危机感,不好好工作;中国的穷人不应叫穷人,而应该叫“待富者”。诸如此类还有不少。这些观点我没有亲耳听过,都见之于各媒体,或许有一些断章取义,但至少“第二套住房”、“待富者”确实是厉以宁提出来的,其他受到批评的言论也很难说都毫无根据。
厉以宁谈这些问题没有多少经济学术语,不涉及高深的理论,一般人都很容易理解。我虽然是经济学的外行,但是对中国社会还算有一定的了解和认识,坦率地说他的这些观点我很难接受。中国的基尼系数到底是多少?很久都没有官方的权威说法了,但是仅仅凭自己的实际感受,我也无法接受中国不存在贫富分化问题的观点;西方有些福利制国家确实有一些弊病,但中国的老百姓却是普遍缺少福利、缺少保障,一般老百姓拼尽全力,也难以实现基本的住房、教育、医疗、养老需求,在这种背景下谈中国不应该建成福利社会是否有些脱离国情;至于把穷人称为“待富者”的观点更不新鲜,早在上世纪二三十年代梁实秋就曾将“无产者”称为“尚未发财的有产者”,并要求他们“只消辛辛苦苦诚诚实实的工作一生,多少必定可以得到相当的资产。”为此遭到过鲁迅的批评。
最令我惊奇的是厉以宁可能并不知道梁实秋的观点,但一个“待富者”,一个“尚未发财的有产者”,虽然具体表述不同,时间也相隔了七八十年,含义却是如此惊人的相似。我以为唯一能解释的就是他们所持的立场,是站在富人还是站在穷人的立场上,“待富者”也好,“尚未发财的有产者”也罢,都只能是富人看待穷人的态度,穷人们大概不会这么乐观。厉以宁早就“名满天下”了,他对于中国经济学理论的发展,对中国的经济改革应该是有很大贡献的,但他近年来确实也有些“谤满天下”。我没有能力对厉以宁做全面的分析和评价,但我认为他不断受到的批评并非都是无端指责,他站在既得利益阶层立场的时候恐怕多了一些。
厉以宁曾提出过“两个北大”的观点,我不好说他现在代表的是“第一个北大”还是“第二个北大”,或者是二者兼有?在上世纪八九十年代,我时常能看到厉以宁骑着一辆旧自行车在校园里穿行。大约在2000年前后,我还去过厉以宁位于中关园的家中,那是一套只有70平米的普通住宅,地面是水泥的,房间的陈设也非常简单、朴素,沙发坐上去还有些塌陷。以他当时的名气和收入,享受更舒适的生活应该不成问题,但厉以宁过的还是普通老百姓的生活。我不了解厉以宁现在的生活状况,只是感到那个骑着旧自行车的朴素学者的身影离我们很遥远了,他的一些观点和看法离中国的现实社会,离中国的普通老百姓也比较遥远了。
在北大经济学家群体中,林毅夫的名气丝毫不亚于厉以宁。与大陆背景的学者不同,出生于台湾的林毅夫身上更带有几分传奇色彩。林毅夫原名林正义,曾经是台湾国民党军队驻金门马山连的上尉连长,年轻时的他品学兼优,在台湾军界也是明星式人物,曾经受过蒋经国的接见。但林毅夫却在1979年从金门泅渡到厦门,先被安排到北大经济系学习,然后赴美留学,师从诺贝尔经济学奖得主舒尔茨教授,获得芝加哥大学经济学博士学位,此后又回到大陆,他是改革开放后第一位从国外学成归国的经济学博士。
1994年,林毅夫从国务院发展研究中心回到北大,同几位同道者一起,创建了北京大学中国经济研究中心,林毅夫担任了主任。大概在1990年代中后期,我曾经为《今日中国》杂志做过一篇林毅夫的专访,介绍他本人及中国经济研究中心的一些情况。此前林毅夫曾提出过一个观点:诺贝尔经济学奖得主大都是在世界上经济最发达的国家产生的,而中国的经济发展很快,可能会成为世界上最大的经济体。那么谁能解释中国的经济腾飞,谁就可能获得诺贝尔经济学奖。一时被媒体炒得很热,似乎中国人快要得诺贝尔经济学奖了。我采访林毅夫时专门问过他这个问题。林毅夫其实很低调,他认为中国的经济学研究离世界前沿还有很大距离,中国人在今后的二三十年内还不可能获得诺贝尔经济学奖。另外林毅夫从台湾回大陆的背景当时知道的人还不多,我也问过他为什么要回来的问题,林毅夫避而不答。同其他“叛逃”大陆的台湾军界人士相比,我没有发现林毅夫有很明确的动机,于是在专访中推测林毅夫可能是觉得台湾的天地太小,要在大陆更广阔的舞台上施展抱负。这种推测后来基本上得到了证实。
我对于林毅夫的著作和理论同样了解极少,印象比较深的,是他提出过比较优势发展战略。林毅夫认为中国的改革开放,尤其是东部沿海地区经济的快速发展,是利用了中国劳动力价格相对较低的比较优势,逐步占领了纺织服装、轻工产品、家用电器等国际市场。林毅夫预测到2030年,中国有望成为世界上最大的经济体,后来他又将这个时间提前了。林毅夫一直对中国经济的发展前景非常看好,2014年3月在北大举办的北京高校统战大讲堂活动中,林毅夫做首场报告时更是预测到2030年中国总体经济规模可能达到美国的1.5倍至2倍。此外,林毅夫还非常关注中国的农业、农村、农民问题,他在1999年就提出了“新农村建设运动”,建议国家财政应增加投入,改进与农村生活有关的基础设施,比如上水、下水、电、道路等。他认为农村有很大的市场空间,但是由于公共基础设施严重不足,限制了农民对电器等现代制造业产品的消费。“新农村建设运动”可以增加农村的内需,消化中国过剩的产能。林毅夫的这个建议应该为后来中央提出“建设社会主义新农村”决策提供过参考依据。
对林毅夫的观点我大体上只知道这些。林毅夫可能是中国最具国际化色彩的经济学家,他对中国经济学的发展,对国际社会了解中国的经济改革应该是做出了重要贡献的。不过我对他一直看好中国经济前景的乐观态度却不敢苟同,以我粗浅的认识:中国经济发展的成就固然不小,但积累的问题更不容忽视,这些问题不仅存在于资源、环境、技术等领域,更体现在经济发展的成果能否让全体国民分享,能否让全体国民感受到公平、公正。中国经济能否持续健康发展,乃至如林毅夫的预测,发展为世界上最大的经济体,很大程度上不仅是经济领域的问题,更是涉及到政治、社会领域的问题。让我感到困惑的是,虽然中国经济、社会发展问题重重、困难重重,普通人都不难看出这些问题的严重性,不难看出其潜在的重大危机。许多发展中国家曾经历过经济的高速增长,但随后由于制度的瓶颈使得经济发展不能持续,甚至使整个国家陷入停滞和混乱。但从林毅夫的观点中却几乎看不到这些问题,一向都是正面、积极的看法,中国的前景似乎是一片光明、莺歌燕舞的。林毅夫提出的“新农村建设运动”,确实也有经济发展成果让农村居民分享的考虑,只是没有制度建设的保障,这一美好的愿望恐怕也很难成为现实。
林毅夫本人有很高的道德修养。2013年年初他再次被提名为全国政协委员,我作为工作人员到国家发展研究院(原中国经济研究中心)参加了对林毅夫的例行考察。几乎所有同事都对林毅夫的个人品德有很高评价,甚至有人认为他已经达到了孔子所讲的“仁”的境界。2002年林毅夫的父亲去世,他因“叛逃”大陆而无法回台奔丧,只能在经济研究中心设立灵堂,并做了文情并茂的《祭父文》,其传统文化功底也令人称道。林毅夫是在台湾出生并长大的,后来又去美国留学了几年,从他的背景和经历来看,他对大陆的政治、社会状况可能会有些隔膜。但林毅夫毕竟在大陆生活多年了,以他经济学家的观察力、判断力,应该不难看出大陆社会存在的严重问题。但林毅夫为什么对这些问题视而不见,对大陆经济社会的发展一直看好、一味“歌德”,他是有政治上的考虑,还是有意地选择性发表意见。林毅夫身上确实有一些让我不太理解的地方。
2008年林毅夫担任了世界银行高级副行长、首席经济学家,这当然是中国经济学界特别是他本人的很高荣誉。到了2012年林毅夫卸任之际,许多人都预测他回国后将获得重要位置,其中的一个传闻是他要出任北大校长。但是同以往的传闻往往会得到证实不同,林毅夫最后并没有当上北大校长,也没有得到其他重用,只是被安排为全国政协常委,其实此前他已担任过四届全国政协委员、一届全国人大代表。但是林毅夫毕竟担任过世界银行副行长,可能有关部门认为世界银行大约相当于中国的正部级单位,于是给林毅夫安排了一个全国工商联专职副主席的位子,算是给他解决了副部级待遇。前些年为杨振宁、李政道安排国内寓所的时候,据说就是按正部级标准掌握的,大概只有在中国才会有这些讲究。
如果光从名气、身份上考虑,林毅夫出任北大校长或许是一种合适的安排。但是基于林毅夫极少对政治、社会问题发表看法,对于北大的现状,我也从未听说他有什么看法。林毅夫管理过主要由高层次、高素质的海外归国人员组成的经济研究中心,但是对北大这样机构、人员非常庞杂,政治上又很敏感的地方,林毅夫并未表现出能够掌控的能力。何况目前的北大早已是污浊不堪、病入膏肓,我几乎可以肯定林毅夫不会对北大的实际状况有深入的认识,如果他真的坐上北大校长的位置,他的一世清名或许就会毁于一旦。所以我倒以为林毅夫没有当上北大校长,对他而言其实是一件很幸运的事情,爱惜羽毛的他没有必要去趟北大这道浑水。
我听国家发展研究院的教授们还说过:林毅夫在世界银行负责发展中国家事务,访问过不少发展中国家,特别是同一些非洲国家的首脑都有私交,有的首脑来华后还要专门会见他。林毅夫的出身、背景、经历,在国内经济学家中是独一无二的,如果能把他安排到相应的位置上,发挥他这些方面的优势和特长,或许可以为国家做更多的事情。当然我们更期待林毅夫作为一位有国际影响的著名经济学家,能够直面中国经济、社会面临的严重问题,发出一些更有力量的声音。
除了厉以宁、林毅夫之外,北大另一位最出名的经济学家应该就是张维迎了。他们三人中张维迎年纪最轻,但是出名也很早,我还上大学的时候,就在《中国青年报》上看到过张维迎的《为钱正名》一文,从此记住了这位出语惊人的陕西老乡的大名。当年张维迎只有20多岁,还是西北大学的一名学生。过了若干年之后,我听说张维迎来到了北大,和林毅夫等人一起创建了中国经济研究中心,此后他又去了光华管理学院,并成为厉以宁的副手。
迄今为止我和张维迎没有任何直接接触,对于作为经济学家的张维迎,我同样没有能力分析评价。不过张维迎后来当了北大的校长助理,并在2003年春季策划了北大的人事聘任制度改革。此项改革虽然是闵维方主张并坚决支持的,但改革的思路和具体的操作,则是张维迎提出并实际负责的。改革方案一经公布就引起了轩然大波,受到广泛的质疑和反对。此前对于张维迎经济方面的一些看法和观点,我还是不无钦佩之处的,但是他的“改革”却一下子让我大为失望。同北大众多的反对者一样,我也认为他的“改革”完全脱离了实际,根本不具备可行性。
为了阐释他的改革理念,张维迎还出版了《大学的逻辑》一书。我没有看过这本书,只是知道其中部分观点,他对中国大学存在的问题看到了一些,提出的理念也不无可取之处,但开出的药方却并不对症。凡是对中国大学有所了解的人都不难看出,中国大学最大的弊病是体制化、官僚化、商业化。张维迎对这些根本性的问题不能正视,却在“改革”中将大学教师的近亲繁殖,教师的聘任和晋升制度这些具体的问题当作改革的突破口,其失败是必然的。在受到强烈的反对之后,张维迎的改革基本上无疾而终,他本人也在当年召开的北大第十一次党代会上以倒数第一的票数落选党委委员,基本上断绝了进入北大更高管理层的可能性。
此后张维迎经过一些周折,还是当上了光华管理学院的院长。我曾认为张维迎管北大的事情不行,但是掌管光华管理学院或许可以,他那些教师职务聘任的办法在国际化、市场化程度已经很高的光华管理学院可能会比较适用。我不了解张维迎当院长的情况,但学院内部对他应该是有争议的,其间曾风闻解聘邹恒甫引起的纠纷,以及学院内部会议上对他的批评言论,令我这样的局外人难辨是非。不过以张维迎对待教师聘任制度改革时激进、坚决的态度,他在学院的管理上恐怕也难以做到比较灵活、善于妥协,引起一些争议估计是难免的。张维迎只当了一届院长,2010年他刚51岁时就卸任了。
作为一位著名的经济学家,张维迎的观点我偶尔会看到一些,他喜欢用“博弈”、“逻辑”、“理性”、“帕累托改进”这些词语说明经济学问题,令我这样的外行不能完全理解。张维迎的观点曾遭受过不少批评,例如他提出过公有制下官员腐败的存在,对经济、社会发展来说即使不是最好的,也是次优的,第二好的;反腐败力度把握不适当,带来的负效应也非常大;改革使得相对利益受损最大的应该是领导干部,其次是工人,接下来是农民;改革的基本前提是尊重既得利益;为什么穷人上不起大学?是因为收费太低,一个真正好的体制,我可以收费高,但我花80%在奖学金上,穷人就上得起大学了。这些观点单纯从实用的角度看或许有一定道理,但实在和一般人的常识与感受,和人民群众对公平公正的追求相去太远,令人难以接受。
不过张维迎在卸任光华管理学院院长之后,他所发表的一些言论倒让我有耳目一新之感。例如他说中国的大学像一艘破船,到处漏油,政府不去修船,而是不断地加油,以为加足够的油就能跑好。我以为这番话对中国大学的根本性弊端是看的比较清楚的,至少比他力主北大改革时更接近大学的核心问题。张维迎对于语言腐败的批判更是令人赞赏,他指出语言腐败导致道德堕落,中国未来的改革和发展,以及社会稳定,很大程度上依赖于能在多大程度上解决语言腐败问题,语言腐败的程度与言论自由和出版自由有密切关系,他号召人们向语言腐败开战。张维迎还对国家发改委的产业政策进行了质疑,认为政府实施的产业政策并没有使相关企业良性发展,而是导致产能过剩等一系列问题,认为发改委只关注发展,不太关注改革。
特别是我看到张维迎在《炎黄春秋》杂志社召开的落实宪法座谈会上,明确提出市场经济需要宪政,认为中国不进行真正的政治体制改革,不实行宪政民主,靠单兵突进的经济改革无法走下去,不可能建立起真正的市场经济。中国未来的改革首先是真正落实宪法、宪政、法治,然后才能够走到健康的民主道路上。我以为这些言论都是非常有针对性的,抓住了实质性的问题。或许是离开了管理岗位,摆脱了官场上利益纠葛的张维迎,才能够以一位学者的敏锐眼光更加客观地看待问题。年少成名的张维迎现在还正值壮年,期待他能以一位真正的经济学家的洞见,进一步大胆直言、勇于批评,为中国的改革发出更多高屋建瓴、振聋发聩的声音。
在北大的经济学家群体中,虽然厉以宁、林毅夫、张维迎三人名气最大,不过我实际接触最多的则是经济学院的李庆云教授。李庆云长期从事国际金融领域的研究和教学,是知名的金融学专家,他先后担任过第九、十届全国人大代表,第十一届全国政协常委,现任国务院参事室参事。李庆云有无党派人士的身份,是各级统战部门的重点联系对象,他比较低调、务实,不喜欢到处讲演、整天出头露面,所以经常有时间参加北大统战部召开的座谈会,就许多经济方面的问题发表看法;遇到中央做出重大经济决策或面临特殊的经济形势,我们还要专门征询他的看法,并作为动态反映上报给上级统战部门。
我对于李庆云的经济学理论同样没有了解,甚至还不如对厉以宁、林毅夫、张维迎的了解多,毕竟他们的言论经常出现在各种媒体上,而李庆云则没有那么大的媒体关注度。李庆云的观点给我印象最深刻的,是他对于民生问题的关注,特别是对低收入群体的关注。作为全国人大代表和全国政协委员,李庆云参加过多次全国“两会”,不论在会上还是会下,他最为关注的都是社会的公平公正问题。李庆云多次讲到民生问题,例如他提出要注意解决低收入者的教育、医疗、基本生活保障;他认为提高农民收入的关键是提高农民的受教育水平,教育水平提高了,他们自然就有条件选择增加收入的行业、机遇;他还指出中国的低收入者占人口比例很高,低收入群体对通货膨胀的承受力很低,生活必需品价格上涨对低收入群体影响很大,出台任何政策都要考虑到他们的切身感受;他认为春节期间火车票价上涨没有道理,农民工回家探亲是一种刚性需求,不能只顾涨价而不考虑农民工的承受能力。
李庆云对城市住房问题也非常关注,他很早就提出解决住房问题应该采取政府加市场的模式,而不应该将其完全推给市场。他主张各级政府应该建立住房发展基金,通过大量建造廉租房解决低收入群体的住房问题,认为要发挥政府在调节房价上的作用,最有效的举措也在于建设廉租房。而目前廉租房建设和实际需求相比只是杯水车薪,只有提供了保障性住房,才能让农村人口转化为城市人口,解决中国的城镇化问题。李庆云还不断呼吁公共财政和公共产品要逐步均衡化,主张要减少行政支出,降低政府的行政成本,将更多的资金向欠发达地区和农村倾斜。对于低收入群体,李庆云经常用“劳苦大众”这样一个已经陌生的词汇称呼他们,流露出对他们的深切同情和关怀。同厉以宁、林毅夫等人相比,李庆云没有那么大的名气和影响,但他提出的观点却更接地气,更能站在普通老百姓的立场上去考虑问题,他对于民生问题,对于低收入群体的关注在北大经济学家中是比较突出的,代表着北大学者的一种良心和社会责任。
经济学是当今的显学,北大的经济学家又是极受关注的一个学者群体。我在学校里耳濡目染,难免也会对他们形成一定的印象。我反复说过我不懂经济学,所看到的仅是这几位经济学家的某些侧面,即使我对厉以宁、林毅夫、张维迎等人有一些看法,也绝无否认他们为中国经济学科的发展,为中国的经济改革做出过重要贡献的意思。以我比较粗浅的理解,经济学是经世致用的,应该更多地关注社会现实问题。北大曾经有过马寅初校长这样的经济学家,他对于国民党特权阶层的抨击,对于中国人口问题的远见,乃至对于无理批判表现出的“决不向专以力压服而不以理说服的那种批判者们投降”的精神,无不体现了一位杰出的北大前辈学者的社会责任感和傲然的骨气。我想社会公众对北大的经济学家,对北大的学者们最为期待的,正是这种强烈的社会责任感和勇敢无畏的精神。希望北大的学者们不要再让他们失望了。
北大的分配制度
 
我1985年刚参加工作的时候,北大的办学经费主要来自国家拨款,所能支配的财力极为有限,教职工的工资也普遍很低。第一年我每月只有58元的见习期工资,第二年涨到了70元。从学校的领导到教师、职员,基本上只能拿到按国家标准发放的工资,也有少部分单位可以搞一点创收,收入比只有工资收入的稍好一些,对这些创收单位学校大概有一些提成。在我参加工作的第二年,财务处长有一次上楼来讲,明年争取给机关每人发200元奖金,我为此还颇为激动。当时学校财务处就设在办公楼一层的一个大房间里,总共也没有多少人,但全校的财务工作都在这里运转。
此后的若干年里,虽然我的工资收入逐渐有所增加,也有了学校创收带来的补贴,但数额极为有限。在我参加工作后的十多年里,虽然我还没有家庭负担,但一直都是“月光族”,几乎没有任何积蓄。北大除了部分有创收能力的院系、部门,以及校办产业之外,一般基础学科的院系、学校党政机关普遍收入很低。我记得1990年代初期或中期,《南方周末》曾原样刊登了北大一位副教授的工资条,总额只有300多元,扣除掉房租水电等费用之后,这位老师还倒欠了学校一些钱,引起无数人唏嘘不已。那些年北大的青年教职工出国或下海经商的很多,主要原因还是由于北大的待遇实在太低了。
这种情况一直持续到2000年。1998年北大百年校庆提出了创建世界一流大学的计划,这一计划得到了高层领导及教育主管部门的支持。从1999年开始,北大在三年内分批得到了3、6、9亿共18亿元的投入,此后每年还有一定的经费支持,具体数额我不清楚。有了这笔资金,1999年北大开始制定人事分配制度改革方案,由校长助理兼人事处长陈文申具体负责,当然主要的决策者肯定还是任彦申。北大1999年的人事分配制度改革和2003年的教师聘任制度改革,具体的操作者分别是陈文申、张维迎两位校长助理,但他们背后都有主要领导人的强力支持。只是后一项改革曾引起轩然大波,基本上胎死腹中;前一项改革则已经实施多年,成为了北大基本的分配制度,但迄今没有人提出疑问和反思。
在人事分配制度方案正式出台之前,任彦申提出过“增加存量、拉开增量”的思路,意思是说新的分配制度将在现有收入的基础上,通过发放岗位津贴的方式普遍增加教职工的收入,但津贴部分要拉大差距。任彦申还提出要通过这次改革达到精简机构、减员增效的目的,要合并或撤销一部分机构。另外要将学校行政机关各个“处”改称为“部”,说是“处”体现的是政府机构的特点,而“部”则能够减少行政色彩,因为公司的下属部门也可以称为“部”。例如将人事处改称为“人事部”,将原来处下面的科改称为办公室,如人事处工资科改称为人事部工资办公室。一部分机构确实撤销了,如学校的秘书长、教务长、总务长“三长”不再设立,还撤销了社会科学处、老干部处等一些部门,其职能和其他部门合并,另外还要求“部”以下尽量减少内设机构;后勤方面则取消了事务处、伙食处等处级建制,改称为各个中心,后勤职工不享受学校津贴。不管是称“处”还是“部”,其行政级别和职能都没有任何实质性变化,只是当我第一次看到学校人事部的文件时,却一下子糊涂了,还以为是国家人事部发的文。
方案制定过程是不公开的,其间我没有得到任何信息。我当时就有一种担心,主要是担心机关干部的岗位津贴标准,可能会比较多地考虑行政职务的因素。到了1999年底,北大人事分配制度改革方案终于出台,其中教师津贴分为9级,最高一级每年5万元,院士等少数人可以享受到,正校级也是这个标准,其他教师1、2、3、4万元不等,最低一级只有3000元,相差近17倍;机关干部则根据职务得到不等的岗位津贴,例如正处职干部每年大概是3万多元,一般干部只有5、6千元。以前机关干部除工资外也发过少量补贴,但彼此差距不大,正处职干部和普通干部之间相差不到一倍,但按照新的津贴标准,则相差了5倍以上。津贴标准还对干部的任职状况进行了特别考虑,例如设定正处级干部的基础津贴为每月2400元,如果任正处实职则在此基础上每月增加800元,如果只有正处级别而没有正处实职,则只能拿到每月的基础津贴,其他干部则依次类推,副处职每月增加600元,正科职400元,副科职200元(后来这些标准多次调整,但我一直无从得知调整后的数据)。
我事先的担心完全变成了现实,教师部分姑且不论,与我关系最直接的机关干部津贴,果然完全是按照行政级别和职务确定的。具有讽刺意义的是北大校方一再强调人事制度“改革”要淡化学校的行政色彩,减少行政机构,但制定的方案却是在强化行政职务的作用,鼓励增设行政机构。我那时候对校方还抱有一定幻想,就写了一篇6000字左右的意见,对学校机关人事分配方案提了一些看法,提交给党委书记任彦申、副书记岳素兰。任彦申没有理睬我,岳素兰倒是和我谈了一次话,但没有涉及我提出的实质性问题。
北大自上世纪九十年代以来一直有明显的行政化、官僚化的倾向,但是1999年的人事分配制度改革,则是北大彻底走向行政化、官僚化体制的关键一步。这次“改革”,尤其是学校机关的“改革”,分配方式完全以行政职务为主要依据,首先从制度上确保了北大官员群体的利益;其次,这次“改革”是在信息完全不对等、决策完全不透明的情况下进行的,北大的行政权力就此掌握了对教职工的支配权。此后校方无论再做什么重要决策,实际上都可以不征求教职工的意见;再有,北大教职工以前虽然收入不高,但拿的是国家标准的工资,自认为是国家干部身份。而学校用于津贴的资金虽然主要是国家财政提供的,但如何进行分配却是由校方掌握的,教职工的身份也似乎从国家干部变为学校的雇员,由校方决定教职工的待遇和去留。
等到1999年底陈文申在办公楼礼堂解释这次“改革”方案时,生米早就煮成了熟饭,只不过是执行前通报、说明一下。虽然北大的许多教师、干部、职工对方案都有意见,认为校方是既当裁判员又当运动员,是把人分成了三六九等,是不公平、不公正的,但是都无能为力,没有任何有效的反对方式。
“改革”方案一经实施,我在提交给任彦申等人的意见中预见的机构和干部职数增加、许多人心理不平衡等后果就马上显现了出来。我在这次“改革”中到了统战部,有关部门说统战部人员少,不能设内部机构,于是我长期连科级干部的职务都得不到,只能拿副高职称的基础津贴。然而一些比较明白的部门则抓住了机遇,增设了不少内部机构,有的权力部门甚至做到了人人都有职务,从而得到了相应的待遇,尽管这次“改革”的一个重要目的是要减少机构和干部数量的。由于收入上的落差给许多教师、职工带来的羞辱和伤害则是巨大的,曾有一位著名的党外人士对他只拿到二级教授的津贴感到很没有面子。当时还在校医院任党委书记的付新和我们说过:以前医院的行政人员需要加班,都没有什么二话,现在则是到点就走,不愿意承担任何额外工作。闵维方上台后北大曾组织了一个几十人的代表团赴美考察,说是要学习世界一流大学的管理经验。我曾问过考察回来的一位中层干部有什么收获?没想到这位老兄没有直接回答我的问题,而是张口就来了一句:陈文申的改革是扯淡!他的意思是说美国大学根本就不会有北大这样大的收入差距。
这次“改革”初期确实减少了一些职能部门,但有的部门没过多久就恢复了。随着时间的推移,“改革”所要达到的精简机构、减员增效的目的完全失败,学校秘书长、教务长、总务长“三长”陆续恢复,校长助理以前只有两三位,现在则长期保持在10位左右,曾经撤销的部门基本上都重新设立,而且又陆续增设了一批正处级机构。各部门内部的常务副职、副职、内设机构和人员更是增加了不知多少,一个部门有六七个副职的绝不罕见,反正多设一个职务就能多提高一份待遇。以前我在办公楼上班的时候,里面有党办、校办、纪委、组织部、宣传部、统战部、财务部等多个部门,后来虽然只留下党办校办,但已经快容纳不下了。我虽然早就估计到这种依据行政职务的人事分配制度必然会导致机构和干部职数的增加,但还是对学校机关的膨胀程度感到吃惊。
当初“改革”所取消的后勤各处也于2012年以新的形式全面恢复,将其重新纳入学校行政体系中。2013年上半年一位以前的后勤负责人和我谈起:那次“改革”完全不听后勤部门的意见,不从后勤的实际出发,一批后勤干部为北大服务了很多年,却在“改革”中一下子没有了位置,感到非常伤心。这次“改革”大伤了北大后勤的元气,将后勤系统排除在学校岗位津贴范围之外,更是冷了后勤职工的心,让他们觉得自己成了后娘养的,其对北大后勤管理和学校建设造成的负面影响更是无法估量的。就是这样一场伤筋动骨的后勤“改革”,十多年后却以回到之前的体制内而最终收场,而且后勤职工的津贴、待遇等问题仍然没有妥善解决。
1999年人事分配制度“改革”的最大成果,就是极大地加强了北大的行政权力,学校行政化、官僚化的倾向受到了极大鼓舞。到了2003年,北大的行政权力又开始对教师队伍大动干戈,在闵维方的强力主导下,张维迎提出了教师聘任制度改革方案。只是这次他们大概也没有十足的把握,没有搞暗箱操作,而是将方案提交给全校讨论。由于这个方案将危及到许多人的饭碗,北大不少教师才明确表示反对,使得这次“改革”最终不了了之。但是北大的行政权力并未就此受到限制,北大的教职工在不危及自己饭碗的情况下,对行政权力的扩张仍然没有任何警惕和防范的意识,行政权力在北大变得越来越强大,越来越肆无忌惮。
此后北大的津贴又经过了几次调整,虽然基本上都是微调,但行政部门从来没有公布过调整的依据和方案。到了2011年,北大大幅度地调整了岗位津贴,同以前的几次微调一样,也完全是暗箱操作。对于各类人员的津贴标准,例如正校级、副校级、卸任的校级领导、校长助理、处级干部,或者是一二三级教授,行政部门都没有透露任何信息,我至今不知道自己的津贴标准是多少。有人试图向人事部门了解一点具体情况,得到的回答很简洁:都给你们算好了。虽然1999年的人事分配制度“改革”被认为是“扯淡”,但陈文申起码还告诉我们“淡”是怎么“扯”的。之后北大任何一次收入分配调整,却是再也没有人愿意给我们解释了。
2011年岗位津贴调整后,在一次学校机关党委的学习会上,我看到人事部长等人在场,就以中央领导人强调决策民主化为由,提出为什么这么大幅度调整津贴不公开透明,我自己都不知道是什么标准。人事部长似乎有些不快,说你自己还不知道拿了多少吗?我确实知道自己拿了多少钱,但我不知道自己为什么拿到这些钱,更不知道其他人拿了多少。组织部的一位负责人则表示说这样做是为了提高效率,再说很多人并不在乎增加了多少津贴。此后不久人事部长在另一次会上说了两个数字:调整后党委书记、校长和院士每月的津贴是2万元,每年24万,长江学者每年18万。这是迄今我从正式渠道获悉的仅有的两项数据,此外我从其他渠道估算出正处职干部每月津贴大概是1万元左右,副处职干部7000元左右。2013年暑假前我见到李庆云教授,他告诉我他拿的是一级教授的津贴,每月1万元。当我告诉他书记校长的津贴是每月2万元时,他也感到有些出乎意料。我还从一位有资格参加学校办公会议的干部那里得知,在讨论这次津贴调整的办公会上,人事部长没有拿任何白纸黑字的文字材料,只是用U盘演示了一下。保密保到这个份上,莫非真是见不得人的?至于有资格参与决策的其他领导们都是什么标准?我一直无从得知,但肯定是一个让他们满意的数字,调整方案当然会顺利通过。在北大行政权力的支配下,学校领导层甚至不需要直接出面,职能部门自然会考虑官员阶层的整体利益。
北大不乏一些创收能力比较强的院系,也不乏一批掌握着大量资源的学者,他们或许可以不在乎学校的津贴。但北大大多数教职工的收入主要依靠工资和岗位津贴,工资部分有国家标准,数额不是很大,差距也不会太大,而岗位津贴现在已经是教职工收入的主要来源,标准的掌握则完全取决于校方。北大在历次制定分配制度方案时,行政权力都起了唯一的决定性作用,虽然学校的领导们也经常强调北大预算缺口很大,面临经费不足的压力,但丝毫不影响他们大手笔地提高自己的待遇。就在我写这些文字的时候,北大于2013年底再次增发了职务补贴,我仍然无从得知这次补贴的范围和标准。北大的广大教职工并不奢望超过学校财力的收入增长,他们只是希望有一种相对公平的分配机制,在利益分配上能得到公正的对待,但是这样的机制至少从1999年起就已经不存在了。
北大的住房政策
 
在2000年之前,北大教职工的住房条件普遍比较简陋。除了一些资格很老的教授、干部能住在燕南园、燕东园、朗润园等处面积较大的旧房子之外,包括在任的校长丁石孙、陈佳洱,许多著名的学者如厉以宁、袁行霈等,住的都是中关园、畅春园上世纪八十年代建造的老式三居室住宅,建筑面积只有70平方米。罗豪才当副校长以后才住进了中关园的三居室,他是归国华侨,生活上比较讲究一些,听说他进行了比较细致的装修,说是估计后半辈子就住在这里了。其他教职工只能住一居室、二居室,建筑面积从40多到60多平方米不等;条件更差的则住在筒子楼里,一家几口只有一间10平米的宿舍,卫生间是公用的,做饭只能在楼道或公用厨房。更年轻的教职工无论结婚与否,都只能和别人合住一间筒子楼宿舍,我参加工作后就住过13年筒子楼,头两年是6人一间,然后是3人一间、2人一间,最后一年才算有一间自己的宿舍。曾和我合住的一位经济系的青年教师,结婚后只好把旁边一间空着的房间撬开门住进去了,不久就因为忍受不了北大的艰苦条件下海经商了。不少后来成了名人的专家、学者,我在不同时期都见过他们出入于筒子楼的身影。
不管是过去还是现在,住房在北大都是极为紧缺的资源。以前北大实行的是福利分房制度,规则比较清楚,以综合打分的方式进行严格的住房分配排序。打分的规则考虑了教职工的职务、职称、年龄、工作年限、学历、家庭成员等综合因素,达到了一定的分数,才可以分配到相应的住房。当然随着住房货币化的逐步实施,分配住房时也需要交纳一定的费用,或者以当时的物价水平购买分配到的房屋。这套规则在北大长期实行,一直得到教职工的认可。学校对住房制度的执行也比较严格,大概在1980年代中后期,我曾看到历史系的老二级教授周一良一脸无奈地来找党委领导,原因是他和一位学部委员(院士)共同分到了燕东园一座二层小楼,两家各住一层。但这位学部委员却先下手为强,将两层朝南的房间私自占据了,留给周一良的都是朝北的房间。事情后来是怎么解决的我不清楚,但北大房管处当时是发了通告的,对这位学部委员通报批评并要求其腾出所占房屋。
到了1990年代中后期,北大和清华在两校之间的蓝旗营共同开发建设教职工住宅。北大上世纪七八十年代之后陆续建设的中关园、畅春园、承泽园、燕北园等住宅小区,每套房子的建筑面积基本上在70平方米左右,最多不超过80平方米,而且都是没有电梯的老式楼房。蓝旗营住宅则比以前有很大改进,其中“院士楼”每套房子的建筑面积达到140平方米,此外大多是120平方米的三居室,还有一些80多平方米的两居室,都是有电梯的高层楼房。经过了数年的开发建设,大概在1998年前后,蓝旗营住宅分配销售工作开始启动。
我曾听任彦申说蓝旗营住宅的建设成本大概在每平方米6000元左右,但当时北大大多数教职工的月收入也就是一、二千元,如果按成本价出售给教职工,大多数人将无力承受。最后确定销售给教职工的价位是每平方米1800元,其他成本由学校可能还有政府共同承担。蓝旗营住宅虽然是销售给教职工的,但个人承担的只是不到三分之一的建设成本,实际很大程度上还是一种福利分房。蓝旗营一共有1200套房源,北大、清华各占600套,资源比较有限。对于如何分配这批条件明显改善的住房,广大教职工都非常关切。
任彦申多次讲过蓝旗营住宅的分配问题。我听他说房管处按过去的规则进行了排序,有资格购买住房的大部分将是离退休人员,600套住房排在最后一位的是中文系的中年教授曹文轩。任彦申认为以前的排序办法不行,蓝旗营住宅应该优先考虑在职人员,必须重新制定排序规则。优先考虑在职人员确实有一定道理,毕竟他们承担着北大主要的工作任务,但是离退休人员也在北大干了一辈子,他们也有改善住房的强烈愿望。如果本着遵守既定规则的原则,是可以通过充分的讨论协商,例如可以在离退休人员和在职人员之间划分出一定的比例分别排队,划分比例时向在职人员适当倾斜,相信这样做也能得到广泛的理解和支持。但是北大最终的做法却是另起炉灶,完全推翻了以前的规则,重新制定了住房分配排序办法。
我当时既无资格也无能力购买蓝旗营住宅,所以对于新的办法没有过多留意,只听说离退休人员基本上被排除在外了。后来我开始关注北大的住房分配政策,才基本上弄清楚了从蓝旗营开始实行的新的住房分配规则。这一规则的核心是以职务高低作为最主要的排序规则,在职务相同的情况下则根据任职时间,基本的顺序是教授在前、副教授在后,处长在前、副处长在后,如果同样是教授、处长,则根据任职时间排序,其他职务的依此类推。至于年龄、资历、工作年限等均不在考虑之列。这种规则排序的结果是30岁的教授一定排在60岁的副教授之前,30岁的处长也一定排在60岁的副处长之前;同样是教授,如果当教授的时间早,也一定排在年龄更大、工作时间更长,但当教授较晚的人前面;处长排在教授之列,副处长排在副教授之列,只是将任职时间比教授、副教授推后了两年,例如一个处长或副处长是2000年任职的,那么他们将分别排在2002年任职的教授、副教授之列。北大的教师多数到四十多岁以后才能晋升为教授,一般三十多岁才能晋升为副教授,但是三十来岁的处长、二十来岁的副处长则大有人在,实际上他们往往会排在同一年龄段的教授、副教授之前。此外蓝旗营分房还照顾了一些特殊人员,例如校办公司的人开始没有在排队之列,但是叶丽宁找任彦申一要求,作为资源公司总裁的她就按照正处级待遇分到了一套住宅。
蓝旗营住房分配彻底改变了之前运行多年的排序规则,虽然有优先照顾在职人员的考虑,但实际上在北大开了一个非常恶劣的先例,其最大的后果就是对于既定规则的无视。这种无视规则的做法后来则不仅限于住房分配,北大在诸多重大决策中不讲原则、不守规则,而是以领导人的意图为最高准则,实际上都受到了蓝旗营住房分配随意改变规则的影响和鼓励。另外这一规则改变的最大受益者无疑是北大的官员群体,同北大的人事分配制度照顾官员群体一样,北大的住房政策也是照顾官员群体的,而且力度更大,毕竟一套住房的价值要远远超过多年的工薪收入。在住房、收入这些最主要、最基本的需求方面,北大毫无顾忌地将利益杠杆向官员群体倾斜,无疑对北大行政化、官僚化体制的形成起到了极大的促进作用。在职务和住房、收入如此密切相关的政策鼓励下,尤其是对于年轻干部群体来说,尽可能早的谋求到一官半职几乎成为他们的最高理想和人生目标,北大的官场风气想不浓厚都难。与之相联系的,则是北大职员阶层的整体失落,那些维持北大正常运转不可或缺的普通职工,例如教务员、实验员、工勤人员等群体,即使他们为北大辛苦工作一辈子,在住房、收入等方面永远也赶不上一个年轻的处级干部。北大过去不乏一批业务精湛、受人尊敬的老职员,但是在新的分配机制下,他们的故事已经成为一种传说。
蓝旗营住房当年是按每平方米1800元的价格出售的,经过这么多年的房价上涨,目前的房价估计已达到每平方米数万元,如果用于出租,一套三居室的住宅每月可以租到一万多元。当初规则的改变无疑使一部分本来分不到住房的人获得了巨大的利益,当然同时也使另外一部分人失去了巨大的利益。北大的绝大多数教职工和我一样,根本没有意识到蓝旗营分房规则改变带来的影响,或许是当年每平方米1800元的房价已经超出了一般人的承受能力,特别是超出了离退休人员的承受能力,总之我没有听说北大有人对这样的规则变化提出过疑义。实际上从蓝旗营住房分配开始,北大教职工已经基本上放弃了维护自身权益的诉求,所以一年后北大进行人事分配制度改革,决策层不征求教职工意见就完全是顺理成章的。
蓝旗营之后北大没有再独立建设新的教职工住宅,只是2003年前后在西二旗教师公寓得到了一批房源,排序规则延续了蓝旗营的做法,而不再回到以前按综合因素打分的办法上。由于西二旗房源相对较多,离北大又比较远,当时北京的房价还没有高到离谱的程度,许多人不愿意住那么远,放弃了这次机会。因此住房分配的压力不大,这套新的排序规则没有引起突出的矛盾。
此后据我了解,北大不知道和什么地方合作,在五道口建设了一批住宅。听说房子早就建好了,由于和合作方在房源支配上分歧很大,经过了多年的扯皮,一直到2011年底,终于听说有几百套住房可以归北大所有。这批住房还是带有福利性质的,大部分是120平方米左右的三居室,还有一些90平方米左右的二居室,将以远低于市场的价格出售给教职工。我从1998年起一直住在畅春园的一套一居室住宅,也有改善住房的迫切需求,因此对五道口的住房分配方案比较关注。
学校将五道口住宅分为三类,其中两类说是要定向置换,要把中关园等园区的住户迁到五道口。我不知道学校是怎么考虑的,虽然五道口住宅远低于市场价,但一套房子的价格至少还在100万元左右,而住在被置换园区的多数是离退休人员,他们终其一生的收入也不超过100万元,果然最后只有少部分人愿意置换。除了用于定向置换的以外,大概还有300套房子可以提供给教职工排队分配。
学校房管部很快公布了有资格参加排队的人员名单:排在最前面的是5位中国科学院和中国工程院院士。院士本来只是一种学术头衔,但实际上早已演变为伴随着一系列待遇的特殊职务,把5位院士排在最前面也还说得过去;第6位是夏文斌,1962年出生,党委宣传部长,2010年晋升为正高职称的研究员,此前不久被任命为北大对口支援的新疆石河子大学副校长,教育部发文明确为副校级干部;第7位是李庆云,1944年出生,1992年晋升为教授,社会职务为全国政协常委、国务院参事室参事。年龄比李庆云小了近20岁,获得正高职称也晚了近20年的夏文斌,只是因为有了副校级干部的身份,就被排在了有很高社会地位的李庆云之前。其间在一次党外人士座谈会上,我听周其凤说起五道口住房分配,他说我们搞的不是官本位。我实在不明白夏文斌排在李庆云前面,除了说明北大是官本位压倒一切之外,还能做出什么别的解释。后来大概由于意见比较集中,夏文斌的名次被往后排了10位左右。
排在李庆云之后的是一批资历比较老的教授和正处级干部,再往后从200多位到300余位之间一批三十多岁的正处级干部比较显眼,他们排在可以分到三居室的位置。我是副高职称,虽然资格较老,也只能排在350位左右。房管部门的人说排在前面的不会都要,我有可能分到二居室。再往后我看到了一批资深职工,年龄大约在55岁至60岁,其中有的人我经常打交道,他们长年工作在繁忙的岗位,但是只有中级职称和科级职务,所以大都排在800位之后,根本不可能分到房子。我虽然有可能分到二居室,但就是分到了也难免心里很不平衡,所以放弃了这次机会。
五道口住房排序再次充分说明了从1998年蓝旗营住房分配,1999年人事分配制度改革,2011年津贴调整体现出的北大的利益分配始终向官员群体倾斜的格局。普通教职工在北大踏踏实实、任劳任怨地工作是没有多少回报的,我曾经说过在北大是“干一辈子不如干一阵子”。有的年轻人毕业没几年,或者比较会来事,或者有什么背景,很快就当上了处级干部,从而在收入水平、住房条件等方面一下子就跃升到一般人难以企及的高度。而那些辛辛苦苦在北大工作了几十年的普通教职工,则一直在资源的分配上处于最弱势的地位。
恰好在五道口住房排队名单公布之际,朱善璐到统战部走访,我当面向他反映了对五道口住房分配的意见。我的意见不可能有什么作用,朱善璐也没有表达要进行任何调整的态度,只是说让房管部长找我听取意见。此后不久,房管部长告诉我说让我参加肖家河住宅售房工作小组又过了一年左右,2013年初学校正式发布了肖家河教师住宅售房工作领导小组和工作小组名单,我确实名列工作小组成员之中。
肖家河是北大开发建设的一个住宅小区,位于北五环肖家河桥旁边,和北大的距离不太远。这个项目从任彦申当政时就开始策划了,正式启动至少也有10年以上,据说可以建设几十万平方米的住房。这么多年来北大教职工盼星星、盼月亮似的盼,只盼到北京的房价越来越高,越来越难以企及,肖家河住宅却一直是水中月、镜中花。对这个项目的开发建设我没有多少了解,但也不难体现北大官僚体制下的超低效率,我们只听说建设成本越来越高、代价越来越大,可能提供给教职工的住房面积却越来越少。虽然开发过程中有政策等方面的困难和限制,但一位曾长期在后勤工作的负责干部跟我说过,如果学校能够选用好合适的人,加大工作力度,肖家河项目早就应该建成入住了。然而这些年的北大却是眼见得不断有人加官进爵,眼见得整天做各种表面文章,直接关系到教职工切实利益的事情却是效率极低。北大大大小小的官员早就多得令人目不暇接,但是真到干实事的时候,却又如同《红楼梦》里的荣国府,“安富尊荣者尽多,运筹谋画者无一”。
肖家河项目是可预期时间内最后一批由学校开发建设的房源。这批房子什么时候建好?将以什么样的办法出售?这些问题无疑都是广大教职工极为关切的。同直接抛出五道口住房出售办法不同的是,这次学校毕竟还成立了一个工作小组。但是一直到目前为止,工作小组只在2013年暑假前开过一次会,我是在会上才得知肖家河住宅规划设计已经完成,其中设计了一百多套180平方米的住宅,至于为什么要这样设计就不是我能够了解到的。那次会议没有讨论任何实质问题,此后工作小组也再未召开过会议。但是既然成立了这个小组,校方恐怕也难以将其当作一种摆设。我虽然能力有限,所能发挥的作用有限,也愿意付出自己的全部努力,和其他同志共同呼吁,使这批住宅能够以相对公平合理的办法出售给教职工。我更希望北大的广大教职工不要把对公平公正的期待寄托于学校的决策者,而是应该适时发出自己的声音,充分表达自己的诉求,否则在肖家河这个牵动全校的地方,将有可能再一次摆成北大权贵阶层的盛宴。
 
 
附录:
对学校机关人事分配制度改革的几点意见
任彦申书记、岳素兰副书记并其他校领导:
 此次学校机关机构改革和以设岗聘任为主要内容的人事分配制度改革取得了很大成绩,特别是对学校机关各部处进行精简、分离,明确了学校各部门的管理权限,减少了干部职数,实现了减员增效的目的。去年年底人事分配制度的改革也已经到位,学校大多数教职工的个人收入得到了很大提高,其幅度之大在北大的历史上是空前的,对广大教职工是极大的鼓舞。可以说学校的机构和人事分配制度改革已经取得了初步成效,国家对北大的重点投入已经落到了实处,将有效地促进北大的改革和发展,促进北大的教师、干部为建设世界一流大学而努力奋斗。
但是从目前的情况和各种反映来看,我个人认为学校在人事分配制度的改革上还存在着一些问题,希望能够在这里谈一点个人的看法,仅供学校领导同志参考,如有不妥之处,敬请批评指正。由于我对学校的全面情况了解有限,我想仅就学校机关和行政人员的津贴发放办法谈一点个人的意见。总体而言,我认为学校机关和行政人员的津贴发放办法存在着一些问题,主要的问题是这种办法没有充分考虑到机关和行政工作的一些特点,以及机关部门负责人和一般职员之间津贴标准差距过大。
下面我将分几个方面来谈一谈对这个问题的认识:
一、    机关工作一般是非专业技能性的并且难以用量化的指标来衡量
一般机关的工作有其内在的规律性和特点,学校机关也不能例外。总体而言,机关工作基本上不需要特别的专业技能,但是却需要很强的集体协作性,机关干部的工作成效很难用量化的指标来衡量。对于一个公司的部门经理或销售员,可以根据他完成业务的情况来决定其收入高下,而且还必须是那些可以明确衡量其业绩的部门和人员,对于事业单位的机关和行政人员就很难这样做。机关各部门固然需要优秀的负责人,但是就一般情况而言,真正优秀的干部,能够开拓创新,让一个部门、一个单位的工作发生显著变化、取得突出成绩的干部还是比较少的,对于这些干部可以用其他更有效的方式进行奖励。机关干部的职务一般并不具有很强的专业技能性和不可替代性,换言之,假如一个部门换一两位负责人,工作一般不会受到太大影响;在部门内部也是如此,各个角色往往是可以互相替换的。
机关工作要做好、做的很有成效是比较难的,但是一般化地去做又是相对容易的,对机关干部的工作成效难以用明确的标准去衡量。当然,由于承担的工作任务和责任有大小之分,部门负责人和一般工作人员的收入也应该有差距,但是这种差距应该在一个合理的范围内。而目前的分配办法中部门负责人和一般工作人员的津贴标准相差五倍左右,分配政策明显向干部倾斜,这样不符合机关工作需要很强的集体协作性的特点,使一般工作人员感到自己的价值没有得到必要的承认,不利于调动他们的工作积极性。而且在目前的社会现实中,干部通常会比普通工作人员得到更多实际的好处,如个人的成就感,各种机会等,一个人如果当上了一定职务的干部,分配体制就会自动对他有所倾斜,虽然并不以货币形式表现出来,但却是大家都能感受到的,即干部职务本身就是一种有效的奖励方式。现在再用货币的形式突出强化职务奖励,拉大其本来就有的和普通职员的分配差距,但却并没有容易操作的量化指标来衡量其任职成果,其做法是值得商榷的。
二、    高收入者所应具有的两个前提条件
我们知道,在市场经济比较发达的国家,例如在美国,其高收入阶层分布很广,但是比较突出的是文艺、体育明星和大企业总裁等。这些高收入者恐怕都具有这样两个前提条件:一是专业技能突出,其价值很容易由市场来衡量;二是具有很大的风险性。NBA巨星乔丹3000多万美元的年薪并没有人认为他拿的多了,他超群的技能固然无人能比,他的复出就为整个NBA产业带来可以计算的收益达上百亿美元,甚至带动了美国经济的增长;亚珂卡当年拯救了濒临破产的克莱斯勒汽车公司,尽管他的年收入也达到了数千万美元,但是只有数万美元年薪的工人们并没有认为不合理,因为他保住了他们的饭碗,使他们不至于失业。他们的价值是由特殊技能决定的,并且很容易由市场来衡量的。但是明星们一旦不再受欢迎,总裁们一旦经营不善,他们就会很快下台,其收入也直线下跌。美国的律师、医生、计算机等行业从业人员的收入也比较高,但也都是由技能和市场来衡量的,有很大的竞争性和风险性。
当然北大机关干部的收入远不能和美国人相比,但是在我们这个低收入国家的全民所有制企事业单位中应该已经是比较高的,而高收入者的两个前提条件却并不具备。上面我已说过机关干部一般并不具备特别的专业技能及很容易量化的指标,即使风险性也几乎是不存在的,我们的干部只要不犯严重的错误,一般是不会被免职的,即使不再担任具体职务,也仍可享受相应待遇,几乎没有任何风险性可言。这种缺少专业技能性和风险性的高收入是难以得到普遍认同的。
三、    高收入并不是干部奖励的最佳方式
机关工作人员需要有适当的奖励方式,但是就一般情况来讲,进入机关工作并不是为了得到很高的待遇,而是为了更适合自身的特点和发展,对机关干部应该采用政府部门官员的奖励分配制度。我上面讲过美国有许多高收入者,但是美国政府官员的薪金并不高,甚至总统的年薪只有20万美元,政府部长只有6、7万,远不及大公司总裁的收入。但是美国人绝不会担心没有人去当总统、部长,相反倒有不少总裁放弃高薪去政府部门任职。我国的政府机关尽管待遇也不高,在目前市场经济的背景下,也一直没有出现过乏人问津的情况。对机关的干部,尤其是对年轻干部来说,上进心和成就感是最重要的,因此最有效的奖励方式就是对他们适时进行提拔,委以重任,能让他们在更大的范围、更重要的岗位上发挥才能,收入高低则是次要的。
为此我们应该不断改进干部的选拔任用制度,拓宽对外输出干部的渠道,使干部能够在他们精力最旺盛、创造力最强的时候充分发挥作用。提高待遇固然是对他们工作职责的肯定,但并不是对他们最有效的奖励方式。何况在目前的分配制度下,同等级别的干部其津贴是相同的,并不因为其职务和岗位重要性的不同而有所区别,某种程度上反而会影响其积极性。我们校级干部的岗位毕竟十分有限,对外输出干部的渠道也很有限,高收入甚至可能会使某些干部安于现状,不思进取,以保住目前职务为要;也可能会出现在输出干部时由于贪恋北大的高收入而不愿离开,该离任时不愿离任,该提拔任用的干部不能及时提拔任用等情况,使北大干部队伍的出入口被堵塞,不利于干部队伍的建设和年轻人才的脱颖而出。
四、    建设高素质的职员队伍是提高北大管理水平的关键
如果我们将机关部门的负责人比做“官”,而将一般工作人员比做“吏”,那么提高北大管理水平的关键在“吏”而不在“官”。相比较而言,“官”是经常流动的,而“吏”却是相对固定的,他们可能长时间,甚至一辈子在一个部门工作。他们更熟悉本部门的历史,熟悉各种规矩、程序和制度,某种程度上他们更具有一定的专业技能,如果离开了他们,许多工作就会难以为继,甚至出乱子。许多专业性较强的部门更是需要一批熟悉业务的老职员,他们可能不适合做“官”,但却能成为合格的“吏”。我们所服务的对象,广大的学生、教师,他们更多的时候直接面对的是各个部门的职员,这些人的工作水平和态度可以更直接地反映北大的管理水平。我在中文系上学的时候曾经有一位被尊称为冯先生的老教务员,使我们佩服的是他几乎能叫出全系所有学生的名字并熟悉他们的基本情况,尤其是在我们已工作多年而他也退休多年的时候他仍然能准确地叫出很多同学的名字。这一点甚至使我们很有些感动,他也一直得到全系上下的尊重,在某些方面他的作用是系主任所不能代替的。
我想北大应该非常需要这样的一批职员,而在目前的分配制度下,一般职员即使再能干,即使资格再老,也只能处于分配制度的底层,这样不利于建设高素质的职员队伍,不利于北大管理水平的提高。同时这种分配制度所传达的简单明确的信息就是鼓励所有人都去争“官”做,舍此再无其它提高待遇的捷径,这种政策的引导作用是任何形式的思想工作所不能比拟的。何况我们改革的方向是建立教育职员制,逐步淡化学校机关的行政色彩,淡化行政级别。但是这种分配制度却反而会强化干部的行政级别,强化官员身份在分配制度中的重要性,同我们改革的方向是相背离的。我们目前的干部选拔制度并非很完善,由于只有争“官”做这一条有效出路,可能就会有人极力钻营,为了达到目的而采取不正当竞争手段,败坏党风和廉政。从另一方面讲,有些单位为了解决某些人的待遇问题,也可能会千方百计地去设法提高干部的职位和增加干部的职数,恐怕在这次各部门内部机构的设立上已经出现了此类情况。长此以往,我们辛辛苦苦所取得的改革成果就会付诸东流。我们以往所出现的机构和干部数量不断增加,严格的职称评审变成了几乎人人都可以当教授,恐怕很大程度上都是为了解决人的待遇问题。所谓“殷鉴不远”,我们千万不能再回到这条老路上去。
五、    高收入并非必然带来高效率
此次学校机关分配制度的改革,确实使大家都得到了实惠,在“存量不变,增量拉开”的原则下,每个人的实际收入都有了较大提高,但是这并不意味着大部分人感到满意。问题在于“拉开”部分差距过大。以前实行的干部津贴正处级每月为400元,一般科员为230元,相差不到一倍,虽然有差距过小的问题,但大体上能被大家所认可;而这次津贴标准正处级和一般科员的差距却达到了五倍左右,很难让一般职员感到心理平衡。在中国几千年的历史中,“不患寡而患不均”的原则是保持社会稳定的一项基本原则,当贫富差距过大,社会矛盾激化时就会发生动乱,甚至出现王朝的更替。现在毕竟不是农民起义的时代,但是这种“不患寡而患不均”的心态还是普遍存在的,除非到了共产主义社会,否则这条原则在不同情况下都会有不同程度的表现。
厉以宁教授前些年曾针对当时社会上普遍存在的“端起碗来吃肉,放下筷子骂娘”的现象进行过分析:虽然大家生活都改善了,都吃上肉了,但别人碗里的肉比自己多,比自己来的容易;自己辛辛苦苦地碗里有肉了,但别人却轻轻松松地不仅碗里有肉,而且有山珍海味,他的心态仍然是不平衡的,仍然会“骂娘”。如果这次都没有增加收入,大家的心态可能反倒是平衡的。虽然目前不同单位、不同行业之间收入有很大差别,但那毕竟离自己比较远,衡量的标准不同,基本上可以接受。但这次是在同一个部门,比较类似的工作,每个人的收入却有了很大的差别,难免不产生攀比的心理,许多人可能会有失落感,进而影响工作态度和积极性。虽然我们确实存在着学校机关工作效率不高的问题,但那主要是整个管理机制和体制的问题,同收入高低并没有必然的联系。尽管我们普遍地提高了机关工作人员的待遇,但并不意味着学校机关的工作效率也会有很大的提高,由于个人收入差距扩大而造成的不平衡心态反而有可能影响甚至降低工作效率。
六、    职能部门在分配政策制定中应充分珍惜手中的权力
国家为了实行创建世界一流大学计划,下了很大决心,对北大、清华等少数几所高校给予了重点支持,特别是对北大、清华的投入在我们国家目前的财力状态下力度是相当大的。这是对我们学校极大的支持和鼓舞,我们应该充分珍惜这一来之不易的历史机遇,尽量把这笔资金利用好,使之发挥最大的效益,不辜负国家和人民的期望。应该说在教职工的分配问题上,学校的作用是很大的,有关职能部门所制定的分配政策尤为关键。
就我个人而言,我目前的全部收入中国档工资部分只占大约1/7,其他绝大部分收入均由学校决定,其他教职工的情况也大体类似。新增加的津贴都是由国家提供的,但分配办法却是由学校决定的,也就是说在学校教职工的分配问题上,国家政策的影响是很小的,而学校政策的影响是很大的,学校对个人收入的决定权远远超过了国家。因此学校有关职能部门在制定分配政策时应非常珍惜手中的权力,慎之又慎,充分听取各方面的意见,注意照顾大多数教职工的利益,注意调动大部分人的积极性,使国家的重点投入能够发挥最大的效益,避免出现因为学校分配政策问题而影响国家资金使用效益的情况。
七、    应不断提高学校干部队伍的思想理论水平和政策水平
近年来北大的工作取得了巨大的成绩,改革、发展和建设的速度在北大的历史上是前所未有的,这是北大的干部和广大教职工共同努力的结果。其中北大的领导班子有较高的思想理论水平和政策水平,能够适时地制定方针、把握方向,使北大的声望达到历史上的另一高峰,为北大赢得了难得的发展空间和发展机遇。校园建设、基础设施建设、人才建设所取得的成就都是空前的,这同北大领导班子在决定学校发展战略中有明确的指导思想,决定政策具有前瞻性是分不开的。
北大第九次党代会和《北京大学改革与发展规划》所确定的指导思想在近年来的工作中发挥了重要的指导作用。大到一个国家的治理,小到一个项目的设计,都离不开思想理论的指导作用。中国改革开放国策的实施是从关于真理标准讨论这样一个思想理论问题开始的,小平同志南巡讲话又为我国加快改革建设的步伐,建立社会主义市场经济体制奠定了思想理论基础;中国女排、中国游泳队等运动项目曾经取得过辉煌的成绩,他们也是在吸收、总结了国内外先进的运动理论后指导训练而取得的。先进的指导思想和理论的作用是极其重要的,蔡元培开始任校长时北大不过是一所封建色彩很重的旧式学府,但在他先进的办学思想和办学宗旨的指导下,北大很快成为中国新文化运动的中心,迎来了北大历史上的第一个高峰;国外一些名牌大学开始建立时规模很小,水平也不高,但是由于有先进的办学思想和宗旨,以后逐步发展为世界一流大学。
北大的干部普遍具有思想理论、文化知识、政策业务水平和素质都比较高的特点,许多干部也很有创造性。但是在我们所面临的越来越复杂的形势和挑战面前,仍然需要进一步加强学习和思考。特别是各单位和中层各个职能部门的负责人,应该进一步加强思想理论方面的修养,提高政策水平,在制定各项政策及本部门、本单位的发展规划时,一定要有超前性的思维,要有明确的指导思想,能够预见到可能出现的各种问题,使我们政策的执行更有效一些,发展的道路更顺利一些。
现在学校的功能比过去大为扩充,各级干部的事务性工作也大为增多,但是不能都完全陷入事务性的工作中去,不能就事论事,应该有人去深入思考各种深层次的问题。不能仅仅依赖学校少数主要领导来考虑这些问题,学校主要领导涉及的管理领域很多,许多关系到学校根本利益的事情要由他们出面去“争”,为此要花费极大的精力,他们要考虑的问题更多,不可能对各单位、各部门的具体问题都考虑的很细致。这就需要各单位、各部门的干部都能有较高的思想理论水平,能制定具有超前性的发展规划和更加合理有效的方针政策,使我们的工作少走一些弯路,达到事半功倍的效果。
以上看法仅是我个人的意见,由于我水平和能力都很有限,不免有许多片面和偏颇之处,但确实是我经过深入思考后的坦率之言,是从北大的发展和学校机关以及干部、职员队伍的建设方面去考虑的。如有不当之处,请领导同志谅解。由于我对学校全面工作的了解也很有限,所提的意见主要是针对学校机关和行政人员的,院系的教师由于其学术地位和贡献有相对比较好衡量的标准,定岗定级也相对好掌握一些;校级干部所负责的领域比较多,担负的职责、任务都比较繁重,其在学校工作中的作用是比较显著的,津贴水平高一些也比较容易被理解。这两个部分的分配办法均不在本文的讨论之列。
提出这些意见完全是我个人的行为,同任何部门、任何人都没有关系。但我确信这些意见能够代表相当一部分行政人员对分配制度的看法,希望能够引起领导同志的注意。这些意见可能也会得罪某些人,但我确信自己是出于公心,我是针对问题提出意见的,不是针对哪个具体的人。就我个人而言,津贴增加后收入翻了一番,同我担任过大学党委书记的父亲相比,我的收入已经是他的三倍,而担负的工作和职责却远不能相提并论,甚至觉得有些对不起这样高的报酬,可以说是相当知足了。
以上意见,仅供学校领导同志参考。
(完稿于2000年1月11日)
 
 
 
大楼、大师与一流
北大的大楼这几年是越盖越多、越盖越气派了:光华管理学院大楼、新图书馆、百周年纪念讲堂、理科楼群、太平洋大厦等一批新建筑先后拔地而起。这些新建筑规模宏大、设施齐全,不仅在国内高校堪称一流,就是同国外名牌大学同类建筑相比也毫无逊色之处。与此同时,一批原燕京大学的老建筑也纷纷进行装修改造,其内其外均焕然一新。在这些新老建筑里面,陆续配置了许多先进的办公和仪器设备,据一些到国外名牌大学去过的人反映,北大目前使用的计算机等设备就比不少国外大学的更为先进。应该承认,经过这些年的投入和建设,北大的物质条件已经比较可观了,不少硬件设施已经达到了国际先进水平。
但是我们也不能不遗憾的看到:虽然北大的办学条件大为改善,经费大大增加,然而资源的不合理使用同时大量存在。一方面各类用房面积和教学科研、办公经费大幅度增加,另一方面用房和经费的紧张程度却有增无减。其原因恐怕还在于学校的分配体制不尽合理,所谓“会哭的孩子有奶吃”,有些部门、单位往往从自身的利益出发,尽可能多地占有学校资源,有的楼里以前可以容纳十几个单位,现在却连几个单位都容纳不下,其原因大家应该都很清楚。有些同志片面追求办公条件要一步到位,要“和国际接轨”,一味攀比谁的房间大,谁的家具新,谁的设施先进。甚至还有人把一些好的传统,艰苦朴素的作风认为是小农意识,思想不解放。
北大许多人都有在国外生活的经历,不要说国外的大学,就是许多发达国家的总统府、总理府也不过是一些小楼房。德国迁都柏林后准备建新的总理府,但新总理府宏大的规模却引起了不小的争论,乃至德国总理都认为它的“块头太大了”,会多花纳税人的钱。我们的周总理多年在中南海西花厅办公,房子年久失修,家具也很破旧,工作人员乘总理不在时修了房子,换了家具,却遭到了总理的严厉批评,并且坚决让工作人员把那些旧家具再换回来。相反倒是我们现在一些地方,市县也好、乡镇也好,无论穷富,办公楼房一定要造的大、造的气派,一种奢华的风气在不知不觉中蔓延,已经蔓延到一向被认为是“清水衙门”的高校里了。如果我们到学校有些单位的办公室去看一看,其豪华舒适的程度恐怕已足以令人瞠目。
笔者此言绝非认为北大不应该建大楼,不应该改善办公条件,但我们同时也不应该忘记清华老校长梅贻琦先生的名言:大学者,非有大楼之谓也,有大师之谓也。民国时期的北大、清华,物质条件肯定不如现在,但那时的北大清华同世界一流大学的差距未必比现在更大;西南联大在那样艰苦的环境下仍然培养出了杨振宁、李政道、邓稼先等大批一流人才;袁隆平开始研究杂交水稻,陈景润开始研究哥德巴赫猜想,王选开始748研究项目的时候,其物质条件恐怕只能用艰苦来形容,但他们都在各自领域内取得了世界一流的成果。我们现在的物质条件比他们不知道强了多少倍,但是我们又拿出了多少可以傲视国内外同行的成果呢?我们所拥有的物质条件是否和我们的实际贡献相符呢?
北大在新世纪的目标是要成为世界一流大学。一段时间以来我们在和世界一流大学进行比较时似乎更多地强调了财力、“硬件”方面的差距,总是反复强调我们的办学经费只有国外一流大学的百分之几,却较少去关注我们在管理、在人才等“软件”方面的差距。我们在建“大楼”,改善“硬件”环境的同时应该更注重于“软件”的建设,着力于培养广大师生、干部艰苦奋斗的精神,创造出一种有利于多出人才、多出成果的办学体制,努力使学校呈现出一种朝气蓬勃、团结融洽、顾全大局、协作共进的局面。否则即使我们拥有了哈佛、斯坦福那样充足的经费,按照目前的办学体制和工作方式,建设世界一流大学恐怕还只能停留在梦想阶段。
(《北京大学校报》2001年4月20日第一版,原标题为“大楼与大师”,时任校党委副书记赵存生审稿时改为现在的题目)
小人物大事业
笔者在北大已学习和工作多年,其间见过不少大师级的前辈学者,他们的道德文章自然给我留下了深刻的印象。然而这些年来在学校亲见亲历的一些“小人物”,却同样也给我留下过深刻的印象,甚至某些方面竟不亚于大师们的风范。记得以前中文系就有一位姓冯的老教务员,印象中一般只有年高德劭的老教授们才被尊称为“某先生”的,但是这位老教务员却也被师生们尊称为“先生”。起初还不大理解,后来才知道这位“冯先生”果然厉害,系里的每届学生,他见面大都能叫出名字,其待人之和善,工作之精细尤其令人称道。无独有偶,后来听说在清华叶企孙教授的实验室里,也有一位老实验员业务非常精湛,一直被尊称为“先生”。如果有学生表现出对他的不尊重,叶先生都要严厉批评,并亲自带学生去向他道歉。笔者还知道办公楼值夜班的赵大爷能说一口流利的英语,听见看校门的老门卫回忆周总理陪同伏罗希洛夫参观北大的情景,感到北大的老职工的确是不简单,有素质、有见识。过去人说“宰相家人七品官”,从这些普通的北大人身上也可以看出这所名校的风采。
同学校的校长、部长、教授们比,笔者所提到的这些人或许可以说是些“小人物”。但是我们往往能看到这样的现象:体现一所学校、一支军队乃至一个家庭水平、素质的高低从小的侧面看常常更有说服力。笔者曾随学生到我军的王牌部队——第38集团军参加过军训,集团军军长也亲自来看望北大学生,但给我印象深刻的却是那里的普通士兵都以身为38军的一员而感到自豪;《三国演义》中讲到郑玄的文化修养极高,但却并没有直接说他的修养有多高,而是很形象地描述了“其家中侍女俱通《毛诗》”,以此来反衬出郑玄的文化品位。
根据“木桶理论”,一个木桶盛水量的多少不是由最长的木片决定的,而恰恰是由最短的木片所决定的。北大许多人从国外大学学习、工作回来后,常常感慨国外大学的后勤服务、教学科研辅助工作之完善,而在我们这里却总是要为各种各样的琐事大伤脑筋。北大前副校长王义遒最近撰文,提到伯克利加州大学工资最高的不是校长、名教授,而是一位玻璃工;英国国家物理实验室里拿最高工资的也是一个负责吹玻璃的师傅。由此可见,学校里的所谓“小人物”,其实恰恰是十分重要的人物。北大的“管理骨干”、“学术骨干”固然需要重视,但我们同时也不应该忽视那些普普通通的各类干部、职员、工人,我们的学生、教师更多的时候不是同校长、部长们而是在同他们打交道,他们的工作水平和服务态度可以更直接地反映出北大的整体管理水平。
然而一段时期以来,我们似乎更多地强调了选拔“骨干”、培养“尖子”,而较少去注意普通职工的素质培养,较少去关注他们的地位和作用。一家工厂如果只有厂长的正确决策,工程师的精心设计,而没有高素质工人的具体操作,终归生产不出高质量的产品。让笔者感到遗憾的是在更年轻一代的北大职工中,像冯先生那样熟悉业务,能精雕细刻地对待本职工作的普通职员已很难见到了,而泡沫式的“名人”、“学者”还在不断涌现。我们恐怕还是需要恢复老北大、老清华的传统,借鉴国外大学的成功经验,真正重视北大普通职工的地位和作用,把他们作为一支建设一流大学的重要队伍来培养、来看待。在我们重视和强调“骨干”、“关键岗位”的同时,也应该重视那些“非关键岗位”的普通职工,既要让他们有一定的“政治地位”,又要给予严格的要求和培训,在经济收入上也不宜和“关键岗位”拉开太大的距离,使他们能真正体会到自己应有的地位、责任和价值。如果北大能在不断涌现出“骨干”、“尖子”的同时,每一个北大的“小人物”也都能认真对待本职工作,将本职工作作为一项技艺来钻研,以作为北大的普通一员为荣,那么,我们离建设世界一流大学这样一项“大事业”的目标也将会越来越接近。
(《北京大学校报》2001年5月20日第一版,此文先后获2001年度北京高校校报系列言论类文章一等奖,2001年度“北京新闻奖”(省部级)三等奖,2001年度全国高校校报协会评论类一等奖)
也谈淡化数字
现代社会可以说是用数字来管理的社会,随着信息技术的广泛应用,人类更是开始进入了所谓“数字化时代”。我们通常可以从一系列统计数字来直观地了解一个国家、一个地区的经济社会发展水平,同样,一所大学的规模和水平也可以通过数字来体现。例如我们一提起北大的院系、专业、重点学科数目,本科生、研究生数量,教授、博导人数,就可以很直观地看出北大在全国高校中的重要地位。
但是在很多情况下,光看数字又不能完全说明问题,需要具体情况具体分析。如果仅从人均国民生产总值来看,日本已经超过了美国,但是考虑到物价、生存环境等多种因素,我们还不能得出日本人的生活水平已经比美国人高的结论。对于北大的办学水平,我们也不能完全用数字来说明,如果光从数字上看,北大有许多方面不仅在国内高校中居于领先地位,在世界各国的大学中也早已名列前茅了,仅教授人数一项就多于不少世界一流大学,但我们绝不会因此就认为北大的办学水平在世界上也是领先的,否则我们还用得着去“创建世界一流大学”吗?
一段时间以来,有些同志似乎比较热心于用“数字化”来进行学校的管理和建设。例如一讲到北大的发展建设成就,就强调我们又建了多少平方米教学科研用房,建了多少套教职工住宅,获得了多少项科研成果奖,办学经费、科研经费又增加了多少,等等。校办产业由于可以直接创造出产值、利润等“数字”,更是受到了异乎寻常的重视。应该说北大近年来在学校发展建设方面取得了巨大进展,可以有一系列数字为证,笔者绝非无视这些成绩。但是北大办学水平的提高更重要的还在于学校的整体环境和办学机制等方面的改善,所谓“大”并不一定意味着“强”,有些领域数字的增长并不一定意味着办学的水平也因此而得到提高。有些同志还进一步提出要培养多少名“学术骨干”,多少名“管理骨干”,教师中拥有博士学位的要达到多少人,等等。其实学术骨干应该是在一种宽松的、利于竞争的环境中自然成长,到底有多少名学术骨干能成长起来恐怕是难以预测的。蔡元培任校长时的北大并没有提出要有多少位“骨干”,但是通过一系列有力的改革,却造成了当时北大群星灿烂的局面;管理骨干的人数则更是难以界定,不知道将根据什么标准界定出北大哪些管理人员是“骨干”,哪些又不是“骨干”;学位高低和学术水平的高低之间并不能完全划等号,北大历史上就有过许多学历不高的名教授。
从另外的角度来看,对“数字”的热衷恐怕和一些干部力求政绩的工作方式有关。我们大家都不会淡忘“大跃进”时期粮食产量的数字游戏,对于多年来在官场上盛行的“官出数字,数字出官”的现象也不会太陌生。一些地方官员甚至不顾实际大搞各种各样的“形象工程”,因为这些容易看见,也容易用统计数字来体现政绩。与此相反,所谓“十年树木,百年树人”,对于一些需要进行长期努力的工作,例如环境保护工作、教育工作,我们却常常看到有些地方官员是不大重视的,这恐怕也和此类工作难以在短期内出数字、出政绩,难以在官员的任期内见到成效有关。已经有越来越多的同志看到在考察干部时一味强调数字的弊端,提出要适当地“淡化数字”。
北大的一切工作都应该围绕着教育这个中心任务来进行,应该完全按照教育工作的规律来办学。但北大办学水平的显著提高也确实是难以在较短时间内奏效的,创建世界一流大学非一朝一夕之功,需要长期艰苦的努力,做大量耐心细致的工作。有些同志热衷于一些统计数字的增长,恐怕多少还是有一些急于出政绩的心态。我们也可以理解一些同志迫切希望北大能够上规模、上水平、出成绩的心情,但作为学校的管理者来说,还是应该从更符合北大建设发展的实际出发,着力于营造多出人才、多出成果的良好的校园环境,实事求是地把学校的事情办好,这样对北大办学水平的提高无疑将更为有利。
(《北京大学校报》2001年9月20日第一版)
也说精品
中华民族在几千年的文明史里曾经创造出无数的精品,从《诗经》、《论语》到《水浒传》、《红楼梦》,名家精品不胜枚举;北大在历史上也曾经创造出许多精品,从《新青年》首倡科学民主,到院系调整后大师云集、名作迭出,在中国近当代思想文化和学术界曾独领风骚。然而客观地讲,在我国当前的思想文化界、学术界,包括北大在内,虽然学者们著述不断,专著、论文批量产生,但真正有分量的“精品”却仍属凤毛麟角。这同我们时代的要求和北大的地位极不适应。今年春天,学校召开了“树立北大文科精品意识大会”,并在日前举办了“21世纪:人文与社会”文科论坛,这无疑是针对目前学术界平庸之作充斥、赝品不绝而开出的一剂良方,也为北大人文社会学科的发展指明了方向。
但是“精品”的产生需要多种因素的共同作用,并不是我们简单地推出某些奖励措施就能很快奏效的。所谓“精品”,往往是能够站在时代发展和社会前进的高度,洞察社会、历史、人生的发展轨迹,揭示出客观的规律,指出前进的方向。有的“精品”在当时并不能为人所理解,然而在数十年、数百年甚至上千年之后,仍然可以闪耀出真理的光芒。
“精品”并不见得都是长篇大论,对中国思想文化影响至深的《道德经》、《孙子兵法》不过只有几千字;一部《古文观止》收录了两千多年间的220篇文章,平均十年多才有一篇文章被收录;曹雪芹终其一生只给我们留下了一部并不完整的《红楼梦》,但这已足以使他成为中国文学史上最伟大的作家;《共产党宣言》、《独立宣言》这些在人类历史上产生了极为重要影响的文献也都篇幅有限。
要求我们的学者很快就能奉献出对人类思想文化产生重大影响的精品来显然目标是过高了,但是要求他们在各自的研究领域中进行深入的探索,科学的分析,得出独到的结论,这样的要求应该是产生“精品”的前提条件。“精品”的出现还需要有创作者高度的兴趣和智慧的投入,往往很少去考虑功利的目的,曹雪芹举家食粥写《红楼梦》,巴尔扎克穷困潦倒创作《人间喜剧》时并没有想到要评几级作家的职称或是要得诺贝尔文学奖,但我们的学者在创造学术成果时却往往要考虑到职称、住房、考核等多种因素。在提倡“精品”,呼唤“精品”的时候我们还应该更多地去从环境、机制上入手,研究解决好这些矛盾,逐步探索出解决问题的途径。
希望这次文科论坛能够为北大文科的进一步发展奠定良好的基础。身处于我们这个激烈变革的时代,背负着北大光荣的传统,依靠一代代北大学人的努力奋斗,相信“精品”的大量涌现或许不会让我们等待太久。
(《北京大学校报》2001年11月5日第一版)
规模与水平
规模与水平之间的关系并不总是成正比的,规模大不一定代表水平高,规模小也不见得水平就低。《财富》杂志评出的世界500强都是规模很大的企业,但500强的名单却又是经常变化的,可见有许多规模虽大但水平、效益不佳的企业不断被淘汰出局。企业如此,大学恐怕也是如此,如果以规模而论,据说罗马大学等一些国外大学的学生人数达到十几万、二十几万之多,但却并没有被看作是具有世界一流水平的大学;中国学生人数最多的大学应该是广播电视大学,但谁也不会将其和北大、清华等国内名校相提并论。
近年来为集中资源、调整学科而将一些规模小、学科单一的学校合并起来组成规模较大的大学或将一些学科单一的学校并入其它综合水平更高的大学以组成真正意义上的综合大学,虽然在有些具体做法上或许还有值得商讨之处,但总体上似乎是无可厚非的,毕竟这样做是为了和国际上先进水平的大学接轨。
同世界上一流水平的大学相比,即使像北大这样的学校也还有非常大的差距,我们应该将主要的精力放在提高学校自身的实力,提高学校的办学水平方面,应该勤于修炼“内功”。但现在有一种倾向,就是热中于铺摊子、上规模,一方面不断扩大招生,不仅扩大研究生的招生数量,也扩大一般学历的各类成人教育培训,另一方面不断扩大对外合作办学的规模。在当前市场经济的背景下,社会上对人才、学历的需求越来越强烈,我国毕竟是一个高等教育事业还不发达的国家,为适应社会需求,通过适当的扩招,对外合作办学,使学校的教育资源发挥更大的效益,于国于校都有好处。问题在于这样做应该有一定的限度,特别是不能影响到学校自身办学水平的提高,同时也应保证合作办学的质量。现在有的学生提出自己高分上了北大,但教师的讲课却敷衍了事,究其原因,原来是出于利益的考虑,有些教师主要的精力都放在校外了;大学可以主动适应市场经济的需要,但是又不能完全按市场经济的规则来办学,应该保持学术活动的严肃性、独立性、前瞻性。不排除有些地方同我们合作办学,是把教育作为一项产业来经营,要我们这块牌子以进行批量“生产”,至于学术水平高低,培养质量能否保证并不是他们最关心的;同时也不排除学校有些部门、院系,为了迎合社会需求,甚至出于小团体利益的考虑,无限制地扩大招生、扩大合作办学的规模,引起不少连带问题,给学校整体工作带来被动。
许多校内人士甚至包括一些校外人士,都指出北大不应该混同于一般大学,不要同一般大学争生源、争资源,在低层次上扩展规模,而是应该办高水平的研究型大学。现在我们研究生招生的数量已经超过了本科生,数量可谓不少,但同国外一流大学相比,我们在研究生培养方面的差距更大,我们应该着力于提高研究生的培养质量而不是一味去追求数量的增长。国外的许多名牌大学,如哈佛大学、牛津大学的规模都是相对稳定的,其教师人数,本科生、研究生人数,多年来并没有太大的变化,它们的地位是由办学水平而不是由办学规模来决定的,也没有听说过哈佛大学有什么“洛杉矶校区”,牛津大学有什么“利物浦基地”。大学毕竟不是企业,即使是企业,也不是说越大就越好,近年来国内一些“明星”企业由于盲目扩张带来经营管理不善进而垮台、破产的例子可谓不胜枚举。北大虽然还不至于由于扩大规模而导致破产,但大学的管理比企业则更要复杂,处理不好,很可能会丧失掉信誉这样最重要的“无形资产”。我们能否保持住在国内高校中的领先地位,能否缩小同世界一流大学的差距,在办学的规模和水平问题上不能不进行认真的思考。
(《北京大学校报》2002年1月15日第四版)
剽窃伤熊事件谈起
近来有两件事情受到了媒体和公众的特别关注,因其涉及到了两所中国最具影响力的大学,更有了一些轰动效应。其一为北大教授的“剽窃”,其二为清华学生的“伤熊”。两件事情在起因上有所不同,在性质上也有所差别,但的确都严重影响了两所名校的声誉。事发后两校也都做出了迅速反应,采取积极的措施,以弥补失误,消除不良影响。
然而事情既然已经发生,影响也造出去了,我们最好还是不要就事论事,应该多寻找一些事件发生的深层原因。近年来有关学术腐败的问题已经揭露出不少,学术打假的呼声也不绝于耳,有关主管部门、学术单位也陆续推出了不少奖惩措施,但似乎并未见到多大成效。某教授的“剽窃”行径固然令人不齿,但是将其看作是个别现象,将所有矛头都指向其一人也未必公平,简单的处罚奖励措施未必能真正解决问题。在我们的高校,乃至在整个学术界,东拼西凑、粗制滥造,用各种方式“包装”出来的学术成果可谓不胜枚举,“剽窃”过的东西又在不断被别人“剽窃”。有人曾坦言某些学术著作,不要说没有别的人看,就是作者本人也没有完整地看过一遍;有些教师没有几年就“著作等身”了,其产生过程如何可想而知。但却可以以此为稻粮谋,获得职称、住房、津贴等种种利益。现在用于研究、创新的投入有了很大增加,但随之而来的各种评审、考核、奖励更是层出不穷,似乎如此就可以不断出现创新成果,达到世界先进的科学研究水平指日可待。然而实际情况却是原创性的成果仍然如同养在深闺的佳人,“千呼万唤不出来”。
科学研究活动是一种高级的脑力劳动,有些项目更是需要几年、几十年甚至几代人的艰苦探索。王选研究汉字激光照排系统的时候绝没有想到要获国家科学技术最高奖,诺贝尔奖得主也没有哪位在开始研究的时候就想着将来要获奖。国家科学技术最高奖、诺贝尔奖虽然高高在上,但是眼前的各种奖励却并非难以企及,而这些奖励办法普遍讲究量化,把高级的创造性劳动看作是简单的计件劳动。在如此浮躁的环境和利益驱动下,让大学教师们都不作假、都不“剽窃”也难。奖励制度固然必要,但过多过滥的奖励未必会产生好的效果,古训有言“奖者,所以劝忠能,亦所以生鄙争,反奖也”。看到了学术界的种种“鄙争”,有关部门难道不应该反思一下各种奖励政策出台的初衷吗?
在保护环境、爱护生物意识越来越深入人心的今天,清华学生的“伤熊”事件似乎更具有“轰动效应”。但我们在震惊和激愤之余,看到的当事人却只是一个可悲又可怜的大学生,恐怕大部分人甚至不忍心去让他承受更重的惩罚。这起事件所反映出来的绝不仅仅是一个大学生的问题,也不是清华大学一个学校的事情,而是反映出我们的社会教育、家庭教育、大中小学教育都出现了很大的偏差,值得引起全社会的重视。一味的强调考试成绩而不去注意心理是否健康,人格是否健全。现在的大学校园中自私、孤僻、缺乏爱心的现象并不少见,出现心理问题的学生更不会是一个小数目。还有一些学生缺乏最起码的生活自理能力,有的学生甚至连洗衣服这样简单的事情都做不来,要父母陪读照顾;有的学生仅仅因为身体偶然不适就不知道该怎么办,打电话让家长不远千里坐飞机赶来。这些都是发生在我们身边的真实事情。在我们津津乐道于教育规模扩大、教育水平提高的同时,似乎更应该关注一下其中还存在什么问题。大学生中出现的问题并不是孤立的,需要从社会上去找原因,在全社会进行健康的思想文化道德教育,树立良好的社会风气尤为紧迫。
两起事件已经发生了,再多的解释说明也无助于挽回名誉上的损失。用“头痛医头,脚痛医脚”的办法马上出台一些措施,试图立竿见影,未必能长远地解决问题,将媒体和公众的注意力引向对方以掩饰自身尴尬的做法更不可取。笔者担心的是如果不能从深层背景上去找原因、想办法,恐怕类似“剽窃”、“伤熊”这样的事情还会在我们的教师、学生中发生,甚至会出现更糟糕的事情,那时我们又将如何面对呢?
(《北京大学校报》2002年3月20日第三版,《中国社会科学院院报》转载)
内部简报有感
在学校有些部门出的工作简报上,笔者经常能看到下面这样的文字:某人向某部长(或某书记、某主任)汇报了某项工作,某部长(或—)认真听取了工作汇报之后,做了重要讲话(或谈话),“指出”应如何如何,并就某方面的工作做了“指示”。某副部长(或—)要求大家认真领会某部长(或—)的讲话精神,共同努力做好某项工作。如果不看具体的人名、职务,完全会以为这是《人民日报》上对中央最高领导人公务活动的报道,然而这只不过是在介绍学校一些中层干部的工作。此种风气也深深地影响到我们的学生,在某篇关于学生社会实践活动的报道中,全篇无一字提及他们进行了什么社会调查,有那些收获,而是津津乐道于当地市委书记、市长如何亲自设宴款待他们,外出时警车如何开道等等。
此类现象可谓不胜枚举,可能许多人早已见怪不怪、习以为常了,有的同志恐怕已经深深陶醉于做“领导”的感觉中。表面的现象必有其深层的原因,以笔者在北大的所见所闻,无论在我们的管理机构,甚至是在教学科研机构中,“机关化”、“衙门化”、“官场化”的影响似有愈演愈烈之势。记得笔者上世纪80年代初入北大求学时,许多前辈学者还健在,一提及他们的名字,无不令人肃然起敬,至少到那时候教授在学校里还是比较有地位的。笔者后来留校工作时,即使见到学校的党政负责人,大多可以直呼其名,或代之以“老张”、“老王”的称谓,现在遇到一部长、主任,如果不称呼官衔,好像就显得对人家不够尊重。随着前辈学者们的陆续逝去,教授的数量倒是越来越多,但道德学问总体上同前辈学者相比似乎还有不小差距,教授们在学校的地位和影响也日渐式微。反之行政部门和管理人员的地位和影响则日渐增大,并逐步居于支配地位。在学校一些重大活动中,主席台上难觅没有官衔的专家学者的身影,前排、中心位置就座的几乎都是学校各级负责人,介绍顺序也一律按官职大小,即便如季老这样几乎是硕果仅存的前辈学者出席,有时也只能忝陪末座。
我们国家长期以来受“官本位制”的影响十分深远,官员身份所带来的荣耀和利益极大,官场规则、意识也可谓“深入人心”。此种状况即使在改革开放的今天也未能得到根本改变。大学毕竟不是象牙塔,无孔不入的官场风气弥漫于大学校园也并不足怪。但是如果以学问为最高追求的大学不再以学问而是以官职为最高追求,则不能不引起我们的忧虑。走进学校的一些办公场所,满眼都可看到房间门口贴着“部长室”、“副部长室”,“主任室”、“副主任室”的牌子,无形中强调着官场中森严的等级;以淡化行政级别为目的的人事制度改革实际上更增加了干部岗位的权力和利益,官员身份似乎未见“淡化”。而且官场风气也并不局限于某些管理部门,即使在学校的院、系、所、中心等教学研究机构,有院长、主任等头衔的教员可能就会比一般教员获取更多的公共资源,在评定职称、成果署名、科研经费、办公用房等方面享有优先权,将行政部门的办事规则用于学术活动;有些教授更以谋得一官半职为荣,很早以前就有某教授被“提升”为处长、主任的可笑说法;有的教授在学术上取得了突出的成就,往往也需要封一个官衔才算最高的奖赏;不少教授更是热衷于攀附权贵,“官学结合”,各取所需。
大学的精神在于其应该具有独立的意志和思想,而官场的意识和规则同大学有实质的不同。在大学里如果不是以学问高下而是以官职高下作为评价标准,甚至很多时候好像官大了学问就大,那么这样的大学就只是泛化了的官场,和真正意义上的大学背道而驰。笔者见识浅陋,但也知道哈佛大学为了保持其独立的地位和学术的严肃性,可以拒不授予里根总统以名誉博士学位。我们的国情、校情有所不同,但这并不等于我们可以放弃大学的精神。如果我们还是整天“指示”不断,“领会”不断,不能从根本上扭转校园内严重的官场作风、官场习气,那么这样一所大学的发展前景将会是令人担忧的。
(《北京大学校报》2002年6月20日第三版,此文先后获2002年度北京高校校报系列言论类文章一等奖,2002年度全国高校校报协会评论类一等奖)
世界杯与世界一流大学
经过了四十多年的努力,中国男子足球队终于出现在韩日世界杯的赛场上。然而不管是同世界一流水平还是同三、四流水平球队的较量中,中国队都存在着明显差距,不得不小组赛后就打道回府了。但是我们还是应该为中国队迈出的历史性一步而感到高兴,因为他们毕竟进入了世界最高水平的赛事。
由世界杯比赛笔者不禁联想到我们的学校,长期以来我们一直把建设世界一流大学作为我们的奋斗目标,就像中国队把参加世界杯作为奋斗目标一样。同中国队在世界上的位置相比,北大在世界著名大学中的排位恐怕还有所不如,不要说同欧美的世界一流大学相比,就是同日本、印度乃至港台的一些大学相比,北大也还有不小差距。中国足球要追赶世界,北大也要创建世界一流大学,采取什么样的赶超战略非常关键。日本队、韩国队在世界杯赛场上取得了突破,很大程度上在于他们实行了“脱亚入欧”的发展战略,不以战胜低水平的亚洲球队为满足,而是尽可能同欧美强队较量,以致在本届世界杯上有了脱胎换骨的表现;与中国队同组的土耳其横跨欧亚大陆,但土耳其队宁可冒难以出线的风险,也要坚持参加高水平的欧洲区预选赛。
由此看来北大要建设世界一流大学,就必须真正以世界一流大学为参照系,而不能满足于在国内高校中的老大地位。即使甲A赛场搞的再红红火火,“连沪争霸”再激烈,充其量也是低水平上的竞争;北大在国内再有多大的优势,拿国际水平一比较,差距恐怕还是全方位的。而我们有的同志眼睛却不向外而向内,只热心于北大同国内其他高校的竞争,似乎又特别热心于同国内另外一所与北大地位相当的著名大学的竞争。乃至于这种竞争经常要争一时一处的得失,恨不得一天24小时都盯着对方。对方有了什么新的举措,我们有的同志就急的要命,好像不跟着做就会马上落伍;对方在某个方面露了脸,我们就好像抬不起头;自己出了某些不好的事情,也要把别人的注意力引到对方不好的事情上去。双方似乎都想在任何方面上压过对方,严重的时候甚至互相幸灾乐祸。其实两所大学都有自己不同的历史传统、学科背景、办学特色,正如足球场上有巴西的桑巴舞,也有欧洲力量派、欧洲拉丁派,没有那种风格可以占据绝对的优势地位。世界一流大学也都有各自不同的风格和优势,北大也应该坚持自己的特色,没有必要在任何方面都要和别人一较高下。两所大学都以建设世界一流水平的大学为己任,如果要比较,也应该以世界一流大学为标准。中国队不冲出亚洲,走向世界,就不知道和世界水平有多大差距。两所大学如果不顾各自特点,都力求时时、事事、处处压过对方,在低水平的竞争中乐此不疲,恐怕也就都很难取得办学水平上的重大进展,同世界一流大学的差距只会越来越大。
中国足球要想在世界上赢得尊重,恐怕非一朝一夕之功,需要建立起一整套合理的机制,而不要过于计较每次比赛的结果。我们建设世界一流大学也不是短期内就能奏效的,需要长期艰苦的努力,应该从办学机制上入手,不要过于和别人争一时一处的得失。当年毛泽东领导的人民军队能够以弱胜强,战无不胜,很重要的成功因素就是从来不争一城一地的得失,而是从整体战略上考虑,终于夺取了全国政权。我们建设世界一流大学也应该有这样的雄心和气魄,紧紧抓住那些最关键、最根本的问题,制定合理的发展战略,着力于改革体制,增强实力。即使我们暂时在某些方面落后,也不必过于在意,只要我们按照正确的方向走下去,就一定能在最终的竞争中取得领先。希望轰轰烈烈的韩日世界杯比赛也能对我们的办学思路有所启示。
(《北京大学校报》2002年6月20日第三版)
状元奥赛及其他
每年高考招生结束,我们照例要统计一下招收了多少名各省市的文理科“状元”,多少名各项“奥赛”金牌获得者,哪些省市的前多少名考生等等。有的年头北大的主要竞争对手招的“状元”、“金牌”比我们多了,录取分数线比我们高了一点,难免还会让有的人耿耿于怀。许多人平时一提起我们的本科生生源,自得之色常常溢于言表,认为我们的本科生水平已经达到了世界一流,因为我们是从世界上最广大的考生群体中选拔最优秀的人才。
不可否认,我们的招生工作成绩显著,每年都为北大招收了一大批国内优秀的青年学子入校深造,这和北大的声誉以及招生工作人员的辛勤努力是分不开的。北大历来有很好的生源,我们招收的“状元”和“奥赛”金牌获得者也是全国高校中最多的,但这并不等于说北大就可以静候精英人才源源不断地涌现。从远处看,不要说现在每年都批量生产的“状元”,就是一千多年的科举史上每隔几年才产生一个的真正的“状元”,能够在历史上做出贡献、留下名字的屈指可数。从近处看,北大过去和现在许多著名的教授、“两院院士”并不是本校毕业的;近年来涌现出的许多优秀中青年学者、“长江特聘教授”,其中很多人根本没有在北大读书的经历,也未必在高考或“奥赛”中取得过突出成绩;北大的历任校长大多数也不是北大毕业的。
“状元”也好,高考成绩突出也罢,不过说明了考试能力强,全面成绩比较好,不见得专长突出。即便是专长突出的“奥赛”金牌获得者似乎也不必过于看重。今年在北京召开的世界数学家大会分别授予法国、俄罗斯的两位青年数学家以数学界的诺贝尔奖—菲尔茨奖,据悉其中一位根本没有参加过数学奥赛,另一位倒是参加了并获得金牌,但人家不过是随随便便就去拿了个金牌回来。今年获得诺贝尔奖的日本物理学家小柴昌俊甚至还有过物理课考试不及格的纪录。我国中学生近十多年来在各类“奥赛”中可谓成绩辉煌,经常还会出现有的项目所有参赛选手都捧得金牌而归的盛况。不过也应该看到我们的参赛学生虽然都非常优秀,但毕竟是经过了层层选拔、集中培训的,一定程度上还是一种应试能力的体现,同人家那样完全凭兴趣参赛就获得了金牌有所不同。据说我们有个别金牌获得者后来甚至厌恶所学专业,其中原因值得深思。
所以我们虽然“状元”多,“奥赛”金牌多,但却没有人能去摘取诺贝尔奖、菲尔茨奖的桂冠。有一个笑话说上帝因为看到中国本土还没有产生过一个诺贝尔奖获得者,也很着急,就让牛顿、爱因斯坦、爱迪生等大科学家降生中国,结果他们或因为奇思乱想被视为精神不正常,或因为贪玩被严厉管教,或因为偏科而考不上大学。笑话虽说尖锐了一些,但确实说明了我们现在的教育方式某种程度上扼杀了学生们的想像力、创造力,即使是天才可能也逐渐会变得平庸。千篇一律的教材,千人一面的标准化答案,像毛泽东曾经批评过的那样故意与学生为敌的考题,这种情况在我们的学校教育中并不鲜见,即使考试成绩再高也不能说明太多问题。
国外有许多名牌大学招生并不是一次考试决定的,他们往往更侧重于学生的综合素质,创新能力方面的测试。我们的国情有所不同,完全照搬国外大学那样的招生办法目前恐怕还不可行。我们在大学期间也无法完全消除目前的家庭教育、中小学教育所带来的一系列弊端,但是我们可以尽量为大学生们创造一种比较宽松的氛围,激发他们的各种潜能,使他们能够在一种比较健康的环境下成长。北大前两年取消三角地的“状元墙”不失为明智之举,确实没有必要对一次考试的成绩过于看重。如果人家多收了几个“状元”、“金牌”,录取分数线比我们高了一点,也并不说明我们的学生素质就差了。“风物长宜放眼量”,何况我们还有不拘门户之见,“兼容并包”,广纳五湖四海人才的胸襟和气魄。我们更应该着眼于人才培养的最终目标,并有信心在最终的竞争中取得优势。
(《北京大学校报》2002年11月5日第三版)
 
 
高待遇不等于高创造力
知识分子的待遇问题长期以来曾经是困扰高等院校发展的一个关键问题,“脑体倒挂”在前些年一直都是一个非常热门的话题。随着经济社会的持续发展,国家不断加强投入,高校教师的待遇,尤其是一些重点高校教师的待遇得到了很大改善。其中在一些热门的院系、专业,其教师的收入又大大高于同校其他教师,购买私人轿车乃至别墅等都已不再是梦想。
解决高校教师的待遇问题十分必要,在经济社会日趋繁荣的背景下要求他们独守清贫,只讲奉献,“吃的是草,挤出来的是奶”显然并不实际。但是现在似乎又出现了另一种倾向,就是将待遇问题的重要性提高到一个前所未有的高度,好像中国知识界缺少创新、缺少创造力完全是由于待遇太低造成的,以为待遇越高创造力就会越强。于是各个高校之间互相攀比,炒作不断,又是“年薪制”,又是“终身教授”,乃至推出了年薪几十万、上百万的天价教授,颇有“钱不惊人死不休”的劲头。至于各类奖项也是名目繁多、层出不穷,获选人都可以得到较高的津贴。前些时候更有高校独辟蹊径,干脆对学术著作、学术论文来了个“明码标价”。
以笔者的愚见,窃以为待遇和创造力之间并没有什么必然的联系,许多伟大的思想、杰出的成果倒常常是在生活比较窘困的时候完成的。曹雪芹在“举家食粥酒常赊”的境况下写出了不朽巨作《红楼梦》,延安窑洞里诞生了毛泽东最杰出的理论篇章,“两弹一星”的元勋们研制过程中甚至有时还要饿着肚子,陈景润对“歌德巴赫猜想”最有价值的研究也是在他那间六平方米的小屋中进行的。
对于一位真正的科学家来说,创新的原动力恐怕更多地在于他对探索未知世界的兴趣,物质生活条件和创新能力之间并无必然的关系。19世纪的物质生活远不及20世纪,也还没有诺贝尔奖,但是20世纪人类在科学、思想、文学、艺术等方面取得的成就,就其高度和影响力而言,却还是不能和19世纪相比。目前国内上下对于诺贝尔奖的期盼至深至切,其程度恐怕不会亚于期盼奥运会。笔者曾经开玩笑地同一位教授讨论,假如给你一亿元的资金,你能否得一个诺贝尔奖回来?以我们国家之大、诺贝尔奖空白的历史之长,笔者以为花这一亿元还是很值得的,但教授却只是摇摇头表示绝无可能完成这个任务。
对于一位思想家的来说,他的创造性成果更多地是基于对人类、对社会的忧患意识,基于一种博大的胸怀、自觉的责任。马克思《资本论》的全部稿费还不够支付他写作过程中抽劣质香烟的费用,古今中外又有哪部伟大著作是在“明码标价”之下完成的?所谓“文王拘而演《周易》,仲尼厄而作《春秋》……《诗》三百篇,大抵贤圣发愤之所为作也。”难道今天的学者们都已经降低到仅仅为了物质奖励才会去从事创造性工作?
对于一个真正的学者而言,有时候倒需要一些特立独行,需要有一些不食人间烟火的味道或许才更能产生创造性成果。笔者很赞成李敖评价胡适的一句话:“一个那么重要的人,却做了那么多不重要的事。”胡适先生为人和气,在各种应酬中浪费了太多时间,以他那么大的才气和名气,却没有为后人留下更多的精品,不能不说是一种遗憾。如果我们的教授都是将更多的精力用在怎么多赚钱,怎么装修房子这些“不重要的事”上,又怎么能期望他们做更多“重要的事”呢。现在一些已经成名的学者,其主要的学术成就大多也是在前些年物质生活还比较贫乏的时候完成的,现在物质待遇大大提高了,反倒不见有多少新的杰作问世。
提高高校教师待遇,为他们创造更好的物质生活条件,解决他们后顾之忧,这些做法无疑是非常必要的。但是将物质奖励的作用看的绝对化,看的至高无上,恐怕还是一种简单化的思维,其结果也将肯定和他们以为能达到的目的相去甚远。“明码标价”之类可以休矣。
(《北京大学校报》2003年3月5日第三版,《文汇报》2003年11月5日第五版)
改革杂谈
 
“改革”应该是这二十多年里出现频率最高的词语之一。改革可以是一个十分宽泛的概念,大到国家的经济体制、政治体制改革,小到某个部门、某个基层单位一些具体的政策措施。改革无论大小,都应该是一项十分严肃、艰巨的任务。
然而在某些人眼里,“改革”却似乎只是一个名词,一个时髦、随意的概念。如果将那些仅根据少数领导人的意志,不看其是否在理论和实践上都具备先进性,不顾及多数人利益的政策措施都冠之以“改革”的名目出台,就很难得到大多数群众的认可。现在经常有“改革者”抱怨群众不理解、不支持他们的“改革”,甚至还给人扣上“反对改革”的大帽子。但细察其详,这些所谓的“改革”常常是在维护有权有势的“改革者”们的既得利益,将改革的好处和利益据为己有,而将改革的风险和成本让那些无权无势的“被改革者”承担。群众的眼睛是雪亮的,他们也许认识不到“改革者”所标榜的“重大意义”,但却不难从实际产生的效果中得出自己的判断。随着经济建设的快速发展,社会生活的日趋繁荣,在许多地方都要进行新的改革、新的利益调整。任何改革都应该是神圣的、庄严的,是应该代表最广大人民群众的根本利益的。改革不应该成为某些既得利益者打着“改革”旗号而行利己之私,使其成为自身利益合法化的一种手段。过去曾有人对自由的泛滥发出过这样的感慨:自由,自由,多少罪恶假汝之名以行。我们不禁也要针对某些泛滥的“改革”而发出感慨:改革,改革,多少私欲假汝之名以行。
历史的经验已经证明,改革是一项极为艰难的事业。改革的最大困难恐怕是在保持现有体制基本框架的前提下,要对已有的利益格局进行重新调整。改革往往会损害到某些权利阶层的既得利益,自然会遭到他们的强烈反对,这大概也是历史上的改革很少有成功先例的主要原因。任何改革家都应该有极大的勇气和自我牺牲精神,仅仅知道享受“改革”成果的绝不是真正的改革家。然而令人遗憾的是,有许多所谓的“改革”,不过是权利阶层互相划分利益的一种游戏,对于普通群众来讲,这种“改革”往往会受到他们的抵触和反感。老舍先生的名剧《茶馆》里有这样一句经典台词,茶馆的跑堂李三到民国时期还留着辫子,老板娘跟他说如今都改良了,你这辫子也该剪了吧。谁知李三却马上回答:“改良改良,越改越凉,冰凉!”这恐怕是一个最普通的老百姓在见多了各类“改革”后所得到的最切身的感受。据老舍先生的子女介绍,《茶馆》在法、德等欧洲国家巡演时,这句台词一说出也得到了热烈的掌声,获得了强烈共鸣,可见滥用改革之名而行利己之私的情况并非中国所独有。
任何改革举措都应该进行充分的调查研究,进行充分的论证,而不能“闭门造车”。改革的目标、措施一定要切合本地区本单位的现实情况,循序渐进,便于施行,而不宜好高骛远,最终只能流于形式。有些“改革者”的出发点是好的,但却缺少必备的理论素养和实际工作经验;有些“改革者”自我感觉良好,喜欢自以为是,一意孤行;有的“改革者”急于开拓新局面,从国外或其他地方拿来“新鲜”的做法便急于实行,往往会脱离实际。改革是一项十分复杂的系统工程,那种将改革看的过于简单、过于容易甚至过于霸道的态度都是不可取的。
北大历史上就是“常为新的,改进的运动的先锋”,以开风气之先而闻名于世。改革开放以来,北大陆续出台了一系列改革措施,其中不乏有成功的经验,有些改革举措在全国高校乃至在国内都处于领先地位。但我们还远不到可以自我夸耀的地步,有些已经进行的或将要进行的改革方案、举措都还有待于在理论上进行充分的总结和论证,有待于广大师生集思广益的充分讨论,更有待于实践的检验。我们应该在改革的决策上充分实现科学化、民主化,使学校任何改革决策的出台既科学合理,得到广泛的认可,又能经得起实践的检验。
(《北京大学校报》2003年6月2日网络版)
 
 
人才浅议
 
人才问题是全社会都十分关注的一个问题,人才的培养选拔更是北大建设世界一流大学的关键所在。改革开放以来,随着国家对教育特别是对高等教育的日趋重视,接受各类教育人员的规模之大,各类人才培养的数量之多,乃至出国留学的人数之众,都远远超过了历史上任何时期。由此看来我们所期待的那种人才辈出、群星灿烂的局面早就应该出现了。
然而实际情况却并不尽然。尽管现在培养人才的规模、数量都是空前的,高级人才如教授、博士的数量更是成十倍、百倍增长,到处可见“跨世纪人才”、“有突出贡献的专家”。但是真正优秀的人才,特别是在国际上拔尖人才的缺乏仍然是困扰我们的一个突出问题。据有关部门统计,今天中国拥有的科技人才的绝对数量甚至在世界上都是领先的,但在这种绝对数量增长的背后,却是较低的专利与科技产出量,高级人才的供应仍然严重不足,国家的科技竞争力远远不能和我们这个人口大国、“人才”大国相适应。
北大一向被认为是中国的最高学府,近年来又提出了建设世界一流大学的目标,更应该以培养和造就在国际上达到一流水平的人才为己任。长期以来我们一直在呼唤大师,但是老一代的大师渐渐离我们远去,新一代的大师却罕见出现。不独在北大,在国内其他名牌高校,在其他众多领域,大师级人才的缺乏都是一个不争的事实。现在的文坛上产生不了新的鲁迅,舞台上看不到新的梅兰芳,在科学、思想、文化、艺术乃至在实业界都很难看到既有崇高威望,又有极大成就,同时还具有举足轻重影响的领袖级人物。与此相联系的,难以产生科学技术上重大的创造发明,思想文化上重大的建树,文学艺术上新的公认的经典作品,乃至真正具有国际竞争力的产业。
姑且不论中国历史上的“百家争鸣”、“四大发明”,以及灿若群星般的众多杰出人物。即便是离现在不远且十分动荡的民国时期,在许多领域也都活跃着一大批优秀的人才,北大过去一批大师级学者大多也是在那个时代成长起来的。反倒是在这几十年长期和平的环境下,在教育空前普及的情况下,杰出人才的匮乏成为一个突出的问题。
人和人之间是千差万别的,人才,特别是杰出人才一般都具备鲜明的个性。最近看到一些老清华学生描述名教授的文字,在他们笔下,教授们或形象可笑,或举止怪异,然而却无一不是饱学之士。人们对许多杰出的人物,不仅了解他们的成就,也熟悉他们的逸闻趣事,往往越是杰出的人物其经历愈特殊,个性愈鲜明。但是现在对人才的要求却似乎出现了某种标准化的倾向,例如都要求具备某种学历,要求达到什么样的外语水平。如照这些标准,北大历史上担任“新文化运动”主将的陈独秀、鲁迅等人都不合乎今天北大教师的要求,胡适的博士学位也是后来才得到的;也许将来北大的教授都能达到用一门外语授课的水平,但不知其中可否会出现辜鸿铭、林语堂那样能用非常好的英文写出煌煌大作的北大教授。九方皋相马不识其毛色,不辩其雌雄,只看其是否具备了千里马的资质。我们今天对人才的要求是否倒有些舍本逐末了,强调人才的一般标准而忽略人才的特殊禀赋,某种程度上造成了今天特殊人才、杰出人才的匮乏。
人才的成长自有其内在的规律性。我们对杰出人才的要求固然十分迫切,希望尽快有一批得到国际同行公认的很有成就的学者,但是也不可拔苗助长。“十年树木,百年树人”,“三代以上才能产生一个贵族”。据对诺贝尔奖获得者的调查,大多数获奖者其父亲、祖父一辈都是从事科学研究工作的;许多被视作大师级的学者,考察其身世,大多也具有深厚的家学渊源。笔者曾听到北大一位很有名气的教授坦言,他所从事的研究领域国内在二、三十年,甚至更长时间内都不可能问鼎诺贝尔奖。目前国内绝大多数的学科领域恐怕都处在这种状况。留学国外的大量人员中,真正从事前沿科学研究的杰出人才也十分有限。应该认识到在我们在杰出人才方面同国外的实际差距,也应该看到完全改变这种状况绝非一朝一夕之功,需要从整个社会环境、教育体制入手,真正形成一种人才自由成长、自由竞争的局面。只有从根本上改变我们固有的人才模式、人才标准,并经过一个比较长的历史过程,杰出人才大量产生的局面才有望出现,北大也才能培养并吸引大批优秀人才,真正有实力同世界一流大学展开平等对话。
(《北京大学校报》2003年9月10日第三版,《中国社会科学院院报》转载。经适当修改后,《文汇报》2003年11月21日第五版以《标准化不是人才成长规律》为题发表,《人民日报》社《思想理论动态参阅》2003年12月9日转载)
讨论与争论
自学校《北京大学教师聘任和职务晋升制度改革方案》(征求意见稿)出台以来,可谓一石激起千层浪,在校内校外都引起了很大的反响和关注。对此项改革举措众人可谓见仁见智:主张者理由充足、态度坚决;反对者则针锋相对,不乏尖锐的批评意见。自“改革方案”公布之后,在各个座谈会上,在互联网上,在报纸杂志上,乃至在电视上,都可以看到热烈的讨论和争论。笔者见识浅陋,难以对整个方案做出自己独立的评判。但学校能将此项方案及时公布并广泛征求意见,广大教师能以高度的负责精神积极参与讨论,通过广泛的讨论和争论,以寻求最终合理可行的改革举措。此种做法和现象在近些年来的北大还是不多见的,也无疑是令人赞赏的。
前些年在北大曾经有一种观点,即片面强调对学校的各项举措要“不讨论,不争论”。小平同志的确是讲过“不要争论”,但小平同志主要是指对那些明显有利于发展社会生产力,明显有利于改善人民生活的方针政策不要在“姓社姓资”的问题上讨论不止,争论不休,从而贻误发展时机,并不是对任何问题都“不要争论”。持这种观点的同志实际上是过于相信自己的权力和能力,不愿意让广大师生、干部在学校改革、发展问题上拥有更多的发言权。回顾历史,假如没有20世纪70年代末那场关于真理标准问题的大讨论,就很难正确地总结过去,面对未来,拨乱反正,改革开放的思想理论基础将不复存在,改革开放的国策也就难以比较顺利地推行。而这场关于真理标准问题的大讨论正是小平同志亲自倡导并全力支持的。
在西方发达国家常常会看到这种情况,在某项决议通过之前赞成者、反对者都可以充分发表意见,但决议一旦获得多数票通过,则大家都会不折不扣地自觉执行。而在我们周围却常常看到许多政策、决议通过的时候非常一致,甚至压制不同意见,但执行的时候却是各打各的算盘,互相掣肘,不知使多少“一致通过”的决定在执行时或大为走样,或名存实亡。由此看来,还是先允许大家充分发表不同意见,通过讨论、争论各抒己见,权衡利弊,取得共识,然后再付诸实际行动。总比不允许反对意见存在,实际上又不能防止反对者貌合神离的情况要好得多。
鲁迅先生早就告诫过国人,中国人并不是不能接受外国的新事物,但“不过并非将自己变得合于新事物,乃是将新事物变得合于自己而已。”钱钟书先生在《围城》中描述了当时的教育部要求各大学实行牛津剑桥的导师制,导师制在英国本来是一项好制度,但是一到中国就变了味。于是借书中人物赵辛楣之口发出感慨:不知怎么,外国一切好东西到中国没有不走样的。可见任何好的改革举措,即便是从国外学来的新事物,不管其如何先进,如何合理,也应该防止在执行过程中走样,这恐怕正是许多人担心、疑虑的。也只有通过充分的讨论和争论,真正使大家看清改革过程中可能会产生的新的矛盾和新的问题,并制定出切实可行的对策,防患于未然,才能保证各项改革举措的公正实施。
建设世界一流大学是一项长期艰巨的任务,需要集中全校师生员工的智慧。应该充分相信我们的广大教师,在他们当中蕴藏着极大的热情,深刻的思想,高度的责任,他们中的大部分人是会理解学校面临的各种困难和问题的。只要是真正对学校发展有利的改革措施,大部分教师是会接受和拥护的。此次人事制度改革教师们通过多种形式的讨论和争论,真正以学校主人翁的态度比较充分地表达了自己的意见;学校也以充足的时间再三听取各种意见,“改革方案”数易其稿,对此项关系全局的改革举措十分慎重。希望这种态度和做法能在北大继续存在下去,也希望今后能听到范围更广的讨论和争论,许多新的思想、独到的见解正是在不断的讨论和争论中产生的,也许这正是北大生机与活力的一种体现。
(《北京大学校报》2003年11月8日第三版)
 
 
走上博雅论坛
今年是北大校刊复刊50周年,复刊后的校刊已印发了上千期。说起来我也算是一个比较老的北大人了,从入学后就经常阅读校刊,留校工作以后,同校刊的历任主编、编辑们大都熟悉。但在我进北大的前20年里,却几乎没有机缘在校刊上留下过只言片语。
我同校刊真正产生比较密切的联系是在两年多以前,那时校刊刚刚从四开四版的小报改成对开四版的大报,我们的办公室正好又搬到和校刊编辑部相邻。有一次我在楼道里遇到校刊主编魏国英老师。魏老师向我提出,现在学校领导层有一种意见,校刊作为学校重要的宣传媒体,不能只是宣传成绩,也应该反映一些工作中存在的问题,可以有一些不同声音。魏老师询问我能否为校刊写一些这方面的文章,并可以为此开辟专栏。我自思在北大工作的时间也比较长了,对学校各方面的情况还算熟悉,多多少少也有一点自己的见解,于是就答应了魏老师的提议。当时校刊上已有王义遒教授的“湖边琐语”及其他教授的专栏文章,都十分精彩。人家是饱学之士,是名教授,而我不过是一个学识、见解都十分浅陋的普通工作人员,对于写专栏文章实在没有信心。
但是已经答应了,就只有硬着头皮上阵,于是在校报新开辟的“博雅论坛”专栏上陆续写了《大楼、大师与“一流”》、《“小人物”与“大事业”》、《读“内部简报”有感》、《高待遇不等于高创造力》、《“人才”浅议》等十余篇评论文章。考虑到自己的水平有限,怕别人笑话,同时也担心一些意见比较尖锐,怕引起不必要的麻烦,于是在今年以前写的文章中都用了笔名。然而出乎我的预料,很快就有同志对我的这几篇小文章表示兴趣,多次有人打电话给校刊或我本人对文章中的观点表示赞同,有的文章被送出去参评并获得了一些奖励,其中包括获得了“北京新闻奖”,也有数篇文章被其他报纸转载。
最近校刊要庆祝复刊50周年及印发1000期,约我写一点文字。50年的时间不算短,1000期加起来也有相当大的数量,而我在其中不过占有极小的篇幅,本来是不值得一提的。但我还是要在这里向北大校刊,特别是要向北大表示感谢,感谢北大校刊给我这样一片园地,更感谢北大的胸怀和宽容。也许只有在北京大学这样的学校,才能够做到思想自由、兼容并包,才能够允许不同意见的存在,不仅允许学者名流们发表意见,也允许我这样一个普通的小人物发表意见,这应该是自信心的一种表现。我的那几篇小文章是微不足道的,但却不经意间从一个侧面反映出北大“海纳百川,有容乃大”的气魄。有了这样的胸怀和气魄,我想北大的未来应该是大有希望的。
(《北京大学校报》2003年10月10日复刊1000期纪念专刊第五版,题目为编辑所加)
姚明现象的另一种启示
NBA赛事在中国的转播已经很有些年头了,笔者开始关注这项比赛大约是在1990年代中期乔丹第一次复出之后,当年公牛队第二次夺取三连冠的过程相信也曾令大洋彼岸的每一个中国球迷为之击节赞赏、荡气回肠。NBA无疑是篮球运动的最高殿堂,这里有最激烈的较量,最精彩的表演。
随着王治郅、巴特尔的先后加入,在这项世界最高水平的篮球比赛中终于开始有了中国人的身影。但是直到2002年NBA选秀大会上姚明以第一顺位被休斯敦火箭队选中,成为NBA有史以来第一个非美国籍的“状元秀”,中国人才真正在这个篮球运动的殿堂上产生了极大的影响和轰动效应,姚明也随之成为世界体坛最具影响力的运动员之一。
中国的体育运动在世界上已经取得了很大成就,悉尼奥运会上就曾以金牌榜的前三位而傲视群雄。但是也不可否认,在一些热门的体育运动,如足球、篮球、网球、赛车这些职业化高度发达、市场影响力巨大的项目中,特别是在其最高水平的竞技中,还一直难觅中国人的身影。中国足球队好不容易进了一次世界杯,却只能匆匆铩羽而归;杨晨、孙继海、李铁等人虽然先后参加了欧洲足球联赛,但毕竟还只是一些小配角。这个时候姚明以主角的身份开始登场了,在涌现过张伯伦、贾巴尔、乔丹等天皇巨星的NBA舞台上,在美国这个篮球王国,破天荒地出现了一张来自东方神秘国度的黄种人面孔,其影响力和震撼力是可想而知的。如果说姚明在那一刻吸引了全世界的目光也并不为过。
姚明很快正式进入了NBA的竞技场,他所展现给世人的不仅是他的球技,还有他东方式的含蓄的风度,迷人的微笑,以及面对铺天盖地的媒体时过人的智慧。姚明在树立中国人的国际形象方面所发挥的作用也许已经超过了一些原有的宣传手段。姚明也很快赢得了美国观众的喜爱,多家公司更是向他挥舞着巨额的支票,他所得到的拥戴程度和商业价值是任何其他中国运动员都不曾达到的,已经进入了世界顶级运动员的行列。他所受到的关注和他在赛场内外的表现可以说已经形成了一种“姚明现象”。但是客观地讲,姚明目前的球技还不能和他的名气相媲美,他的名气和商业价值更多地是因为他来自东方并且背后有十几亿中国人的巨大市场。姚明在NBA常规赛上已经是第二个赛季了,在球场上他有过超凡的表演,即使面对奥尼尔、邓肯这样的巨星也丝毫不落下风,但也有不少低迷的时候。至少到目前为止姚明还不是NBA的超级球星,离篮球场上“最有统治力”的地位还有很长的路要走,但是他毕竟还有很大的潜力,最重要的是他凭自己的能力和表现已经稳稳地站在了最高水平的竞技场上。
对于广大的中国球迷以及全世界的华人来说,对姚明的期待和支持可以说是无条件的,姚明在赛场上每时每刻都牵动着全球华人的心。笔者以为“姚明现象”的意义和价值绝不仅仅局限于篮球场上,它可以说是中国人渴望参加世界最高水平的竞争并且在竞争中展现自我的一种体现。中国曾经在相当长的历史时期领先于世界,但是近代以来却发现自己逐渐落后了,在21世纪已经来临之际,这种全面落后的局面仍然没有得到根本改观。职业体育的落后仅仅是一个小的领域,我们在社会、经济、科技、文化等诸多领域仍然落后于西方世界。落后的原因有很多,但是很大程度上恐怕和中国人普遍缺乏一种公平竞争的环境有关。在我们的现实生活中,个人的财富、地位、社会名望往往不是和才能成正比的,多种因素制约着国人才能的充分展示、个性的充分张扬。中国人太渴望公平竞争的环境了,许多人都试图在姚明的身上寻找自己的影子,都渴望像姚明一样去参加高水平的公平竞争。NBA赛场则将这种每个人都希望充分展示自己能力、个性的需求发挥到了极限,乔丹力挽狂澜的英雄本色,罗德曼虽行为乖张而勇气十足,都可以充分地展现在世人面前。这里更没有种族、国籍、意识形态等方面的区别,一切都要靠实力说话。NBA同时又是科学精确的,特别是比赛时字幕上打出的层出不穷的统计数据,使观众可以全方位地了解想要了解的所有信息,每个球员的价值都可以通过这些数据得到充分体现。笔者这里倒是有一句题外话:希望我们各级统计部门的同志都应该看一看NBA的比赛转播,这样也许会有利于我们的各种统计数据更加科学、精确、全面。
姚明已经在NBA赛场上取得了初步的成功,他所需要的是更进一步展示自己的能力、霸气和个性。但是我们不能只有一个姚明,不能只靠一个姚明来体现中国人的形象。不仅在体育运动领域要有更多的姚明,笔者更希望我们的国人要发愤图强,在经济、科学、文化、艺术等其他所有领域,有更多的“姚明”、“张明”去参加世界最高水平的竞争,当然更希望我们逐步创造出一个能让各种“姚明”都脱颖而出的公平竞争环境。只有当更多的中国人不断出现在世界最高水平的竞技场上,充分展现出中国人的能力、意志、品质,并且扬眉吐气地取得竞争中的优势,中国在国际社会的形象才会得到根本性提高,中华民族近代以来的落后局面才会从根本上得到改变。希望这也是“姚明现象”对我们的另一种启示。
(《文汇报》2004年2月13日第五版,次日中央电视台早间新闻节目报纸摘要中做了介绍)
超人现象
 
    记得多年前曾经看过一部美国影片《超人》,影片中的超人来自外星球,可以上天入地,力大无比,无所不能,但是他的超能力并没有什么科学依据,不过是为了满足一种幻想和消遣的需要。扮演超人的演员后来不幸摔成了高位截瘫,在日常生活中一点也没有“超人”的能力。
    然而在现实社会中我们却经常会发现很多“超人”。前两年看到报纸上刊登大幅广告,那个所谓“词坛怪杰”张俊以居然同时以两大集团公司总裁的身份炫耀。我当时就很不以为然,心想能把一个公司做大、做强就非常不容易了,果然没过多久,这位张先生就因经济犯罪而锒铛入狱,其“两大集团公司”也不知所终。张先生大约曾经以为自己是“超人”吧。不过时下的“超人”还有不少,前些时候据媒体透露,一个中国女孩子获得牛津大学有史以来的最高分,并得到六万英镑的高额奖学金,而且她还有模特般的身材、明星般的容貌。我当时也感到纳闷,怎么这么多好事情都集中到一个人身上了?此后不久知道果然又是一场骗局。中国人大约是崇拜、向往英雄、完人的,现实生活中找不到多少英雄、完人,就造出许多完美的“超人”,以此来满足自己的心理需要。
“两大公司总裁”、“牛津女孩”不过是骗人的把戏,但在我们身边却还活跃着许多实实在在的“超人”。仅以学术界而言,我们经常就能见到某位学者“专著上百部,论文上千篇”,而且还不需要花太长时间,是不是在学术界也存在着许多“超人”呢?我不得而知,反正一个严肃的学者是很难做到这些的。我曾向一位著名学者的研究生了解他导师有哪些主要成就?这位研究生只是向我列出其导师三篇学术论文的题目,认为通过这三篇论文就可以体现他主要的学术贡献。我不知道那些学者“等身”的著作是如何炮制出来的,其中又有多少是真有价值的。
学术界的“超人”不仅能落笔如飞,而且在教书育人方面也有非凡的能力。现在一个导师同时带二、三十名研究生恐怕不算太少见的,我曾听某大学一位博士生说过,她的导师连博士生、硕士生加在一起,同时带了107名研究生。我倒建议有关方面可以调查一下,看看是不是还有更多的,以此申报吉尼斯世界纪录大全恐怕问题不大。只是不知道这究竟体现的是中国学术界的骄傲还是荒唐呢?我还担心这样的导师能否来得及将每个学生的论文都看一遍,会不会“误人子弟”?当然,我这种凡人的担心可能根本是多余的,人家本来就是“超人”嘛。不过北大去年就明确做出规定,为提高博士生的培养质量,今后每位博导每年招收的博士生不得超过两名。北大此举看来也是不相信有什么“超人”的。
中国人好像历来有一种情结,就是过于依赖某些有超凡能力的人,把他们奉为神明,以致于整个民族都可以停止思考。现在我们是不再相信神明了,但是似乎又把这种对神明的信仰转移到某些“超人”身上了。我们真正在国际上赢得荣誉、为国争光的杰出人士并不多见,但是身边总少不了各式各样的“大师”:一个学者做出了一些成果,很容易地就被称为“学术大师”;一个演员演了几部戏,也一不留神就成了“表演艺术大师”。不知道那些真正的大师对此会作何感想。中国人好像还有一种习惯,就是很不能“万千宠爱在一身”:一个人一旦在某方面取得了一些成就,就以为他可以无所不能,荣誉唯恐给的不够,担子唯恐加的不重。这种情况下也产生了不少“超人”,就是不知道这些“超人”能否承受得起。
所谓的“超人”其实根本是不存在的,“超人现象”的泛滥不过是中国人急躁、“跃进”心理的又一种体现。我们不能人为地制造各种“超人”,而是应该更多地保持一种平和的心态,按照人才成长的规律,顺其自然。长此以往,真正的人才才能逐渐成长起来,我们的各项事业也才能取得真正的进步。
(《北京大学校报》2004年2月26日第三版)
从出乎许振超意料之事谈起
近日,国内各大报纸均在头版详细报道了青岛港吊车司机、桥吊专家许振超的先进事迹,并将其誉为“当代产业工人的杰出代表”、“民族复兴的脊梁”。对一位普通的劳动者有这么多重要媒体以如此显著的篇幅,如此高的评价进行广泛宣传,颇让人眼前一亮。许振超尽管文化程度不高,但他却是“干一行、爱一行、精一行”,经过自己的不懈努力,从一名初中毕业的普通工人成长为令世界航运界瞩目的桥吊专家,他和他的团队已多次刷新世界集装箱装卸纪录,在看似普通的岗位上做出了极其突出的成就。
笔者注意到,在关于许振超的报道中透露,去年年底青岛港成立合资公司的时候,许振超觉得自己年龄大,没学历,估计合资公司不会要他。出乎许振超意料的是,这种情况没有成为现实。但是能够让许振超这样的杰出人才都产生出的这种疑虑,却具有一定的代表性。这是不是说明一些被我们普遍遵循的用人标准有进一步检讨的必要呢?
对许振超的报道使笔者不禁想起另外一件事情:2000年俄罗斯“库尔斯克号”核潜艇沉没事件震惊世界,事件给俄罗斯人民带来的悲痛不必多言。潜艇沉没后,俄罗斯方面全力组织营救,但在全球目光的关注下,俄罗斯的潜水员却迟迟无法打开潜艇,不得已求助于挪威。挪威潜水员仅用了很短时间就顺利进入潜艇并发现了遇难官兵。俄罗斯人民在悲痛之余又感到了一种深深的羞耻,为本国潜水员的无能而感到羞耻。俄罗斯民族是一个伟大的民族,曾经为世界奉献出无数优秀的科技文化成果,但是仅仅因为潜水员的能力就已经显著地影响到俄罗斯的国家形象。
许振超也好,挪威的潜水员也好,他们并不是所在国家的顶级人才,都是一些具有特殊技能的普通劳动者,但在他们身上同样体现着非常重要的价值。我们不妨设想一下,中国的港口每年吞吐的货物数以亿吨计,贸易额达数千亿美元,同世界上几乎每个国家和地区都有贸易往来。假如没有大批高素质的工人,装卸货物总是不能安全及时,那么对中国的国家形象将会造成什么样的影响,又会给贸易双方带来多么巨大的经济损失。对于我们这样一个想要实现现代化的大国而言,培养和造就数以千万计的许振超式的技术工人无疑是一项最基础、最重要的任务。
然而一段时期以来,在某些地方和行业,在某些同志的眼里,似乎只有学者、专家、博士、教授、工程师、厂长、经理才够得上是人才,才是“培养”、“选拔”、“照顾”的重点,而大量普通劳动者的价值总是被有意无意地忽视。令人遗憾的是,我们并没有涌现出多少在国际上领先的高精尖的人才,而普通劳动者素质的下降却成为困扰我们各行各业的一个突出问题。据统计,中国的高级技工仅占全体工人总数的4%,而发达国家却占到30%至40%,中国的工业产品之所以难以在国际市场上取得更大的竞争优势,高级技工的缺乏肯定是最根本的原因之一。现在许多企业虽然对高级技工开出了比博士、硕士更高的身价,但是仍然难以寻觅到优秀的技术工人,长期以来忽视普通劳动者的恶果已经开始显现。
德国的产品素以制作精良而享誉世界,这恐怕和他们有世界上最好的职业培训体系关系密切。桑塔纳轿车开始引进中国的时候,仅在方向盘上的技术指标就达200项之多,而国产的方向盘当时仅有几项技术指标,没有高素质的工人是生产不出这种高质量产品的。许多德国公司的总裁不过是技术学校毕业的,在我们这里也就相当于中专文凭,但其手下却不乏打工的博士;瑞士银行以管理高效而闻名世界,但许多瑞士的银行家只是出身于银行学校,并没有很高的学历。这种情况在目前的中国都是不大可能出现的。在对待人才的问题上我们似乎走入了一个误区,一般职工即使再优秀、再能干,也不能算是高层次人才。过去我们还有八级工资制,一位八级工的社会地位、经济收入都足以令人羡慕,但是现在还有多少人羡慕一位技术工人呢?
不仅在企业界如此,其他行业也有类似的问题。笔者在大学读书的时候,曾经亲身感受过一些前辈学者的道德文章风范,而那时还有一些老的教辅人员,如老的教务员、实验员,还有一些老的校工,同样也能感受到他们有很高的素质、涵养、能力,某些方面甚至不亚于那些大学者,他们凭借着自己的平凡工作受到了师生的普遍尊重。但是现在恐怕就很难看到这种情况了,普通职工在企业、大学及许多其他行业都缺乏真正的地位,虽然他们没有专家学者的层次,没有企业家的实力,没有明星的影响,但却是体现各行各业整体水平的基础所在。
事实上,一家企业的整体水平,是不难从一名最普通的职工身上体现出来的。而培养大批高素质职工的关键在于提高他们的社会地位和经济待遇,既要使他们受人尊敬,也要有合理的报酬。而当一家企业随便一个低层管理人员的地位、待遇都大大高于最高级技术工人的时候,又能指望有多少工人去刻苦钻研技能并安心于自己的工作岗位呢?我们的时代需要许振超这样当代工人的优秀代表,需要各行各业都出现无数的许振超,也更需要为许振超们创造一个有利于成长的外部环境。只有真正贯彻落实中央人才工作会议提出的“不唯学历、不唯职称、不唯资历、不唯身份,不拘一格选人才”,“鼓励人人都作贡献,人人都能成才”,才能涌现出更多的许振超,中国的现代化建设和综合国力的提高才有了根本保证。
(《文汇报》2004年4月19日第五版,《人民日报》社内参《思想理论动态参阅》2004年5月11日转载)
板凳要坐十年冷,文章不著一句空
 
在校内外媒体关于孟二冬同志事迹的报道中,笔者感触最深的就是他的朴实无华。中文系主任温儒敏教授的一番评价也许最能概括孟二冬同志的特点:“他没有什么惊天动地或重大影响的成就,甚至可能系里有些教师还不认识他。但你仔细品味孟老师的为人为师,能体会到他在平常生活中呈现的人格魅力。”以往有些媒体在宣传先进典型、英雄人物时常常有一种倾向,就是喜欢拔高这些先进人物,往往拔高到常人难以企及的程度。但是在对孟二冬同志的报道中就看不到这种倾向,我们可以很亲切地接受他、感受他、学习他,如同身边一位可靠的朋友。他是一名好教师,是一位好丈夫、好父亲,他的潜心学业、教书育人都是常人可以做到的,但是能够长期甘坐冷板凳,能够这么多年来始终如一日地指导、关怀、爱护他的学生,特别是在他身患绝症、身体极度虚弱的情况下还能全身心地坚持这样做,就显得非常难能可贵了。
最能体现孟二冬甘坐冷板凳的治学精神的,是他那部具有重大史学文献价值的专著《〈登科记考〉补正》。他在长达7年的时间里,几乎每天都和北大图书馆馆员一起上下班,翻遍了能够收集到的所有相关古籍,终于完成了这部100多万字的著作。本来这也许不足为奇,但是要知道他撰写专著的这些年,也正是市场经济大潮不断涌起,社会上形形色色的诱惑不断冲击着高校的时期。坐冷板凳、做实实在在的学问,似乎在某些人身上已经不再是追求的目标了。有些教师关心著作的数量远胜于质量,对名誉利益的追求远胜于对学术的追求。当然这种现象也和有关部门急功近利,不断出台一系列不太科学的奖励制度有关。在这种背景下孟二冬能够静下心来,不受外界影响,扎扎实实地做学问,勤勤恳恳地教书育人,把自己的全部身心投入到人民教师的本职工作中来,就显得十分难能可贵了。“板凳要坐十年冷,文章不著一句空”这句朴实的格言在他的身上得到了完美的体现。
由孟二冬身上,笔者不禁联想到了刚刚去世的王选同志。无论从成就、威望、人格魅力等方面看,王选在同时代的科学家中都是非常突出的。同王选相比,也许孟二冬在对社会的实际贡献上还有一定差距,但他们身上都体现出一些共同的特点,不仅在学术研究上异常扎实刻苦,在人格魅力方面也得到几乎所有人的公认,堪称是道德学问完美结合的典范。孟二冬为完成专著甘坐7年冷板凳,填补了学术上的空白;王选的贡献更是举世公认,他后来也确实获得了很高的荣誉和地位,可是他当初也是以一个助教的身份,默默无闻地带病从事着最尖端的科技创造,十余年后才获得了突破性的成果。没有那么多年默默无闻的辛勤耕耘,也就没有后来的王选。北大既需要王选这样的大家,也需要孟二冬这样无私奉献的优秀教师。如果说王选是金字塔的塔尖,孟二冬这样的教师就是塔基,他们身上都共同体现出了坐冷板凳、做真学问的治学精神,都是对北大光荣传统的继承和发扬。北大只有涌现出更多的王选、孟二冬,构成严谨治学的深厚基础,才能为中国的科技、思想、文化等领域的进步做出更大的贡献。
王选已经离开了我们,我们将永远怀念他;孟二冬还在同疾病进行着顽强的抗争,我们都会在心里默默地为他祝福,相信他会战胜病魔,重新站在北大的讲台上。但是他们的贡献、他们的精神已经成为北大永远的财富,激励着我们不断前进!
(《北京大学校报》2006年3月1日孟二冬先进事迹专刊第一版)
具备一种王选式的关切情怀
 
中央宣传部、中央统战部和教育部最近联合发布了开展向王选同志学习活动的决定,王选同志先进事迹报告会也在各地陆续举行并得到强烈反响。王选无疑是中国当代享誉国内外的科学家,被誉为当代毕昇,他发明的“汉字激光照排”技术为中国的出版印刷业带来革命性变化,使汉字的出版印刷告别了“铅与火”的时代,走进了“光与电”的世纪。虽然他已经离开了我们,但他杰出的贡献和人格的魅力必将受到人们长久的怀念和爱戴。
今天我们纪念王选、学习王选,他不凡的业绩被更多的人所了解。不知道大家有没有注意到这样一个细节:王选在作客中央电视台《大家》栏目时曾经讲过一段话,谈到自己当初之所以选择“汉字激光照排”作为攻关目标,一个重要原因是因为他亲身去过印刷厂,看到印刷工人实在是太辛苦了。中国虽然是印刷术的故乡,但是直到1970年代,汉字印刷仍然停留在“以火熔铅,以铅铸字,以铅字排版,以版印刷”的铅印阶段,不仅污染十分严重,工人们还要捧着沉重的铅字版来回捡字,每天行走的距离达好几十里,劳动强度极大。这样的场景激发了王选要改变中国出版印刷业落后状况的雄心壮志。
王选看到的场景已经过去了好几十年,今天的中国也发生了翻天覆地的变化。但是我们也不能不看到,当年印刷行业的状况仍然是今天许多中国产业的真实写照:资源的过度消耗、环境的持续污染,超人的劳动强度仍然伴随着众多的行业。尽管中国的经济总量取得了举世瞩目的增长,已经是世界上钢铁、煤炭、纺织品等行业的头号生产大国,也是手机、电视机等电子产品的头号生产大国,计算机、小汽车的产量也位居前茅,“中国制造”已享誉世界。但我们这个“中国制造”却没有多少是自己创造的东西,多数是低附加值的产品,高新技术产业多是在搞加工组装,核心技术并不掌握在自己手中。用一种比较形象的说法,我们出口一亿件衬衫才能换回一架空客飞机,卖一台电脑才能挣一捆大葱的钱,比起掌握高新技术、品牌等知识产权的外国公司所得微不足道。
由于资源、环境、技术等方面的制约,中国传统的高投入、高能耗、高污染的经济增长模式已经走到了极限,难以持续发展;而普通劳动者十分低廉的收入也亟待提高,依靠低成本劳动力优势的发展道路越来越难以为继。根本的出路就在于要提高中国产品的技术含量,依靠科技的进步、创造力的增强提高中国经济的竞争力。王选正是走出了一条中国特色的自主创新道路,他没有选择跟在别人后面亦步亦趋,而是直接研制国外还没有形成产品的激光照排四代机,跨越了西方国家从一代机到四代机40年的发展历程,使我国的编辑、印刷、出版全行业实现了从工业时代向数字化时代的历史性跨越。在他和团队的共同努力之下,方正出版系统迅速占领了国内出版印刷行业99%的市场份额,海外华文出版业90%的市场份额,创造出可观的社会效益和经济效益,曾与之竞争的所有国外照排机厂商不得不全部退出中国市场。此外,他们还开发出日文排版系统,使其成为我国首次大规模出口的、有自主知识产权的高科技产品。
   我们怀念王选、学习王选,就是希望中国能出现更多的王选式的科技工作者,希望他们有更多的发明创造,特别是应该像王选关注印刷工人一样关注第一线的普通劳动者。生产第一线的工人也许是最能体现行业技术水平的,他们的劳动条件越差,劳动报酬越低,这一行业的技术含量往往也就越低。我们每年要挖出世界上最多的煤炭,生产出世界上最多的服装鞋帽,但是如果看一看煤炭工人的现状,看一看那些加班加点忙碌在流水线上的打工者,也许就不值得为此夸耀。如果通过技术的进步更多地使用新能源,降低居高不下的能耗,也许就不需要再挖那么多煤了,也可能不会再有那么多的矿难了;如果我们掌握了更多的核心技术,创造出更多的知名品牌,就不会总是处于国际分工的低端,依靠廉价的劳动力为别人打工。
王选是单纯的,他一门心思地搞发明创造,一门心思地想改变印刷工人的艰苦劳动,从来没有想过这个成果要得到什么奖励,要从中获得多少个人的利益。在王选等人的努力下,今天的中国可能已经没有铸铅排版的印刷工人了,他们的工作状况得到了根本改善,同时也意味着这个行业取得了巨大进步。现在科研方面的物质条件比起王选当年不知要好了多少倍,但是我们的科技工作者更应该具备一种王选式的关切情怀,应该把更多的目光投向那些普通劳动者。而不是只满足于争取多少科研经费,成果获得某种鉴定,做出多少论文,评上什么职称。中国的科技工作者如果能更多地深入基层,深入到普通劳动者中间,通过科技的进步改善他们的工作环境,也就必然能够提高相关行业的技术水平,从而为中国经济的持续健康发展提供强大的支持。王选虽然已经离开了我们,但是他立足于自主创新、立足于关怀普通劳动者的科研之路,为更多的科技工作者指明了前进的方向,这也正是王选留给我们的最大的启示,是他超越自身技术领域的价值所在。
(《文汇报》2006年6月21日第八版)
大学生当村官谈起
    今年北京大学有19名大学毕业生被选聘到京郊房山区基层农村工作,将到房山区担任村党支部书记助理、村委会主任助理等“村官”职务,这是北京市2006年招聘2000名大学生“村官”计划的一部分。此项计划自2005年底一推出,立即受到了北京高校学子的热烈响应,据悉共有11000多名高校毕业生报名。大学毕业生到基层农村工作,历年都不乏一些具体的事例,但是像北京市今年这样有组织、成规模地选聘毕业生去农村,应该称得上是一项新的创举。
    毋庸讳言,随着“扩招”后大学生数量的大幅增长,近年来大学毕业生的就业确实出现了困难的局面,就业问题已经成为一个社会关注的热点问题。这项举措一推出,也立即引起了社会各界的广泛注意,并且有一些不同的看法和见解。但是从中国农村的现实状况考虑,从大学毕业生的发展出路来看,此举都不失为一次有益的尝试。我们对中国的基本国情应该都不会陌生,13亿人口中生活在农村的占大多数,但是总体上农村的经济社会发展状况却远远落后于城市。农村发展的滞后固然有十分复杂的原因,但是农村地区缺乏高素质的专业人才也是一个不争的事实。
目前我国正处在全面建设小康社会,构建社会主义和谐社会的历史进程中,其中最艰巨最繁重的任务就在于农村。党中央、国务院在“十一五”规划中,明确提出了建设社会主义新农村的宏伟目标,强调只有发展好农村经济,建设好农民的家园,让农民过上宽裕的生活,才能保障全体人民共享经济社会发展成果,才能不断扩大内需和促进国民经济持续发展。可以说中国现代化建设的关键就在于农村的现代化,而社会主义新农村建设正需要大批有理想、有抱负、有专业技能的人才投身到这一空前的伟大工程中。
大学教育目前在我国已经初步普及,每年都有数以百万计的大学毕业生需要就业,而城市的容纳能力毕竟是有限的,与其千方百计寻找大城市已近饱和的就业机会,不妨把眼光投向广阔的农村。随着社会主义新农村建设的逐步推进,农村教育、医疗事业的发展,水、电、路、网等基础设施的建设,农业生产结构的调整,乡村政权执政能力的提高,都迫切需要大批的高素质人才。不能仅仅将大学毕业生走向农村看作是解决就业问题的一条出路,而应该看作是全面建设小康社会,走向全体人民共同富裕的一项根本措施。毛泽东曾经把知识青年和学生青年同广大的工农群众结合在一起,看作是青年运动的方向,是中国新民主主义革命取得成功的必由之路。今天的社会环境虽然已经发生了很大变化,但是农民占中国人口大多数的基本事实仍然没有改变。正如当年没有广大农民的参与就不可能取得中国革命的最终胜利,今天如果没有广大农村地区的繁荣富裕,中国的现代化也只能是空中楼阁。提高农村地区的文化教育水平,帮助他们实现现代化的生活方式,应该是摆在中国当代知识青年和学生青年面前一项重要的历史使命。
当然大学毕业生到基层农村工作还面临着许多实际的困难和问题,京郊和长三角、珠三角等发达地区的农村经济社会发展已经达到了较高水平,总体环境可能会比较有利于大学生发挥作用。但是要号召更多的大学毕业生到农村,特别是到中西部比较落后的地区去,还需要制定相应的政策和鼓励措施,特别是要为他们创造能够切实发挥聪明才智的环境,否则将很难吸引更多的大学生献身新农村建设。此外,刚刚走出校门的大学生自身还有许多不足,他们一般还不太熟悉农村的现状,更缺乏对乡村社会世态人情的深入了解,也不具备实际的管理经验,可能会遇到许多意想不到的困难,甚至会受到某种排斥,应该有一些这方面的思想准备。虽然以前有个别到农村工作的大学生走上了领导岗位,但不宜将其视为普遍现象。随着更多的大学生走向农村,更需要脚踏实地,切实为基层农民服务,提高当地的社会发展水平。大学生也不一定都要去当“村官”,农村教师、医生、乡镇企业技术人员、基础设施建设者管理者等职业领域,都可以有大学生广泛的用武之地。
北京大学的这一批大学生即将走向基层,走向农村,但是新农村建设需要有大批的各类专门人才,即使是北京市今年总共2000人的数量也毕竟有限,而且还仅限于京郊农村。但是他们的行动可能会代表着一种方向,将激励更多的大学生走向农村、走向基层。当然要吸引更多的大学生到农村工作也不能只凭号召和热情,还需要各级政府制定相应的鼓励政策,对他们的工作和生活条件给予必要的保障,尽可能解除其后顾之忧。如果每年都有更多的大学毕业生不再把就业目标局限于大城市,甚至仅仅局限于国家机关和事业单位,而是更愿意将他们的青春和智慧献给基层农村,那么无疑将会促进农村社会整体落后状况的改善,促进中国现代化建设的进程。
(《北京大学校报》2006年6月15日第一版,《文汇报》2006年6月28日第八版)
炒作北大之我见
今年暑期以来,有关北大的一些负面新闻频频见诸于平面媒体和网络,影响到北大的声誉和形象,引起了社会上的广泛关注和学校方面的高度重视。客观地讲,有些对北大的指责是没有什么依据的,有些则是误解或夸大,也有些确是校内个别单位或个人有做得不妥当的地方。但是确实都对北大产生了一些负面影响。
对于媒体的“炒作”,首先不妨看到北大毕竟是中国最有影响力的大学,正因为有影响,所以才会成为某些媒体刻意炒作的敏感之地。类似的情况如果发生在一所不知名的大学身上,恐怕就不会有多少人感兴趣。正如笔者这样的普通人走在大街上,肯定不会有人多看一眼,但如果换成是姚明、刘翔,则恐怕交通都要为之堵塞。所以有些媒体热衷于“炒作”北大其实是一种很正常的行为,他们的目的就是要吸引更多的眼球。北大毕竟太有名了,一举一动都会引起各方面的关注,而且这类“炒作”今后可能还会不断发生,我们对此大可以用平常心来看待。
其次,也可以将某些媒体对北大的“炒作”放到整个中国教育的大背景下来看。我们不能不承认,尽管中国的教育特别是高等教育近年来取得了长足的发展,但是教育的整体现状仍难言乐观。上学难、学费高的问题普遍存在,大量贫困家庭的孩子求学困难,在教育这样一个最应该体现社会公平的领域人们的不满反而更多;虽然国家逐渐增加了对教育的投入,但某些学校热衷于讲排场、比奢华,学校内部行政机构庞大,运行成本很高,教育经费并没有完全用于教育事业本身;更有一些教师弄虚作假,占用大量的科研经费,用于个人或小团体谋利;还有不少学校竭力迎合官员、富商的需要,虽然也有为学校争取教育资源和经费的目的,但具体做法上往往被看作是嫌贫爱富,很容易引起广大群众的愤慨。
今年夏天出现的关于西瓜注射红药水的谣言流传甚广,这一事件也可以用来说明一些关于“炒作”的问题。西瓜注射红药水经过试验实际上根本不可行,但包括笔者在内的很多人都轻易相信了这一谣言,于是农民辛辛苦苦种出来的西瓜大量卖不出去,仅海南瓜农为此就损失了三千万元。这个谣言虽然十分荒谬,但如果没有此前那么多的注水猪、注水牛,假种子、假化肥,乃至于各种危害人民群众生命健康的假冒伪劣产品的泛滥,人们也不会轻易相信这一谣言。正是此前大量存在的此类不法行为,才为谣言的广泛传播提供了基础。
回过头来再看媒体对北大的负面“炒作”,如果没有目前教育界普遍存在的一些引起人民群众强烈不满的严重问题,人们也不会轻信那些没有多少事实根据的对北大的指责、误解。某种程度上北大是在代中国教育受过,因为北大被视为是中国的最高学府,甚至可以说是观察整个中国教育的一个最直接的窗口,人们也很容易把那些在教育界存在的一些问题联想到北大身上,自然地相信北大也会出现此类问题。就以北大要建高尔夫球场的误解为例,正是由于众多高校普遍对官员富商趋之若鹜,一般人就容易相信为满足他们的需要北大可能真的要建高尔夫球场,而不去仔细考虑这类项目在北大校园根本不具备可行性。教育界存在的一些不正之风,人民群众对教育现状的不满情绪正是媒体“炒作”北大负面新闻的舆论基础。
媒体对北大的继续“炒作”肯定是难以避免的,我们应该如何应对?笔者以为最重要的一点还是应该把自己的事情做好,变负面新闻的“炒作”为正面成绩的宣传。中国教育界存在的一些问题积重难返,解决起来非一朝一夕之功,但是北大毕竟是被国人寄予厚望的最高学府,关于北大的一些负面新闻之所以被“炒作”起来,恐怕也是人们不愿意看到在其他学校发生的事情同样也会在北大发生,对北大有一种更高的要求和期望。我们即使不能做到“兼济天下”,至少也应该“独善其身”。应该承认,一些在教育界存在的问题在北大也有不同程度的存在,北大毕竟不可能脱离社会的大环境而不受任何影响,但是我们可以尽量少做那些可能产生负面影响的事情。多一些奉献,多一些创新,多一些为人民群众利益呐喊的声音;少一些索取,少一些追名逐利,少一些对既得利益阶层的追捧。我们应该有更多的像王选、孟二冬一样的优秀教师涌现出来,培养出更多愿意为国家、为人民鞠躬尽瘁、奋斗不息的优秀人才,奉献出更多可以促进社会进步、提高人民生活的优秀成果。如此,我们对媒体的“炒作”就不仅不会反感而且会十分欢迎,因为他们要“炒作”的都是北大的成绩、北大的贡献,北大将以自己的优异表现赢得广大人民群众的满意和尊重。
(《北京大学校报》2006年11月7日第三版)
从艾冬梅遭遇看运动员培养方式转变
 
    4月初,原火车头体协女子长跑运动员艾冬梅因与其教练王德显的官司未了,加之身体伤病、生活无着,不得不摆地摊谋生,甚至要出卖奖牌换钱的新闻引起了很大反响。从艾冬梅的遭遇,人们很自然会联想起前不久靠给人搓澡以维持生计的全国女子举重冠军邹春兰,甚至几年前不幸去世的亚运会男子举重冠军才力。这些曾经取得过不错的成绩,但在退役后却生活艰难的运动员的命运令人唏嘘不已。在媒体和社会的广泛关注下,艾冬梅的生活状况近日已出现很大转机,继收到南京某公司10万元创业费后,又以10万元的合同成为徐州某卫生品公司的形象代言人,其丈夫和孩子也得到相应的安排。
虽然艾冬梅的生活问题已基本得到解决,但是她的遭遇并不只是个别现象,其身后还存在着一个不小的群体,并非所有退役运动员都能像邹春兰、艾冬梅那样幸运地受到关注。从艾冬梅等人的遭遇,不能不引起我们对传统的运动员培养方式的反思。
同样是从事竞技体育,与艾冬梅们形成鲜明对比的,则是姚明、刘翔等明星运动员的如日中天。反差如此之大,抛开运动项目的热门程度、个人的天赋差别等因素之外,恐怕在运动员培养方式上的不同理念也是重要的因素。
虽然姚明、刘翔的个人天赋是可遇而不可求的,但其成长轨迹得益于接受了比较系统的教育,具备了比较全面的能力。姚明不仅在球场上叱咤风云,在球场下常常也是引经据典、妙语连珠;刘翔的运动成绩举世瞩目,而他面对公众和媒体大方、阳光的形象,更是受到无数人的追捧。姚明、刘翔更因为热心公益事业而愈发受到国人的尊敬和喜爱。此外如笔者非常欣赏的女子游泳运动员罗雪娟,虽然她因身体原因遗憾地过早退役了,但她在比赛时必胜的勇气和信心,在面对媒体时的大胆和直率,都给国人留下了深刻的印象,体现出了极佳的心理素质和个人素养,相信她今后一定会在其他领域做出突出成绩。
在去年北京大学著名体育教授林启武先生百岁生日之际,林先生早年说过的,要让每一个有文化修养的人都有健康的体魄,让每一位体育工作者(包括运动员)都有较高的文化修养的言论仍被人反复提及,认为是林老对体育运动宗旨的精辟概括。毛泽东更是早在1917年发表的《体育之研究》一文中就明确提出:“文明其精神,野蛮其体魄。此言是也……苟野蛮其体魄矣,则文明之精神随之。”
以此要求来看待姚明、刘翔等一批优秀运动员,不难发现他们除了突出的运动成绩之外,在个人的思想、品德、文化、修养等方面也成为人们效仿的偶像。与其他群体相比,他们似乎更能体现出当代中国人的国际形象,其影响力早已大大超出体育运动领域。最近“台球神童”丁俊晖参加一些重要比赛成绩不理想,甚至出现厌倦情绪。有评论者就指出,丁俊晖应该把注意力适当地放到台球之外,应该多读一些书,并指出刘翔也曾出现过类似情况,但刘翔训练、比赛之余以名人传记、各类名著代替了电脑游戏,文化修养和心理素质由此得到很大改善,突破了限制其进一步提高的“瓶颈”阶段。
由此反观艾冬梅等人退役后的遭遇,其根本的原因,就是在他们成长的关键时期,没有根据全面发展的需要进行综合培养,其文化素质方面的缺陷是无须讳言的。在训练中也过于强调“出成绩”的一面,没有真正做到以人为本,采取科学、合理、人性化、可持续发展的培养方式。即使出了一些成绩,在过于严厉的管理方式面前,也很难持续下去。并非笔者有先见之明,早在1993年“马家军”正是大红大紫之际,笔者从大量报道中就隐隐感觉到其训练和管理方式有过于严酷的一面,不想第二年就发生了“马家军兵变”,一支曾经天下无敌的队伍顷刻瓦解。中国男女足球队近年来都遭受过一些惨重的失利,究其原因,除了技术上、能力上的差距之外,恐怕运动员文化素质方面的不足,集训、比赛期间各种非人性化的,过于死板、僵化的管理方式也难辞其咎。
艾冬梅的遭遇进一步引起了社会对退役运动员的广泛关注,他们毕竟为中国竞技体育取得的辉煌成绩做出过贡献。除了不断完善退役运动员的生活保障体系之外,恐怕更需要对一些传统的训练和管理方式进行反思。运动员必须的文化知识学习,必要的技能培训,退役后适应社会能力的培养,乃至身体的健康,都不应该以任何理由受到忽视。2008年奥运会即将在中国举办,不仅是体育主管部门,包括笔者在内的大多数国人都会对金牌数、奖牌数充满期待。但在盼望中国选手取得好成绩的同时,更应该期待他们在赛场内外都能够充分展现大国运动员全面的风采,获得竞技比赛和精神文明的双丰收。如此,中国的竞技体育方能走上健康的发展道路,走向光明的未来。
(《文汇报》2007年5月11日第五版)
大学要创建一流但更要引领潮流
相当一段时期以来,中国的大学,主要是一些历史悠久、声名卓著的名牌大学,纷纷提出了创建高水平大学的发展目标,其中的一些顶尖大学更是提出了要创建世界一流大学,有的还列出了具体的时间表。随着国家和社会财富的不断增加,这些大学也获得了多方面的支持,尤其是国家“211工程”、“985工程”对一批重点大学给与大力支持,各校的财力大为增强,规模大为扩充,建筑、设备等基础设施条件大幅度改善。
但是与大学经费增加、规模扩大、条件改善不太成比例的,则是中国大学的声誉近年来出现了不小幅度的下降,大学中出现的各种问题时常会成为舆论和社会关注的焦点,不时更有一些大学被各种“负面新闻”所困扰,而且往往是一些名牌大学。尽管此类新闻与事实时有出入,但公众看到的多是相关大学的否认或辩解,少见自身的反省或引以为戒的谦虚,大学的公信力不断受到质疑。与此同时,一些顶尖高校创建世界一流大学的发展目标似乎并未取得明显进展,单以学术标准来衡量,与世界一流大学的差距也未见明显缩小。
经费投入严重不足是中国教育面对的一个长期问题,各界人士也不断呼吁增加教育投入。但近年来的情况却是如果要求增加对基础教育,特别是农村基础教育的投入,社会舆论几乎没有任何争议;而面对一些已经得到重点扶持的大学希望国家继续增加投入的诉求,社会公众却并不完全认可。尽管高等教育的投入同样严重不足,即使是得到重点扶持、以创建世界一流为目标的大学,其办学经费较之于追赶的目标仍非常有限,这一点也是相关大学特别强调的。至于学术水平更是不可同日而语,但公众对此比较宽容和理解,也并未要求中国的大学马上就达到世界一流的办学水平。人们对大学的不满,恐怕更主要地体现在大学的行政化、官僚化倾向增强,商业化色彩加深,大学追求真理、追求社会公平的理念减弱,大学的精神面貌、大学的社会责任感难以令人满意。
改革开放30年来,中国的经济建设、社会发展取得了巨大进展,但与此同时也出现了一些无法回避的问题。特别是社会财富的分配出现了巨大的差距,一些强势的集团利用其掌握的权力和资源谋求自身利益的最大化,而广大人民群众的利益和权利往往受到这些强势集团的损害,出现了严重的两极分化。大学是专家学者等知识分子最为集中的地方,知识分子除了其专业研究之外,重要的责任就在于要关怀民生,关注社会的公平和正义。然而在社会加速转型的时期,就一般公众的感觉而言,似乎不少专家学者利用专业知识为利益集团代言的声音多了一些;而为普通民众呐喊呼吁的声音少了一些,且不能成为大学中的主流意识。大学似乎也在更多地谋求自身利益,面对社会上一些消极负面的问题,往往不是主动承担责任,引领社会的发展方向,而是随波逐流,出现了比较明显的功利化倾向。
中国的高校在提到世界一流大学时往往言必称哈佛,以哈佛为大学的最高境界。然而哈佛大学去年新上任的女校长德鲁·福斯特在就职演说中提出:“一所大学的精神所在,是它要特别对历史和未来负责——而不完全或哪怕是主要对现在负责。”明确指出是大学改变社会,而不是社会改变大学。遗憾的是我们却听不到以哈佛为追赶目标的中国大学校长们提出过类似言论,如果有,也只能是在过去。蔡元培校长更早在近一个世纪前就提出过:“教育指导社会,而非追逐社会也。”尽管目前中国高等教育的规模已经有了极大的扩展,但谈起理想中的大学,则五四时期的北京大学,1920至1930年代的清华大学,抗战时期的西南联合大学,似乎更符合社会公众对大学的要求;而以蔡元培、梅贻琦、张伯苓、傅斯年等为代表的一批早期的教育家们更符合人们心目中大学校长的形象。
实际上中国的大学在引领社会进步潮流方面曾经发挥过非常突出的作用。五四时期的北京大学不仅是新文化运动的中心,是五四运动的发源地,也是中国最早传播马克思主义的基地,其对中国历史进程产生的重要影响早有定论,这一点甚至是许多世界一流大学难以企及的;在抗日战争极其严酷的环境下,以北大、清华、南开三校组成的西南联大,不仅保存和发展了中国高等教育的一支精华力量,而且正如冯友兰先生所撰《西南联大纪念碑碑文》中所指出的:“联合大学以其兼容并包之精神,转移社会一时之风气,内树学术自由之规模,外来‘民主堡垒’之称号,违千夫之喏喏,作一士之谔谔。”如果以科研、教学等纯粹的学术标准来衡量,当年的北大、清华、西南联大以及其他一些著名大学,同当时世界一流水平的差距也许比现在的大学更小。
客观地讲,即使是中国目前最好的大学,其学术水平要想在短时期内赶上世界一流大学恐怕是很不现实的。但是如果要做到追求真理而不是谋取功利,引领社会的进步潮流而不是为社会的逆流浊流所淹没,更多地为广大人民群众的利益建言献策而不是竭力追捧一些既得利益集团,却是中国的大学及其专家学者们能够做到的,也是社会公众十分期待的。作为大学的主管部门和大学的管理阶层,是否可以在大学的管理中少一些行政化色彩,多一些宽松和宽容,大学真正的意义和价值不是仅通过一些专业化的硬性指标就可以体现的。创建世界一流大学是中国高等教育的一个梦想,也是建设创新型国家所需要的。但是如果大学不是在全社会倡导先进的思想、文化,理顺内外部的管理机制,仅仅想依靠资金的投入,人才的引进,设备的添置,论文数的增加,就可以达到世界一流水平,恐怕会出现南辕北辙的局面;反之如果大学真正能够做到追求真理和正义,引领社会的进步潮流,维护学术的自由,则创建世界一流大学也就自然是其题中应有之意。
(《北京大学校报》2008年11月25日第四版,获北京市新闻学会和北京高校校报研究会2008年度北京高校好新闻一等奖)
燕南园的二月兰
燕南园是北大校园中的园中之园,一堵石砌的小围墙环抱着十几幢绿树成荫的幽静住宅。熟悉北大的人都知道,燕南园不只是一片普通的住宅,因为一批中国现当代最顶尖的学术大师曾长期居住在这里,使其影响力超越了时空,成为许多学人的崇敬向往之地。如今随着大师们的逐渐离去,其中的一些房子才开始被学校改作他用,就在我有幸随所在部门搬入燕南园的这几年里,还时常会遇到前来寻访大师足迹的校内外学子们。
也许是住过许多大师的缘故吧,燕南园里的一砖一瓦、一草一木都让人感到有一种不凡的气度,就是园子里那些看似并不起眼的二月兰,也要比校园里其他地方长的更多、更茂盛。今年入春以来雨水偏少,我原以为二月兰会长得不太茂盛,但从我办公室的窗子望出去,满眼仍然是盛开的二月兰,虽然不及雨水丰沛的去年春天那么多,但这种蓝紫色的小花还是在燕南园里成片成簇地开放。尽管园子里的其他花朵也纷纷争奇斗妍,但似乎都不及二月兰那种满园盛开的气势。
在北大校园里经常会看到园林工人栽花种草、修剪树木,但却从来没有见过有人栽培、养护二月兰。然而二月兰却绝不会因为没有人过问就自卑自弃,每到春暖花开之际,她总是能以最绚烂的色彩呈现在人们面前。我所在的53号小楼是几年前落地翻建的,小楼南面数十米外是55号李政道先生的国内寓所。翻建小楼的时候,施工单位在53号与55号之间的空地上搭建了几间工棚,拆除后的地面上自然是寸草不生。我没有注意过了多久,也许就在来年春天,最多又过了一年,原先被占用过的地方又长满了二月兰;53号小楼改为办公用房后,园林部门按统一规划在周围种上了人工草坪,经常有人来浇水、养护,入夏之后草皮疯长,还要用噪音极大的除草机来剪草。不知浇了多少水,忍受了多少噪音,但那些人工草坪却总也长不好,东一块西一块的。而从没有人关照过的二月兰,不知道什么时候又在草坪上冒出来,虽然没有在无人管理的空地上长得那么茂盛,但也一簇簇的颇为赏心悦目。
我是不大懂生态问题的,但也知道北京的水资源非常短缺。现在不管是在校园还是其他地方,到处都喜欢搞整齐划一的人工草坪,这些草坪不仅要经常浇水,还特别地娇气,动不动就发黄枯死,不得不另外补种。还要喷杀虫剂,用除草机,无一不对生态产生负面影响。但是燕南园里的二月兰,既不需要栽种,又不需要浇灌,更不需要养护,即使雨水稀少,也照样能成片地开花,逢上雨水充沛的年头,简直就无处不在,夺去燕南园中的大半春光。
我的眼前既有盛开的二月兰,也有人工培植但长得稀稀拉拉的草坪,似乎无意间在向我们揭示着某种道理。过去人们在“三北”地区想“人定胜天”,大量开垦、放牧,结果是“沙进人退”,大面积的国土荒漠化。后来虽然也想搞一些人工植被来改善环境,但却是事倍功半。有些地方就不得不把人撤出来,据说这些地方只要人类不再涉足,让大自然休养生息,其生态环境往往能较快得以恢复。
自然界的道理如此,人世间又何尝不是呢?我们搞了这么多年的开放搞活,不就是为了把管的过多过死的经济从人为束缚中解放出来,释放其自身的活力吗?当年赵丹先生的一句临终遗言“管的太具体,文艺没希望”,实在是道出了文艺创作的根本规律。教育又何尝不是如此呢?中国的大学公认的办的最好的时期恰恰是管的最少、自主权最多的时期。但现在的教育管理者似乎已经忘记了这些道理,他们总是不厌其烦地五日一检查,十日一评比,半月一考核,过些日子又来一次评估。其结果恐怕就如同我窗外的那些人工草坪一样,虽然不断有人养护,却总也长不好;即使别处有长得好的,也只是看上去很美,早已失去涵养水源、维护生态的功能。反倒不如没有人过问的二月兰,只要有适当的土地,适当的阳光、雨水,就能够生机勃勃、繁花似锦,给人们带来一个明媚的春天。
(《北京大学校报》2009年4月15日四版)
体制不变,大学校长又何必换岗?
 
近一段时间,武汉大学、中国科技大学、山东大学、吉林大学、北京大学等一批大学的校长或离任、或换岗。大学校长更替本来是平常的事情,只是一下子牵涉到这么多的重量级大学,想不惹人关注都不可能。任命一下,多位副部级的大学校长纷纷收拾行囊启程,教育主管部门的权威之重、权力之大令人印象深刻。
我对这些大学校长的情况都没有多少了解,更无法评价他们任内的功过。但如果不是针对某个具体的大学或校长,而是就大学或大学校长们整体而言,似乎无法得出大学是社会的中流砥柱,大学校长是文化教育界的领军人物的结论。社会上有什么现象大学里就会有相应的表现,社会上有什么弊端大学里就会有相应的问题;大学校长们也都有官场上相应的级别,职务由上级任命,身份更符合政府官员的特点。如果哪位大学校长有不合体制的特立独行的言行,往往会被视为另类,得不到主管部门和同僚的认可。
我相信离任的大学校长中有的任期内做了不少有益的工作,但其中可能也有师生们很不满意,希望他早点走的。在很多部门或单位常常有这种情况:大家对某位主要领导不满意,以为来一位新领导就会好起来,但时间稍久就会发现并没有什么实质变化,甚至还不如过去,最典型的莫过于中国足协近几位掌门人的表现了。如果校长们对上不对下负责的体制不变,校内管理机制和利益格局不变,民主意识淡薄,又没有先进的办学理念,则换不换校长其实并无多大影响。
既然体制一时难以改变,又缺少变革的理念和决心,其实有些大学校长的日子是可以过得很潇洒的。他们一年中可以有半年时间飞往世界各国或国内各地,参加各种各样的会议和考察、访问,至于是否都有必要就不是一般人所能了解的;即使留在校内,也常常是赶场式地参加各种活动,有时还没弄明白这一场的情况又匆匆赶往下一场了,要做的“指示”自然会有人事先准备好,用不着事事都搞明白。过去在校内经常能看到骑着自行车的校领导,甚至还会看到校长弯下身子给自行车打气,现在校领导们一般都是坐小车的,时常还可以看到秘书们专门从办公室出来迎送,并为领导们打开车门。有的校领导是非常在意他们的官员身份的,荣耀感极强。借用鲁迅讽刺北洋军阀时期教育当局重在“当局”而不在“教育”的话,恐怕现在有些大学校长是重在“长校”而不在“大学”的。
不知道从什么时候开始,也许是长期在权力环境下熏陶出来的结果吧,许多老师和学生对校长们往往是心悦诚服,倍加尊敬的。老师们平常是难得见到校长的,更不要说想反映问题了,校长偶尔和自己说了几句话,就颇有受宠若惊之感;如果再对学生表现一下亲民的举动,表示一点关心,再会唱几首年轻人的流行歌曲,尽管唱得很走调。学生们也都幸福的不得了,又是要“感谢关爱”,又是要“感恩”,又是“慈父”的,歌功颂德之声不绝于耳,上上下下其乐融融。
不过话又说回来,如果校长们能够这样潇洒其实也不见得就是坏事。如果他们都要“新官上任三把火”,要不断推出各项举措,要“促进改革”、“加快发展”。根据以往的经验来看,无非就是要“加大考核力度”,要搞“末位淘汰”、“减员增效”、“定岗定编”这类名堂,教师们的日子恐怕就更不好过了,校园里也就更不得清静了。
(写于2008年11月20日)
对党外代表人士进行政治安排和实职安排的一些看法
近年来,党外代表人士队伍建设工作取得了很大进展,特别是《中共中央关于进一步加强中国共产党领导的多党合作和政治协商制度建设的意见》和《中共中央关于加强人民政协工作的意见》的颁布,进一步明确了党外人士配备的政策。各级人大、政协配备党外干部和代表人士的工作都取得了新的进展,同时有大批优秀的党外干部进入各级政府部门。国家科技部长、卫生部长更是直接由党外人士出任,党外人士担任政府部长职务,是三十多年来从未有过的,充分显示出中央在选拔任用党外干部方面的决心和魄力。
党外人士群体中存在着大批层次高、素质好,并有着广泛社会影响的优秀人才,其中也不乏许多具有政治才能和领导能力的同志。应该让更多的党外人士进入各级人大、政协和各级政府部门,加大选拔使用的力度,更大程度地发挥他们的作用。但是,对于党外代表人士进行政治安排和实职安排时也不能简单地认为越多越好、越快越好,而是应该根据不同情况分别对待。
首先,对于那些专业上非常突出,且正处于创造力高峰的党外人士,一般不宜急于进行政治安排和实职安排,特别是不宜急于进行实职安排,让其从事实际的管理工作。众所周知,尽管现在中国各类高级知识分子,各类专家、学者的数量空前,但真正能够在思想、文化、科学、技术等领域做出突出贡献,在国际上有影响力的拔尖人才极为匮乏。其中一项显著的表现就是虽然我国的经济总量已位居世界前列,但却没有多少自己的核心技术和专利,多数行业处于世界产业链末端,在获取有限加工费的同时,伴随着资源、环境方面的重大代价,以及劳动者极低的收入保障;思想、文化、科技、教育等领域对世界上更是没有多少影响力,迄今没有产生过一位诺贝尔奖获得者。除去其他因素之外,各类优秀的创造型人才的缺乏应该是造成这种局面的最主要的原因。与此同时,我国各级政府机构的庞大、臃肿,各类官员的数量之多、耗费之巨,也是人所共知的,早已达到国力不堪重负的地步。以极为有限、极为珍贵的专业人才,又处在创造力旺盛的时期,不去专心从事创造发明,反而急于从政,去补充数量极为庞大的官员群体,应付各种事务性的工作,实在是用非所长,无论从哪方面看都是极不划算的。
已故的党外代表人士王选先生的经历可以为我们提供一些借鉴。王选在创造力正处于高峰的时期并没有担任什么社会职务,而是一心一意从事汉字激光照排技术的研发,开辟了汉字排版印刷的新时代,以技术上的优势战胜了这一领域的国外厂商,占领了国内外汉字排版印刷的市场。而在他已过了创造力高峰之后,才开始担任了九三学社中央及全国政协的重要领导职务,并以其杰出的贡献、巨大的影响力,成为民主党派的旗帜性人物。如果在王选刚刚取得一些进展,有一点成绩的时候就急于让他担任行政职务,就很难想象会对他技术上的突破产生什么影响。此类情况并不少见,有的党外人士在专业领域蒸蒸日上之际,就进行了实职安排,结果整天忙于事务性工作,本来很有成绩和希望的专业领域反而被放到次要位置,很快沦为平庸。不仅对党外人士如此,对其他杰出的专家、学者,技术人才,都不宜非要安排行政职务,以免影响他们业务上的进展和创造力的发挥。
其次,对党外代表人士进行政治安排和实职安排时不要过多地考虑年龄、行政级别方面的限制。进入改革开放新的历史时期以来,党的统一战线政策进一步发展完善,越来越多的党外人士进入各级领导岗位。但是目前在许多地方或部门,对于党外人士的选拔使用还存在不少限制。例如要选拔党外人士担任实职干部,如果是一个副局级岗位,往往要求其担任过正处级职务,同时还有相应的年龄限制。党外代表人士往往多年从事专业工作,到取得一定成就和学术声望时一般也不会太年轻了,又不宜让他们在业务发展的高峰期从事管理工作。到适合进行安排时,他们在参政议政或行政管理方面可能还没有任何经历,年龄也可能偏大一些,因此不能按一般党政干部的选拔原则要求党外人士。党外代表人士多数是大学的教授或科研院所的高级研究人员,教授是没有行政级别的,即使担任了学院院长、系主任,按行政级别只是处级干部,学院下面二级系的系主任,或者系下面的教研室主任,如果硬要套行政级别就只能按科级干部对待。至于在大学里十分重要的学术委员会、学位委员会等机构,更是没有什么行政级别,而这些职务常常都是由学术地位、社会声望很高的教授担任。实际上许多著名学者一辈子担任的最高职务可能就是教研室主任了,更有不少著名学者从来都没有担任过行政职务。
近年来在党外代表人士的政治安排和实职安排上出现了越来越强调行政级别的倾向:许多优秀的党外人士因为没有担任过行政职务,或行政级别不够就不在选拔之列;有的党外人士准备安排在人大、政协或民主党派中任职,也往往要求所在单位为其安排一定的行政职务,搭好所谓的“台阶”。虽然按台阶晋升职务的规定有一定合理性,但是也不宜将其绝对化,将任职经历看得过于重要,将领导职务的门槛看的过于特殊。我们知道人们获取的知识和能力有的来源于直接经验,有的则来源于间接经验,担任领导职务确实需要一定的能力,但是这种能力更多应该体现在分析和判断问题能力的高下,为人处事的分寸,是否公平正直等方面,并不一定都要在担任领导工作后才会具备。有的人从来没有当过干部,但一上任就很有章法;也有的人当了一辈子干部,甚至是很高级的干部,但仍然昏庸无能。此类现象不胜枚举。
许多党外人士多年从事专业研究,取得专业上的成就已经付出了很多时间精力,如果适合进行实职安排,就不能要求他们在行政职务上都要走过所有的台阶,不能按照党内干部的培养选拔规律要求党外干部。对于那些学有所长,综合素质很高,并确实适合担任行政职务的党外人士,只要注意加强培训和岗位锻炼,他们的领导能力和参政议政能力就会很快得到提高。
第三,对党外代表人士进行政治安排和实职安排时要考虑到他们实际的参政议政能力和管理工作能力,并不是所有的党外人士都适宜于参政议政或从事行政管理工作。有的党外代表人士专业能力很强,但却不懂政治,更不懂管理,学术上很有建树,但对政治问题可能只是一知半解,对管理工作相当外行。如果让他们参政议政,很可能谈不出什么有价值的见解,如果担任行政领导,更可能会不知所措。对于那些不适合参政议政,不懂管理工作的党外人士来说,最好还是让他们专心从事学术研究,不要勉强进行政治安排和实职安排,否则既不能发挥应有的作用,又影响了业务上的发展。长期以来在选拔培养领导干部问题上强调要“知识化、专业化”,一般可能理解为担任领导工作要有比较高的学历,有自己的专业,最好是专家出身。所以各级官员中学历高的、有专家身份的越来越多,有的本来学历不高,也要利用职权搞一顶博士帽戴戴,弄一个教授当当,但实际工作能力未见任何提高。广东省委书记汪洋就曾批评说现在有些干部学历越来越高,但解决实际问题的能力越来越弱。应该看到政治工作、管理工作其实也是一种“专业”,并不是学问做得好、学术地位高就一定会做政治工作、管理工作。不仅部分党外专家学者中存在“专业内行、管理外行”的情况,即使现在大量专家学者出身的领导干部中,许多人的实际管理水平和工作能力都是不能令人满意的。问题在于只看重了他们的高学历和专家身份,没有充分考虑到这些同志是否具备管理方面的专长,是否是管理工作的“专家”。
对党外代表人士进行政治安排和实职安排时,应该特别注意把那些具有优良的专业素质,较强的参政议政能力,能够仗义执言,特别是能够关心广大人民群众的切身利益、关注社会民生问题,能提出建设性意见的党外代表人士选拔推荐到各级人大、政协及相关政府部门进行政治安排和实职安排。对于进行实职安排的党外人士,则更要考虑他们是否有这方面的兴趣,是否具备管理方面的专长,以便于为他们提供必要的平台,让他们充分发挥作用。
第四,对党外代表人士的安排使用要切实改变“官本位”的评价体系。有些党外人士正处于业务发展高峰,或并不一定适合参政议政和从事管理工作,但仍然进行了政治安排和实职安排,其目的只是为了提高他们的地位,显示对他们的重视程度。虽然“官本位”制在中国有长期的历史和影响,但历史上还是有许多不愿为官的名士,即使在并不遥远的过去,大学教授、尤其是有名望的教授还是很有社会地位的。但现在就是在以学术为本业的大学和科研院所,行政化的色彩也非常浓厚,“官本位”的评价体系无所不在。学术上非常出色的教授,如果不担任校长、院长、系主任等行政职务,对学校乃至院系的事务实际上是没有多少发言权的。教授担任行政职务,往往被认为是一种“提拔”,甚至出现了几十个教授争当一名处长的事情。一方面对党外人士进行政治安排和实职安排似乎是一种“重视”、“关怀”,不顾其是否适合这样的安排;另一方面又在对党外人士安排时设定出种种条条框框,必须担任过什么行政职务,够什么级别等等。其根本原因都是受“官本位”评价体系的支配,一个人真正的贡献和成就,真正的能力和威望,在官员等级面前都是次要的。这样的评价体系已经从根本上影响了人们追求真理、追求创新的动力,当所有的专业人士都要以官员的要求、好恶为准绳,以官员的身份为荣耀,那么一个和谐的、创新型的社会只会离我们越来越远。必须让所有的人才,特别是各种专业人才,只需要做好自己的本职工作,不需要任何政治身份、官员身份,就能够获得社会的高度认可,这样的社会才是正常的、健康的。
对党外代表人士进行政治安排和实职安排是统一战线领域的重要工作,应该拿出更大的魄力,迈出更大的步子。但同时更要注意破除各种不必要的条条框框,坚持实事求是的原则,使党外人士能够在不同的岗位上各尽所能、各用所长,最大限度地发挥作用,为有中国特色社会主义的政治建设,为我国的科技创新、经济发展、文化繁荣,为社会主义和谐社会的建设做出更大贡献。
(此文获北京市委统战部颁发的2010年度北京市统一战线理论研究和调查研究优秀成果二等奖)
北大应以整体改革的形象重铸辉煌
         
将近一个世纪之前,蔡元培校长执掌北京大学,推行“循思想自由原则,取兼容并包主义”的方针,大刀阔斧地进行改革,聘请了一批新思想、新文化的代表性人物来校任教,裁撤了一批不称职的本国和外国教员。同时对北大的管理体制也进行了改革:设立评议会,作为全校最高立法机构和权力机构;设行政会议,作为全校最高行政机关和执行机关。原本封建官僚色彩浓厚的旧北大很快被改造得面目一新,成为了五四新文化运动的中心,代表了那个时代中国思想文化的前进方向,影响了中国历史发展的进程,也一举奠定了北大的特殊地位。陈平原教授对此曾有过准确评述:“若论北大对于人类文明的贡献,很可能是不少世界一流大学所无法比拟的。因为,在一个东方古国崛起的关键时刻,一所大学竟然曾发挥如此巨大的作用,这样的机遇,其实是千载难求的。”
五四时期铸造了北大最辉煌的一页。时间已经流逝了将近100年,时局也发生了翻天覆地的变化,但北大是否还有机会重新复制五四时期的辉煌呢?笔者认为这种可能性是完全存在的。尽管五四新文化运动已经离我们很远了,然而那个时期所批判过的许多旧的思想、观念、传统依然深深地影响着今天,思想启蒙的任务仍然远远没有完成;中国的改革开放已经进行了30余年,在取得巨大经济建设成就的同时,也积累了许多十分严重的问题,特别是体制方面的问题已经不容回避,即使是北大也深深地陷入其中而难以自拔。
同历史上的北大、清华、西南联大,乃至同世界上任何优秀的大学相比,目前中国的大学包括北大在内,其最大的问题恐怕是缺少独立精神和自由思想,和体制的联系过于密切,行政干预的力量过于强大。北大无疑是中国最具影响力的大学,一向被国人寄予很高的期望,被视为代表着社会的良知、民族的脊梁。但是不管我们是否愿意承认,目前的北大是无法承担这些使命的。其根本原因在于今天的北大并未能真正继承蔡元培校长的办学思想,并未担负起应该坚持承载的历史责任,而是在许多方面自觉不自觉地顺从并迎合了世俗的观念、体制的需要。
一个国家、一个民族总是要有一些群体、一部分人有更高的精神追求的,要能够为全社会倡导先进的思想、文化、理念,引领时代的进步潮流,也要有一种敢为天下先的勇气。从历史的传统和现实的需要来看,北大都应该义不容辞地充当这样的角色,北大也完全有能力承担这样的使命。
首先,北大应该拥有一支在国内最具影响力的公共知识分子群体。无论是从纵向还是横向上比,目前北大高级知识分子的数量之多,培养各类人才的规模之大,都可以说是空前的,但社会影响力却远不及五四时期的一小批先进知识分子,学术水平上也不及老一代大师。北大固然需要有一大批专业素养很高,甚至可以达到世界一流水平的学者,但是北大的学者中,不要求全部,至少有一批,甚至是占主流的一批学者不仅应该在专业领域成就卓著,而且应该敢于就广泛的公共事务发表意见。他们的研究领域可以是自然科学、社会科学或人文学科,但他们同样应该关心公共事务,关怀人民大众,为社会的公平正义,为民智的开发,为民生的改善,为民权的保障而呐喊、而奋斗。这也正是陈独秀、李大钊、胡适、鲁迅等一批五四时期的北大学者们所走过的,为北大带来巨大声誉的道路。尽管现在北大不乏这样的学者,但总体上还形不成较大的声势和影响,和时代的需要,和人民大众的期望值相距甚远;甚至有的学者不是站在人民大众的立场上,不是在促进社会的进步、和谐,而是站在权贵阶层的立场上,维护其既得利益,遭到人民大众的反感。
鲁迅1925年在《我观北大》一文中写道“北大是常为新的,改进的运动的先锋,要使中国向着好的,往上的道路走。”这句话早已被我们耳熟能详,尽管后来的北大、现在的北大都恐怕受之有愧,这还只是鲁迅观北大的第一点;鲁迅观北大的第二点:“北大是常与黑暗势力抗战的,即使只有自己。”后来却常常被有意无意地忽略不提。其实不必讳言今天的社会还存在许多黑暗面、阴暗面,仍然需要北大站出来与之抗战、斗争,鲁迅的北大观至今并没有过时。一支有真才实学,有真知灼见,敢于仗义直言,能够为国家、民族的前途命运奉献全部热情、才智、责任的公共知识分子群体应该是重铸北大辉煌所必需的。五四时期《新青年》办得再好,发行量最多不过几万份,只能在当时占人口比例极小的一部分知识群体中造成影响。而随着人民群众文化水平的普及、提高,电视、网络等新媒体的应用,客观上也为学者们提供了更广阔的言论空间和行动舞台,就看新一代的北大学者能否传承那些前辈的思想和精神了。
其次,北大应以自身的制度化建设推进中国的政治体制改革、推进中国的民主化进程。随着经济体制改革的不断深入,我国的政治体制也应该进行必要的改革,这已经成为全党全社会的共识;民主化是政治体制改革的核心,是当今中国的大势所趋、民心所向。不久前召开的党的十七届四中全会决议强调:“坚持以党内民主带动人民民主”。但是对于中国的政治体制改革应该如何进行?民主化应该怎么实现?都还没有现成的路径。众所周知,中国的改革开放始于党的十一届三中全会,但是对于怎样进行改革?三中全会及以后中央的历次决策并没有给出全部答案。小岗村的家庭联产承包制是十几户农民冒着风险搞起来的,后来才得到肯定和推广;深圳等特区是在一片非议声中发展起来的,邓小平对特区的建设也没有给出很具体的指示,而是要求“你们要杀出一条血路来”,并一再强调“改革开放的胆子要大一些,步子要快一些”。
既然我国的经济体制改革没有现成的道路,那么对于政治体制的改革同样也需要探索和尝试。北大作为中国最有影响力的大学,理应在自身的制度化建设、民主化管理方面走在全国的前列,这方面的事情做好了,也就必然会产生很强的示范效应。北大如果不率先致力于管理体制深层弊端的改革,自然会有其他地方进行尝试。从笔者了解到的有限信息中得知:原中国科技大学校长朱清时近期出任新成立的南方科技大学校长,有志于建设一所全新管理体制的大学,据说深圳市还要出台地方法规,以保证南方科大的办学自主权。尽管我们还无法预期这所大学的未来走向,但其着力于大学去官化、去行政化,触动大学深层弊端的尝试无论如何是值得肯定的;深圳大学几年前就成立了由不担任行政职务的教师组成的人事委员会和财务委员会,学校所有进人指标和财务预算都要分别由这两个委员会通过后方可施行。深圳曾经是中国改革开放的先驱,在大学体制的改革方面是否也要走在全国高校前列?北大的地位和声望固然是深圳这两所大学无法企及的,但是不要忘了,当年的蔡元培校长也是用了很短的时间就使北大声誉鹊起、独领风骚;建校时间晚于北大的清华、燕京也是在不长时间内就进入了中国最好的大学之列;近期的香港科技大学建校十年就成为了亚洲一流大学,国际上排名已在北大、清华之前。北大如果不打算在深层体制的改革上有所作为,将来落在其他大学后面并非没有可能。
大学内部常常将体制上的弊端归咎于各级行政部门的干扰,抱怨没有多少办学自主权,却很少从自身找原因。实际上包括北大在内的国内众多高校,官僚化习气之浓厚,行政部门之庞杂,权力运作之不公开、透明,乃至于以官场规则主导学术规则,早已成为社会舆论的众矢之的。虽然有行政部门的多方干预,但是同历史上的大学相比,现在的大学对行政权力的渗透不是自觉地防范、抵制,而是积极靠拢、主动迎合,甚至为了满足自身的权力愿望,在可以掌控的领域内全面贯彻。当年的蔡元培也并不如我们想象的拥有多少办学的自由,蔡元培1919年曾发表过不愿再任北大校长的宣言,抱怨了他任校长期间经常受到的官僚们的训令、干涉,受到各种强权的压力,实际上很不自由。但他仍然能顶住各种压力和干扰,大胆改革,铸造了北大最辉煌的篇章。如果大学不能认识到自身的问题,从改革内部的弊端做起,则大学的行政化、官僚化就真的是无可救药了。
北大近些年来也陆续推出了一些改革方案,从前些年的人事分配制度改革、人事聘任制度改革,到最近推出的中学校长实名推荐制,无一不引起校内外激烈的争论和质疑。这些改革举措虽然也是必要的,但是都没有从深层次的问题上入手,没有着力于解决大学行政化、官僚化泛滥的问题。改革如果不是从解决这些根本问题入手,而是试图从一些次要方面打开局面,并且这些改革本身还是由公众最质疑的行政力量所主导,其目的和效果自然难以令人信服,出现怀疑和批评就是很正常的。现在的社会舆论已经出现了相当程度的开放,对于北大的批评和质疑更不会受到什么约束,不仅是网络媒体,甚至传统媒体都可能会对北大进行激烈批评,北大必须要学会适应这种局面。从另一方面讲,北大之所以受到这样强烈的批评和质疑,也说明社会公众对北大还抱有一定期望,希望北大能够表现出某种特立独行的气质,在思想的引导和体制的创新方面为今天的社会做出表率。
现在的北大确实可能比蔡元培时期面临着更多的压力和干扰,但是这些力量也许并不如想象的那样强大和不可抗拒。在中国的改革开放不断深入,进入攻坚阶段的艰难时期,北大完全应该有所作为,应该发出自己的声音,拿出自己的行动,以强烈的使命感和无畏的勇气,进行全面、深入、整体的改革。历史的机遇和时代的要求使北大完全有可能再现五四新文化运动时期的辉煌,完全有可能对中国的历史进程再次产生重要的推动作用,不仅可能涌现出陈独秀、鲁迅这样的思想界领袖,也可能涌现出蔡元培这样杰出的教育家,就看今天的北大还有没有这样的信心、胆识、智慧和历史责任感了。
(《北京大学校报》2010年1月8日第四版)
看餐饮中心文艺汇演有感
1月18日晚,我去大讲堂参加餐饮中心的活动。本来以为只是看电影,不想进去之后才知道当天晚上首先进行的是餐饮中心的迎新春文艺汇演,并且为每位来宾都发了节目单。我当时还有几分抱怨,早知如此还不如等电影开始后再来呢,不过既来之则安之,就坐下来看看演出吧。
我对这场演出没有任何心理准备,在北大呆了这么多年了,高水平的专业文艺演出都看过不少,一台餐饮中心的业余汇演能有什么名堂。于是抱着试试看的态度,如果节目不好看,就随时准备走人。不想一开场的健美操表演就把我吸引住了,看到那些平时在餐厅里为我们打饭、服务的姑娘们换上漂亮的服装,展现了她们青春、靓丽、活力四射的一面,不觉使人眼前一亮。当晚的演出进行了大约一个半小时,还表演了独唱、合唱、舞蹈、诗朗诵、相声、京剧、情景剧、乐器演奏等节目,形式多样、色彩丰富,内容生动、贴近生活。大部分是由各个食堂、餐厅的外来务工人员表演的,也有一部分餐饮中心的正式职工参加演出。坦率地讲,节目的总体水平毕竟是业余的,但看的出来他们进行了精心的排练。尤其是那些在北大打工的年轻姑娘、小伙们,虽然他们的表演不乏稚嫩之处,他们的歌声、舞姿、舞台形象、节目内容不算完美,但都是非常真实、生动、有活力的。观众多半是他们的同伴,台上台下不时互动,气氛热烈,掌声、喝彩声不断。
我在北大看过多次专业文艺团体的演出,也参加过不少学生、教职工的文艺晚会,但印象中还没有看到过北大打工群体的文艺表演。目前在北大从事各种服务行业的打工者,其总数绝非一个小数目,虽然每天都能看到他们,但他们的心理状态、生活状态并不完全被我们了解。从这场演出中不难看出,他们也渴望丰富的精神生活,渴望在北大的舞台上展示自己的风采。从那些精心准备的节目形式,自编自演的节目内容,到漂亮的服装、道具,人数众多的演出阵容,都可见他们为此付出了很多业余时间,付出了很多心血和汗水。后来我听餐饮中心崔芳菊主任介绍:他们为这场演出付出了极大辛苦,在两个月的排练时间里有许多事情都让她非常感动,他们在舞台上卖力的表现,比得到奖金更感到荣耀,真是非常可爱。
北大应该是有博大的胸怀和包容性的,校园里不仅有风度翩翩的学者,有风华正茂的学子,也有许多普普通通的外来务工人员。他们虽然不是校园生活中的主角,也许只是一些匆匆过客,但他们同样也在北大生活,也在为北大做出奉献。还是崔主任的语言更准确,他们是在“用自己的辛勤劳动和朴实的感情在丰富着北大的每一天……”。他们不仅需要关怀,也需要有自己的追求和认可,一台晚会也许说明不了太多问题。但是这些打工的男女青年在辛勤的工作之余,进行这样一场演出,不仅自身的才能得到了展示,而且在共同的排练中培养了多方面的能力和团队精神,更重要的是他们的精神生活得到了丰富。也许在他们离开北大很久之后,都会感谢北大为他们提供的机会和舞台,为自己的人生留下值得回味的一页。
我们应该感谢餐饮中心组织了这场演出,他们付出的不仅是时间和精力,是物质上的支持和保证,更重要的是体现了北大的精神和气度。前不久香港大学为一位长期在学校里做饭、扫地的老妇人举行了专门的仪式,授予她“荣誉院士”称号,她以自己平凡的劳动影响了大学,成为“香港大学之宝”,此举得到了内地媒体的一致好评。不管是对自己的老师和学生,还是那些在大学打工的聘用人员,都绝不应该看作是一种简单的利益关系、雇佣关系。大学不一定要有多少大楼,也可以暂时没有大师,但是一定要有大爱,要有一种强烈的人文关怀。
这样的一台晚会也许不宜一下子赋予太多的含义,但希望这在北大是一次好的开始,是一种值得效仿的行为。
(《北京大学校报》2010年3月15日第四版)
 
 
要形成一种敢于表达意见的氛围
我是上世纪80年代中期留校参加工作的,在参加工作的最初几年里,印象中不管是教师还是干部都可能会对学校的工作提出不同意见。在一些重要的会议上,例如学校的党代会、教代会上,更可能会集中提出一些比较尖锐的意见。但不记得从什么时候开始,这些不同意见的声音变得越来越少,乃至于在近些年来几乎销声匿迹。不仅是学校的干部,甚至教师也不提意见了;不仅领导层听不到不同声音,在院、系及各个职能部门内部,也很少听到不同意见;不仅下级对上级不提意见,同级之间、上级对下级之间也很少提出批评意见。
出现这些现象的原因是多方面的,但主要还是和领导体制有关。由于现行体制下各级领导掌握着更多的权力、资源,相当程度上掌握着干部、教师的晋升、提职,自然很多人就会担心影响自己的职务和职称的晋升,影响自己资源、利益的获取,从而不敢得罪领导,不敢提不同意见。但情况又不完全是这样,有些同志职务、职称已经到了头,甚至年龄也快过线了,但仍然不敢讲真话、不敢提意见;还有一些离退休的同志,对现状有许多不满,也只是私下嘀咕嘀咕,不正面发表意见。有些同志甚至自己受到不公正对待,也仍然不敢表达任何不满。
对于那些由于自身原因而不敢、不便于发表意见的同志不妨多一些理解,毕竟在现有体制下提意见可能会得罪领导,而得罪领导就可能会影响自己的前途;对于一些有意见要讲但又没有什么机会讲的同志也不必强求,他们可能连见到各级领导的机会都没有,更不用说坐下来提意见了。问题在于那些有条件发表意见而自己又可以不受什么影响的同志,不知是出于何种考虑?总之是几乎不谈任何自己的意见或看法,或者只是轻描淡写地谈一些问题,甘愿做好好先生。
现在出现一种很奇怪的现象:一方面是社会舆论环境越来越宽松,言论越来越自由,各种批评的意见越来越多,要求公开、透明的呼声越来越高;另一方面却是在各级政府机构、各个部门、各个单位内部,一言堂的情况越来越严重,不同意见的声音越来越少,监督的力量越来越弱,决策越来越缺乏透明度。对于这种现象我始终无法理解,无论是党的领导人一贯提倡的“知无不言,言无不尽,言者无罪,闻者足戒”,还是党章中规定的“坚持民主集中制”,“开展批评和自我批评”的原则,或是现实生活中有更多途径表达的群众意见、群众呼声,都好像在权力面前基本失效,对这种奇怪的现象毫无触动。
任何领导人,任何决策都可能会有失误或不足之处,意见不见得都是正确的,但只有充分发表意见,才能集思广益,有效地避免决策失误。能够从各种意见中总结提炼出值得采纳、参考、借鉴的内容,从而形成更加完善的决策,更能体现出领导人的智慧和把握全局的能力。反之如果领导人所说的每句话、所做的每项决定都受到一致拥护、齐声称赞,自己也可能逐渐丧失正常的判断力,真以为自己一贯正确、英明,实际上对领导者本人也不是什么好事。就像有的领导人有点业余爱好,例如写写字、吟吟诗什么的,水平很有限,本来自我欣赏一下也未尝不可,但周围抬轿子的人多了,必然会一致称好、哄然叫妙。时间久了,领导们自己也难免糊涂起来,以为自己真是什么大诗人、大书法家了,拿出去广泛示人,不免贻笑大方。如果一些有明显错误和弊端的重大决策也是这样在一片叫好声中出台的话,那可就贻害不小、后患无穷了。
在中国共产党的历史上,凡是党内能够充分发表不同意见,畅所欲言的时候,往往意味着形势的好转、历史的转折。遵义会议上,正是毛泽东等同志对当时中央负责人的激烈批评,才挽狂澜于既倒,挽救了红军、挽救了中国革命;在1962年的七千人大会上,与会的各级干部用毛泽东的话讲是“白天出气,晚上看戏”,所谓“出气”就是对各级领导提意见、发泄不满。正是在这种能够比较充分表达意见的氛围下,经济困难的形势较快地得到缓解;在1978年召开的中央工作会议上,也正是陈云等一批老同志直面一系列历史问题的发言,才开始了纠正长期以来的极左错误,拨乱反正。即使是历史上一些比较开明的君王,有时候也是能够虚心“纳谏”的,能出现这样的局面,一般也是君臣比较和谐、社会比较安定的时期。
在当前的社会背景和管理体制下,我们不能强求每个人都要敢讲话、敢发表批评意见。但首先应该让那些在其位、谋其政,有机会、有条件讲话、发表意见的同志先讲起话来,要本着对国家、社会、所在单位负责任的态度,明确地表达自己的观点和态度。这样做甚至都不需要多大勇气,更不必“五不怕”,仅仅只是正常地表达自己的意见而已。但现实中许多同志却是连这一点都很难做到。对于那些不在其位的同志,也不要认为自己讲了都没有用,“说了也白说,白说也要说”,说话的人多了,自然就会形成一种力量,可能会对某些不良现象多少产生一些制约作用。就是那些利益受到损害而仍然不敢讲话的同志,往往越是不敢提意见、越是不敢表达不满,也就越容易被轻视,自身利益越得不到保障。
我想如果在我们学校能有更多的人开始讲话,对学校和各单位的事务踊跃发表看法和意见,学校及各单位也广开言路,广泛征求各方面的意见建议,使全校的气氛逐步活跃起来,形成一种敢于表达意见的良好氛围。也许互相之间的理解和宽容会更多一些,许多事情做起来会更容易一些。
(《北京大学校报》2010年5月15日第四版)
不妨以先易后难的方式推进招生改革
近日,北大11位教授联名致信周其凤校长,对本科招生工作发表了一系列有针对性的看法、建议。周校长很快做出回应,亲自向各位北大同仁、校友致信,就招生制度改革征求意见。此事已引起校内外和新闻界的广泛关注,或可引起新一轮关于招生改革的热烈讨论。
这11位教授都是各方面著名的专家学者,也都“长期关注并不同程度参与过招生工作”。他们从人才培养,特别是培养各行各业引领性人才的战略高度出发,对目前“唯高考分数论”招生体制的种种弊端进行了深入剖析,并提出北大应加大招生改革力度,尝试采用“高考成绩与本校专家面试相结合”的招生选拔方式。正如周校长致信中所言,来信“对现行招生方式进行了客观评价,对改革的意义、必要性和可行性都做了很好的阐述。”但同时周校长又指出:“招生改革事关重大,牵一发而动全身,生怕考虑不周。”周校长的顾虑正体现出招生问题的高度敏感性和复杂性,可能很多人都会同意来信中的分析和看法,但同时又会对任何一项针对招生制度的改革举措顾虑重重。
人们对高考招生制度应该已经形成了一种共识:在当今社会权力和关系无孔不入,许多制度都形同虚设的背景下,尽管这项制度弊病很多、缺陷很大,但它仍然是目前最为公开透明,最为公平公正,最少产生寻租空间,更是最为公众认可的一项制度。套用丘吉尔先生关于民主制度有很多不好,但是还没有发现比它更好的制度,所以我们不得不用它的言论,对于高考招生制度目前也只能得出类似的结论。
来信列举了招生中出现的许多怪现象,例如招生工作已演变为一场各高校之间拉高分考生和抢“状元”的混战,某些学生和家长凭借高分待价而沽等等。应该看到这类现象有“唯高考分数论”的作用,但并不完全是制度本身造成的。高考只是对考生学习能力的一种考察方式,高考分数并不能体现出考生的全面能力,对“状元”和高分考生的过度追逐恐怕更多是相关大学为了自己“面子工程”、“形象工程”需要主动选择的结果。即便是在目前十分严谨的高考制度下,大范围舞弊的现象仍屡见不鲜;为了克服高考招生单一分数论的弊端,多年来陆续出台了保送生、特长生、自主招生等措施,也出台了许多其他加分政策,不能说都没有起到积极的作用,但确实也出现了不少漏洞,为各种权力、关系的寻租增加了机会。出现这些现象更说明对目前的招生制度不能轻易言变,对任何有关招生制度的改革都要慎之又慎。我愿意相信北大出台的招生改革措施都会是非常合理的,也相信我们可以制定出非常严格的相关制度,但我仍不敢相信我们能完全抵御住各种权力、利益、关系的影响、渗透,保证招生改革不受到各种干扰。
按照来信中高考成绩加面试的建议,如何使其具有可操作性也将是一个非常现实的问题。比如面试成绩将占多少比重?让多少位考生来面试?需要多少名教师、用什么标准进行面试?对于边远地区、困难家庭考生怎么解决他们的面试成本问题?怎么保证面试成绩的公平、公正?这些都需要精心设计、严密论证。目前的高考招生制度可以说是采取了举国体制,即使只有北大率先实行大规模的面试,所动用的人力物力都恐怕不是我们一校之力能够单独承受的,其困难和受干扰程度可能将远远超过我们的想象。
笔者既非专家学者又非实际从事招生工作,况又才疏学浅,但既然周校长亲自致信广泛征求意见,也就不揣冒昧地谈一点极不成熟的想法,以供识者一哂。来信认为高考成绩达到一定分数段之后,高考分数在进一步的人才筛选和区分方面几乎没有实质性意义。而根据2009年中国校友会网发布的《中国高考状元调查报告》,通过对1977年至2008年我国各地区高考“状元”的调查,显示“状元”们毕业后职业发展较少“出类拔萃”,职业成就远低于“社会预期”。我的大学同学中就有好几位“状元”,但从来没有感觉到他们认为自己有什么特殊之处,也没有谁主动说起过自己是“状元”。由于各地区文化教育水平的差异,某省排名在后几十位的考生其高考成绩可能还会高于另一个省份的“状元”,“状元”们的平均成绩未必会高于不少其他不是“状元”的高分考生。
如果按照来信中对高考成绩分数段的看法,我们就可以完全不必介意每年招收“状元”的人数,甚至退出对“状元”的争夺战。我们可否以校方、新闻发言人、招生办公室等名义并通过各种方式对外宣布:北大欢迎更多的“状元”及高分考生报考,但北大学生的整体素质不会由于招收“状元”的数量和录取分数线的细微浮动而受到任何影响。如果今年北大招收的“状元”多了几个,录取分数线高了几分,并不意味着今年北大学生的层次就提高了;如果明年北大招收的“状元”少了一些,录取分数线低了几分,也绝不意味着北大学生的素质就下降了。北大不介意招收的“状元”比别的大学少,也不介意录取分数线比别的大学低一点。对于那些凭借拥有高分考生待价而沽的中学、考生本人和其家长,我们大可以听任他们另选买家,北大不需要为钱而来的学生,可以把相关资金用于那些更需要帮助的学生身上。“夫唯不争,故天下莫能与之争。”如果别的大学还想继续争,那就让他们争去好了,反正我们不再玩这种低层次的游戏。笔者绝不相信我们做了这样的表态,高分考生就都不报北大了,反而可能会更吸引那些一心追求理想和学问的考生报考,也不相信其他大学还会好意思继续这种无谓的竞争。
同出台需要进行实际操作、面临重重困难的新的招生举措相比,我们只需要改变一些观念,宣布某些主张,不必对现有招生制度做任何改变,凭借北大特殊的地位和影响力,就足以对全国的教育界和广大考生产生轰动性效应。我们不马上采取实际行动并不是不赞成改革招生制度,而是要在改革的时机、方案上做出更合理、更稳妥的选择,做到举重若轻、删繁就简、化难为易、以虚促实。不仅对“状元”问题宣传我们的态度,也可以对高考的内容、方式以及其他关系到教育改革、人才培养等一系列的问题上发表我们的主张,引起广泛的关注和讨论,促进国家中长期教育的改革和发展。待时机成熟后再推出具体可行的招生改革措施,以先虚后实、先易后难,虚实相应、难易结合的步骤和方式推进招生制度的不断完善。
不知北大的各位同仁、校友以为然否?
(《北京大学校报》2010年12月5日四版)
从领导签字谈起
我在学校机关做职员已有二十多年,工作中没有任何提的起来的成绩,但似乎也没有出现过大的失误。不记得从什么时候开始,一些领导部门的工作要求越来越规范化起来,例如要上报的各种材料都要求单位领导签字并盖章。如果是比较正式的文件、报告,这样的要求当然非常必要,但往往是一些非常简单的内容,例如填报几个数据,核对几个电话号码,也要求单位领导审核签字。尽管通常也就是走一个形式,但类似的要求一多,我忽然开始对自己的能力怀疑起来,难道经过我认真核对的几个简单数据,几个电话号码,都可能是不准确的吗?也许是我多心了,但一种不被信任的感觉却不知不觉地产生了。同时又难免会想,既然什么事都要由领导最后审核、把关,我也就不用那么认真了,反正出了问题是由领导负责的。
我以为这不过是我个人的想法,但有时候接触到一些担任一定职务的干部,谈到有些处理起来牵涉面稍多一点,稍微敏感一点的事情时,往往都不约而同地表示:这事得由领导拍板。我不禁有些困惑了,领导们又不是全知全能,就算他们的水平都很高,但管的事情也多,对许多具体工作不见得都很清楚,为什么要把自己可以做主的事情都推给领导呢?我虽然一天的领导也没有当过,但上上下下的领导们也见过不少,记得北大一位老同志曾说过:解放初期党的干部威信很高,我们以为领导的职务越高,道德品行就越好,水平就越高,后来发现不是那么回事。现在人们看到的形形色色的领导多了,恐怕更难得出领导职务越高,水平就越高,处事就越公正的结论。
许多本可以由普通干部做的事情得由小领导把关,可以由小领导做的事情又需要大领导拍板,谁都不愿意承担责任,往往是小事情拖成大事情,小问题拖成大问题。有些领导一方面对什么事情都亲力亲为,不愿意放手,唯恐下属越权;另一方面遇到关系到国计民生、改革发展的重大问题,却反而没有了担当的勇气和把握的能力。甚至要发表一些重要的讲话,要对本地区、本部门的工作进行安排部署,讲话稿往往只是由身边的秘书起草的;要到下面去考察指导,参加各类公务活动,也需要从全局高度发表一些针对性的意见,但往往也是由下属部门起草好讲话稿,领导们只是照本宣科念一下。
有些官员遇事的出发点不是实事求是,解决问题,而只是想方设法让上级领导满意,自己又不用承担责任,其根本原因都是由于对上负责的领导体制。前苏联电影《莫斯科保卫战》中的一个片段曾给我留下深刻印象,当朱可夫质问西方面军司令巴甫洛夫大将为什么在战争爆发之际不采取任何措施,还在一味等待上级命令时。巴甫洛夫的回答是:我们是这样被教育出来的,这样保险。巴甫洛夫“保险”的结果是他指挥的苏军遭受了极为惨重的损失,他本人也很快被处决。我们的各级领导干部平时不一定会面临这么严峻的环境,所负的责任也有大有小,不见得都会造成灾难性后果。但如果都从个人的“保险”出发,没有一点承担责任的勇气,问题就会越积累越多,越积累严重,直到出现难以收拾的局面。
对于一位真正想要有所作为的领导干部来说,即使是在当前的领导体制下还是可以大有作为的,也未必会对自己的政治前途产生多少不利影响。县委书记在中国算不上多大的领导,但最近几年却有两位县委书记的作为令人耳目一新:一位是陕西神木县的县委书记郭宝成,由他主导的神木县全民免费医疗和免费教育的改革造成了重大影响,此项改革据说由于担心上级领导不批准,未经请示就开展起来了。郭宝成后来尽管被免去了县委书记职务,但仍然平级调动到其他领导岗位,而此项使神木群众深受其惠的改革已很难被叫停;另一位是江苏睢宁县的县委书记王天琦,3年前,睢宁县各种社会矛盾交织,干群关系紧张。王天琦书记和睢宁县委义无反顾地走上了政改之路,他们通过严管干部,严管民风,使县委权力运行公开透明,支持民众对政府和权力进行监督。改革使“睢宁县初显政通人和,经济社会发展进入了快车道”(《中国青年报》语)。我没有看到睢宁的政改是得到了哪一级领导支持的报道,但也还没有听到王天琦被免职的消息。全国有2000多个县,能被人记住名字的县委书记恐怕没有几个,如果不是由于大胆的改革,神木、睢宁这样不太有名的地方又会有多少人知道。其实现在各级领导人面临的政治体制改革环境并不比当年搞经济体制改革时更困难,至少当年还动辄面临“姓社姓资”的严厉拷问,而政治体制改革已经成为全党全社会的共识,不仅政治领导人一贯强调,许多做实际工作的干部和广大人民群众更是有着迫切的愿望,但就是很少看到各级领导人拿出实际行动来。
什么事都要经过领导审核签字的要求只是一种表面的现象,但却反映出许多领导部门对下属、对干部的一种习惯要求。我作为一名老职员事事请示自然不会有任何影响,但如果各级领导都是这样要求下属,年青一代的干部还都是在这种循规蹈矩、亦步亦趋的环境下被教育出来的,也就很难培养出有主见、能担当、敢做敢为的各级领导干部。如同当年经济体制改革过程中造就了许多经济界的风云人物一样,在政治体制改革的过程中同样可能会涌现出许多新的政治明星。面对着日趋复杂的国内外形势,我们的各级领导干部如果是本着为国家、为社会、为人民群众负责任的态度,“不唯上,不唯书,只唯实”,敢于负责,锐意进取,中国的事情就会好办的多;如果北大的各级干部、师生也能够充分发挥自己的积极性、主动性、创造性,以主人翁的姿态投入到学校的改革发展建设中,北大的事情也就会好办的多。
(《北京大学校报》2010年12月25日四版)

Android Studio setting

$
0
0

1. open C:\Program Files\Android\Android Studio\bin\idea.properties and add disable.android.first.run=true to the end of file. Otherwise, Android Studio will have an error of “Fetching android sdk component information

2. Follow http://rominirani.com/2014/08/19/gradle-tutorial-part-6-android-studio-gradle/ to make gradle run offline.  http://rominirani.com/2014/07/28/gradle-tutorial-series-an-overview/

3. http://geek.moneylover.me/android-studio-eliminate-shutter-n-lag/

Eliminate Lags & Stutters in Android Studio

We love Android Studio because Android development has never been easier thanks to the Google-made IDE.

Nevertheless, it can be annoyingly slow at times. Especially after ver 1.0 was released, random lags occur more often than ever, to such an extent that typing a single line of code can make the whole program freeze several times.

Yes, damn you dear.

This sluggishness hindered our workflow a lot, so each of us set out to find ways to deal with it. Here are a few tricks we’ve come across:

  1. Increasing Android Studio’s Memory Heap:

    Android Studio, like other Java applications, is known for hogging an insane amount of memory while running. Unless enough memory is allocated to the IDE at launch, disk swapping will start kicking in and if you’re not using a SSD, God bless you.

    Open the file [AS Installation Folder]\studio64.exe.vmoptions or studio.exe.vmoptions, depending on which version you’re using.

    For Mac die-hard you can find the file at /Applications/Android Studio.app/Contents/bin/studio.vmoptions. Thanks Yonatan for pointing that out. :)

    In it you’re likely to find these two lines at the top:

    -Xms128m
    -Xmx750m
    

    Increase the two values to something reasonable, e.g. -Xms256 and -Xmx1024. You can boost the second value to 2048 if you like; my coworker whose computer has 8G of RAM doesn’t find any issue with -Xmx2048 either.

    After you’re done, restart AS and if you’ve checked Show memory indicatorin Settings/Appearance, you’ll see something like this at the bottom-right corner:

    Android Studio's Allocated Memory Heap

    In our case, this works like a charm. No more stutters while typing.

    Farewell, lags.

  2. Speeding up Gradle build time

    One of the reasons developers are still hesistant to ditch Eclipse is because of Gradle.

    Although it’s indeed a nice build system and there are many benefits to using it, even the simplest Gradle calls are pretty slow and time-consuming. As a consequence, our workflow includes a lot of unavoidable waiting, and sometimes we even forget what needs to be tested after AS finishes its laborious building processes.

    There are a few things we do to boost Gradle’s speed.

    First, go to Settings/Compiler and check everything, except for the 2nd option Make project automatically. For VM Options, we use these configurations:

    -Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
    

    Next, add the following lines to gradle.properties in your project directory:

    org.gradle.daemon=true
    org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
    org.gradle.parallel=true
    org.gradle.configureondemand=true
    

    Refer to this blog post for a detailed explanation for these settings.

  3. Accelerating the emulator with hardware virtualization

    Although the Android emulator is not part of Android Studio, it’s well worth mentioning that if you’re using one of the newer Intel CPUs which support hardware virtualization, the emulator can beamazingly fast. Check out this article for how to set it up on your machine.

That’s it folks, we hope you find these tricks helpful, and if you know about other methods to make Android Studio faster (even a little bit), please tell us!



A short guide to networking in Virtual Box with Oracle Linux inside.

$
0
0

A short guide to networking in Virtual Box with Oracle Linux inside.

15

This post is intended to be a dummy guide, best practices, or whatever you call it…   about setting up a network while working with virtual boxes on a desk- or laptop. I was setting up a virtual box environment with several Virtual Boxes on my laptop, and as I’m not a network – specialist, I came across a few annoying things, challenges if you like.  And when I was googling around, it appeared to be I’m not the only one, so I felt the urge to share some experiences.

What I want is the following environment and some elements smells like a subset of the real life:

1. Connect from my laptop to my virtual box through ssh and sqlplus, with fixed ip-address.

2. Simulate a private network, a network between the virtual boxes, also with fixed ip-addresses.

3. Occasionally connect to the internet from within the virtual boxes. To performs a ‘yum update’ and that kind of stuff.

In a picture it looks like this:

image

My laptop is a Windows-7 machine, the two virtual boxes are equipped with Oracle Linux 6.5 with Oracle database 12c on it.

For general understanding, needed later on in this post, my network configuration on my laptop, performing an ‘ipconfig’ on o.s.-level:

image

My ip-address is apparently 192.168.178.10, and through a wireless connection. The default gateway of 192.168.1 is my internet router.

More important for configuring the first connection: there’s also a virtual, host-only network with a ip-address of 192.168.56.1:

image

I’ll come back to this in the next chapter.

There will be an explanation per connection for the purpose of this post. In real life it’s much faster to configure the three networks all together at once.

1. Connection from the laptop to the Virtual Boxes.

To connect with the Virtual Boxes, I used the ‘Host-only’ network interface (Bridged is also possible, this will be explained later on).  When installing Virtual Box on a computer there’s already one default installed, and visible on your o.s., in this case the 192.168.56.1. This can be compared as  a loop-back interface. The configuration can be found on the Virtual Box Manager (not on a virtual box itself !). Choose ‘file’, ‘preferences’, ‘network’. Then the tab ‘host-only interfaces’. In my cases it looks like this (unfortunately my virtual box has been installed in Dutch language, sorry for that):

image

Double-clicking the last one, the default one without a number:

image

This interface has also been configured as a DHCP-server, clicking on the other tab:

image

But what I want is a fixed ip-address in another range (not necessary, but for the purpose of this post to point things out), e.g. 192.168.188.100. You can also use the default host-only interface.

For this post, we’ll add another one. Remember, my own ip-addres is 192.168.178.10.

For the purpose of this post, you will create a new host-only interface. I created a second one in the virtual box manager:

image

No DHCP-server:

image

You will see that a virtual network has been made on the guest-system. It shows like this:

image

Now I’m going to create a Virtual Box, named ‘rac1-ol6-121’. In the network configuration, Adapter 1, choose ‘host-only adapter’, and then the VirtualBox Host-Only Ethernet Adapter #2, like this:

image

Virtual Box has been created, now it’s time to install Linux on it, what I will not cover in this post. After Linux has been installed you’ll have to configure the interface ‘eth0’ in the following way.

Through the gui: ‘System’, ‘Preferences’, ‘Network connections’, edit ‘system eth0’, tab ‘Ipv4 Settings’:

image

Alternatively, you can accomplish the same on Linux OS commandline:

# cd /etc/sysconfig/network-scripts

# vi ifcfg-eth0

# service network restart

Should look like this:

image

Be sure that ONBOOT has been set on yes.

This should do the trick. While I was configuring the network on commandline I noticed that the GUI was not catching up with the updates I made. Be aware of that. It will be synchronised by rebooting the server, not yet figured out how to synchronise the GUI – network configuration with the updates I made on the commandline without rebooting.  When updating through the GUI, the ifcfg-eth0 will be modified correctly.

So now it should be possible to connect to your Virtual Box from your laptop or desktop, in my case through the fixed ip-address 192.168.188.100. This ip-address can be configured in my host-file on my windows machine to connect by a fixed name.

When you still got trouble connecting to your virtual box, be sure to look into iptables  and selinux.

For the purpose of this post, you could decide to stop iptables and disable selinux
service iptables stop
chkconfig iptables off
vi /etc/selinux/config : disabled (Needs a reboot)

 

2. Simulating a private network between Virtual Boxes.

To connect between virtual boxes and nothing more, is quite straight forward. Within the Virtual Box manager this is a separate adapter called ‘Internal Network’.

Before starting your Linux Virtual Box, configure your second adapter (the first was for host-only networking) like this:

image

The above picture has been taken while the VirtualBox was running, so that’s why the box ‘Switch on Network adapter’ has been greyed out.

I gave the network a name: ‘neta’ . The rest will be left default.

In Linux this adapter will be defined as ‘eth1’, and the ip-address I gave is ‘192.168.190.200. Gateway is not necessary.

Now I’ve got 192.168.187.xxxx as physical addres, 192.168.188.xxx as host-only (public interface?) and 192.168.190.xx as internal network.

image

On o.s.-level:

image

And when you create another Virtual Box with also an internal adapter in it (e.g. 192.168.190.210) with the name ‘neta’, they should see each other.

3. From Virtual Box to internet.

For the occasional connection to the internet, we’ll add another interface to the virtual boxes.

In Virtual Box there are two interfaces which can connect to the phyisical interface and thus are able to connect to the internet (and your desk- /laptop): NAT en Bridged.

Bridged: Uses an ip-address in the same range as your physical network, either fix or through dhcp. We’ll use fixed later on. This provides your virtual boxes with an interface as if they are directly connected to the internet, as your laptop/desktop.
NAT: Provides an ip-address in the 10.x.x.x range. This ip-address will be translated on your laptop.

See. https://www.virtualbox.org/manual/ch06.html for more information about VirtualBox networking

Bridged (using dhcp) and NAT has a quite annoying side-effect. I was working with DNS-resolving, and the NAT-interface had the habit to overwrite my settings in resolv.conf. I know there are ways to overcome this, but decided nevertheless to go for ‘bridged’….

Before starting your Linux Virtual Box, configure a Bridged adapter through your Virtual Box manager:

image

Important in this configuration: the name of the adapter is not just a name, but the physical interface: your –wired – network card, or your wifi. In this case my wifi (Centrino Advanced…).  Once I used my laptop on a wired network during the day, and tried to connect to internet through the Virtual Box  when I was at home, connected to my wifi. The name of this virtual adapter was changed to the wired adapter, so I had to close the virtual box, reconfigure it to the ‘Centrino Advanced’- wifi, and it worked again…. Bit annoying.

Within Linux the adapter is the equivalent of eth2 (the third adapter configured in Virtual Box):

image

Ip-address should be in the range of your LAN or home network (In my case 192.168.178.xxx). Gateway is my router at home.

For DNS I filled in the google DNS Server addresses. Should not be necessary I think, but I messed up my home DNS a bit, and now I am a bit more confident DNS works (at least for internet stuff).

On Linx commandline:

image

Doing a ping to google.nl:

image

A nslookup:

image

As DNS it’s using 8.8.8.8, so I messed up my DNS server (as well he was down at that moment Smile ) using DNS from the outside world. Working though now…

Note: It’s just as secure as your laptop connection to the internet, so be careful with a bridged connection. You can leave it default off (ONBOOT=no in ifcfg-eth2), and switch it on when needed.

Sources

Virtual box documentation: https://www.virtualbox.org/manual/ch06.html

Ed Stevens, configure the Virtual Box network: http://edstevensdba.wordpress.com/2012/12/15/configure-the-virtualbox-network-2/


Improving the Performance of your Meteor JS projects

$
0
0

Improving the Performance of your Meteor JS projects

So you found Meteor, learned it in a day and started your next million dollar idea … only to find your new masterpiece is slow as all get out. What happened? Well, the reactive nature of the framework needs to be used wisely. (You don’t see Luke Skywalker using the force everywhere he goes do you? The force is cool, but he still does a few things the traditional way.)

Overuse of Sessions

When I first started exploring Meteor JS with the perspective of a PHP developer, I immediately applied my traditional thinking to Meteor’s session: that they are a place to store data over time. Well kind of…

Understanding Meteor JS Sessions

Meteor’s session doesn’t stick after a user initiates a browser refresh. In PHP, you’d expect the session information to persist a browser refresh, so right off the bat, Meteor’s sessions are working differently from PHP.

Instead, the purpose of Meteor’s session is to provide reactivity across your application and to keep your application’s state when the server initiates a refresh (when server code changes, CSS is updated, etc). See http://docs.meteor.com/#session for all of the details.

Meteor JS Sessions: You’re Doing it Wrong

I noticed developers using sessions as global variables when they couldn’t find the value they were looking for in a given context. A common example was trying to pass IDs of documents in Mongo around the application so it was easily accessed in multiple functions scattered about the app.

You should only be using a session variable when you need to set up some reactivity on it. Ask yourself, “When I set this session variable, do I need something else in the app to change?” If not, there is probably a better way to solve your problem.

Don’t forget about normal Javascript variables. These work just like they always did and using these normal variables often work perfectly instead of a session variable when reactivity is not needed. Don’t forget about the basics.

Fine tune your Meteor collection.find() queries to get only the data you need

I shouldn’t even need to write this section, because we’ve all been doing this with relational databases as well, right? We’d never do something like “SELECT * FROM …” riiiiight??

Make sure not to ask for more data than you need; it’s even more important in Meteor! Let’s pretend we have a Collection that stores documents about employees in a company. Of course you’ll have an employee_id, a first name, a last name, and so on. In Meteor, you might use this somewhere in a helper function like this:

1
var employees = Employees.find().fetch();

There is nothing wrong with this in itself, but what if for the work I need to do, I only need a list of employee ids, not all the other meta data, like name, address, etc? Well, in Meteor this is pretty important. If any code elsewhere in your app updates the name of an employee, even though you don’t care (in this specific case), the reactive template that uses Employees.find().fetch() will retrigger anyway, the DOM will be updated with the same HTML that was there before. How useless and damaging to your application’s performance!

What if you instead asked for only what you need?

1
var employee_ids = Employees.find({}, {fields: {_id: 1}}).fetch();

This says, “Please give me only the IDs of all the employees in the Employees Collection.” In contrast to the first query above, this will return only the data we need, something like [{_id: 3345}, {_id: 3567}, {_id: 125}, {_id: 9876}], a list of documents containing only the employee ids.

If other data in the employee collection is updated, like Name, it won’t cause your fine tuned query to rerun because if never looked at Name, saving browser cpu cycles.

Making your queries non-reactive

When you using your Collections, think about how that data is going to be used. If you can determine that you never need to update the DOM or HTML if the document(s) change, then you can tell Meteor not to make the query reactive. Then if data in the return documents changes, it won’t cause your template to rebuild.

It’ll take a little experience to get comfortable making this choice, but if you just keep asking yourself, “Does this find() need to rebuild a template if data changes?,” over time you’ll start to see places where you can turn off the reactivity without compromising your app.

To make a query non reactive, simply pass { reactive: false } as an option.

1
var employees = Employees.find({}, {reactive: false}).fetch();

Breaking down your templates

Try to make your templates as small as possible. Meteor restricts reactivity to as small a space as it can. If you have large templates with complicated nested loops, it’s possible small data changes can force large templates to rebuild.

Using {#isolate} for larger templates

If you do find yourself in a situation where you do have a large template, you can break it up using the {#isolate} tag. Meteor will attempt to isolate the changes to only that area so that the entire template is not reprocessed. See: http://docs.meteor.com/#isolate

Tips for Debugging Meteor JS:

Which templates are being reprocessed?

“Arg?! Where do I even start; I don’t even know what is being regenerated!”

I’ve had this same issue time and time again. I started going into the code and adding console.log() statements (all over the place). Needless to say, that was painful!

Eventually I got smart and made a post on Stack Overflow – http://stackoverflow.com/questions/15422456/detecting-which-reactive-query-was-triggered, luckily cmather had some insightful help. If you include the following code in your client code, and execute the function logRenders() *AFTER* all the other client code has been processed, you’ll get a nice view of which templates are called, in what order, and how many times.

1
2
3
4
5
6
7
8
9
10
11
function logRenders () {
    _.each(Template, function (template, name) {
      var oldRender = template.rendered;
      var counter = 0;
      template.rendered = function () {
        console.log(name, "render count: ", ++counter);
        oldRender && oldRender.apply(this, arguments);
      };
    });
  }

You’ll probably notice that if your application is experiencing problems, the same templates are being called over and over, and/or templates that shouldn’t be triggered at all are being retriggered. If your application updates the DOM and HTML needlessly, it slows down your app.

Tracking a specific Collection.find(), and when it reruns.

If you have a specific find() on a Collection that is giving you issue, take a look at http://docs.meteor.com/#observe or http://docs.meteor.com/#observe_changes. These two functions allow you to create a callback on the find() statement so you can see exactly when it’s retriggered. The callback will provide you the original object, the changed object, and even a diff of the object. This will let you track what is making a particular collection.find() to reprocess.

Here is some code that will add observe changes to all your find statements to help track which collection is causing a reactive change, also taken from http://stackoverflow.com/questions/15422456/detecting-which-reactive-query-was-triggered:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var wrappedFind = Meteor.Collection.prototype.find;
Meteor.Collection.prototype.find = function () {
  var cursor = wrappedFind.apply(this, arguments);
  var collectionName = this._name;
  cursor.observeChanges({
    added: function (id, fields) {
      console.log(collectionName, 'added', id, fields);
    },
    changed: function (id, fields) {
      console.log(collectionName, 'changed', id, fields);
    },
    movedBefore: function (id, before) {
      console.log(collectionName, 'movedBefore', id, before);
    },
    removed: function (id) {
      console.log(collectionName, 'removed', id);
    }
  });
  return cursor;
};

Final sanity check

When I first started noticing performance problems in Meteor JS, it was hard to get going. I wouldn’t see a lot on the page changing, but everything was still very slow. So intuitively I figured the DOM and HTML was being updated in places it shouldn’t be, and updating it to what was there before: pointless. So I took a an odd approach for lack of a better one: I opened the DOM inspector in the browser, and updated the DOM manually through the browser. I then went to my app, and made a change that shouldn’t effect the manually updated HTML I made in the browser. If my manual update gets reverted, I know I have some code that is overreaching its targeted area. If the manual change persists, it means your code is at least not updating the area you changed, which is a good start.
(Anyone with a better idea, comments very much welcome!)

If you have an idea, please let me know!


react-native 与 react-web 的融合 #20

$
0
0

react-native 与 react-web 的融合

https://github.com/tmallfe/tmallfe.github.io/issues/20

2015-04-27 09:08 编辑: suiling 分类:WebApp 来源:tmallfe
0 24

关于

对于react-native在实际中的应用, facebook官方的说法是react-native是为多平台提供共同的开发方式,而不是说一份代码,多处使用。 然后一份代码能够多处使用还是很有意义的,我所了解到的已经在尝试做这件事情的:

现阶段大家都是在摸索中,且react-native 还不够成熟,为此我也想通过一个实际的例子提前探究一下共享代码的可行性。

下面是我以SampleApp做的一个简单demo, 先奉献上截图:

web 版本

1.jpg

react-native版本

2.jpg

初步想法

组件

react-native基本上是View套上Text这样来布局,为了做web和native的兼容,我们得提供继承版本的View ,针对不同的平台返回不同做兼容,我们将提供:

  1. Share.View -> View (reac-native = View , web = div)
  2. Share.P + Share.Span -> Text (Text在react-native中分为块级别和inline级别所以得用两个元素来区分)

样式

我们知道react-native的样式是css很小的一个子集,大概支持50种属性,为了做到web和native使用同样地样式,那么我的想法是:

  1. 使用css文件来编写样式,通过编译的方式生产不同平台需要的样式
  2. 对于web,使用auto-prefixel处理,生产web兼容的css代码
  3. 对于react-native,生成对应的styles.js
  4. css的写法用OOCSS的方式

这样做的另外一个原因是,因为css是全集,react-native是子集,全集到子集可以通过删减来处理,但是如果想通过子集到全集就会很麻烦(react-style就是通过react-native来生成css)。 且这样做还有很多好处,例如我们可以支持react-native里边不支持的css写法,例如padding: a b c d; 这种写法很容易得到兼容。

其实这里,无论react-native还是react-web都支持style={}这样的写法. 上面例子中的web截图其实是没有引用css的,但inline样式对于web来说并不是优选。 后面也做了通过react-native的css到web的css的尝试, 那种方案在样式上可以完全基于react-native来写,直接兼容web。

实现思路

首先大概整理一下我们需要解决的问题:

  1. 如何区分web和native
  2. js如何对应不同的平台来编译,因为react-native使用的是自己的依赖管理packager
  3. css如何编译为js
  4. 代码结构应该是怎样的

问题一: 如何区分web和native

react-native 里边会有window变量吗?我试了一下,是有的,那window变量里边不可能有location,document之类的吧, 借着这种想法,可用如下方法来区分native和web

1
 var isNative = !window.location;

问题二:如何对应不同平台打包

对于react-native,是通过packager来打包的,具体的实现和逻辑可以随时查看packager的readme文档。 那我们怎么将适用于native的代码打包成web的代码,首先想到的是browserify, webpack。 都是遵循commonJs规范,个人更喜欢前者, 用它来应该足以满足需求。

问题三: css如何编译为js

前面提到了native-css , 可以用它来帮助我们完成打包。

问题四:代码结构应该是怎样的

web和native的代码都写在同一个地方,如何做区分呢? 这个问题当然最好就是不做区分,或者就像女生的衣服,期望是越少越好,但永远不可能木有(猥琐了:-】)。

我设想中的一个最简模型的目录结构,web和ios有不同的入口,web和ios有单独的目录, 组件共享, 如下:

1
2
3
4
5
6
7
8
9
10
├── compo.js            // 我们会使用到得公共组件
├── styles.css          // compo的样式文件
├── index.web.js        // web 入口
├── index.ios.js        // ios 入口
├── shared.js           // 做兼容的共享变量文件
├── ios                 // ios 目录
└── web                 // web 目录
    ├── index.html      // web 页面
    ├── index.web.js    // 打包过后的js
    └── react.js        // react.js依赖

好像很复杂的样子, 其实相对于原本的SampleApp,只是多了index.web.js , web目录, shared三者。 然后style通过style.css来描述。

具体实现

我们已经整理了具体的实现思路,下面是我就会直接吐出我的实现代码, 重点的地方都会在源码里边有注释

先看应用代码:

iOS入口:index.ios.js

1
2
3
4
5
6
7
8
    /**
     * Sample React Native App
     */
    'use strict';
    var React = require('react-native');
    var Compo = require('./compo');
    React.AppRegistry.registerComponent('ShareCodeProject', () =>  Compo);

web入口:index.web.js

1
2
3
4
5
    /**
     * for web
     */
    var Compo = require('./compo');
    React.render(, document.getElementById('App'));

样例组件:compo.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    // 依赖的公共库,通过它获取兼容的组件
    var Share = require('./shared');
    // styles是style.css build过后生成的style.js
    var styles = require('./styles');
    var React = Share.React;
    var {
      View,
      P,
      Span
    } = Share;
    var Compo = React.createClass({
      render: function() {
        return (
         
           
              Welcome to React Native!
           
           
              To get started, edit index.ios.js
           
           
              Press Cmd+R to reload,{'\n'}
              Cmd+Control+Z for dev menu
           
         
        );
      }
    });
    module.exports = Compo;

组件样式: style.css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    /**
     * 大家可能发现了css的写法还是小驼峰,是的不是横杠,暂时我们还是以这种方式处理
     * native-css 目测不支持横杠,(自己重写native-css相对来说是比较容易的,完全可以做到css兼容到react-native的css子集)
     */
    .container {
        flex: 1;
        justifyContent: center;
        alignItems: center;
        backgroundColor: #F5FCFF;
    }
    .welcome {
        fontSize: 20;
        textAlign: center;
        margin: 10;
    }
    .instructions {
        textAlign: center;
        color: #333333;
        marginBottom: 5;
    }

index.html
blob.png

Share部分的处理

shared.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
    var Share = {};
    var React = require('react-native');
    var isNative = !window.location;
    /**
     * 判断是web的时候,重新赋值React
     */
    if (window.React) {
        React = window.React;
    
    Share.React = React;
    /**
     * 做底层的兼容, 当然这里只是做了一个最简demo,具体实现的时候可能会对props做各种兼容处理
     */
    if (!isNative) {
        Share.View = React.createClass({
            render: function() {
                return
            }
        });
        Share.P = React.createClass({
            render: function() {
                return
            }
        });
        Share.Span = React.createClass({
            render: function() {
                return
            }
        });
    else {
        // alert('isNative')
        Share.View = React.View;
        Share.P = React.Text;
        Share.Span = React.Text;
        Share.Text = React.Text;
    }
    module.exports = Share;

build打包程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
    var fs = require('fs');
    var nativeCSS = require('native-css'),
    var cssObject = nativeCSS.convert('./styles.css');
    toStyleJs(cssObject, './styles.js');
    buildWebReact();
    /**
     * native-css获取到得是一个对象,需要将cssObject转化为js代码
     */
    function toStyleJs(cssObject, name) {
        console.log('build styles.js \n');
        var tab = '    ';
        var str = '';
        str += '/* build header */\n';
        str += 'var styles = {\n';
        for(var key in cssObject) {
            var rules = cssObject[key];
            str += tab + key + ': {\n';
            for(var attr in rules) {
                var rule = rules[attr];
                str += tab + tab + attr + ': ' + format(rule) + ',\n'
            }
            str += tab + '},\n'
        }
        str += '};\n'
        str += 'module.exports = styles;\n'
        fs.writeFile(name, str)
        function format(rule) {
            if (!isNaN(rule - 0)) {
                return rule;
            }
            return '"' + rule + '"';
        }
    }
    /**
     * 构造web使用的react
     */
    function buildWebReact() {
        console.log('build web bundle');
        var browserify = require('browserify');
        var b = browserify();
        b.add('./index.web.js');
        // 添加es6支持
        b.transform('reactify', {'es6'true});
        // ignore掉react-native 
        b.ignore('react-native')
        var wstream = fs.createWriteStream('./web/index.web.js');
        b.bundle().pipe(wstream);
    }

也尝试一下由react-native 到react-web的兼容方案

问题

  1. flexbox的写法在react-native上面我们会发现, 不用在父元素上声明display: flex; 在web上必须要做这样的声明, 所以我们需要让设置了flex:*的元素的父元素display: flex; 。
  2. flexbox在android上是由很多bug的,所以必须要解决兼容性问题webkit-box

解决方案

1. nested 的style写法

1
2
3
4
5
6
7
8
    styles = StyleSheet.create({
        mod: {
            flexDirection: 'row',
            item: {
                flex: 1
            }
        }
    });

这样的写法有些像less,我们可以知道元素的层级关系, 这样我可以遍历这个对象,查找子元素有设置flex的,父元素加上display:flexbox。

2. 通过自定义元素
blob.png
通过标签的方式, 相当于给react-native或者react添加了一个网格系统,同时我们可以直接在Row上设置display:flex.

3. 遍历查找

完全同react-native原生的写法,直接在web中兼容,遍历所有有flex样式的节点,直接做兼容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
    componentDidMount: function() {
        var $node = this.getDOMNode();
        var $parent = $node.parentNode;
        var $docfrag = document.createDocumentFragment();
        $docfrag.appendChild($node);
        var treeWalker = document.createTreeWalker($node, NodeFilter.SHOW_ELEMENT, { 
            acceptNode: function(node) { 
                return NodeFilter.FILTER_ACCEPT; 
            
        }, false);
        while(treeWalker.nextNode()) {
            var node = treeWalker.currentNode;
            if (node.style.flex) {
                flexChild(node);
                flexParent(node.parentNode);
            }
        };
        $parent.appendChild($docfrag);
    }
    function flexChild(node) {
        if (node.__flexchild__) {
            return;
        }
        node.__flexchild__ = true;
        var flexGrow = node.style.flexGrow;
        addStyle(node, `
            -webkit-box-flex: ${flexGrow};
            -webkit-flex: ${flexGrow};
            -ms-flex: ${flexGrow};
            flex: ${flexGrow};
        `);
        node.classList.add('mui-flex-cell');
    }
    function flexParent(node) {
        if (node.__flexparentd__) {
            return;
        }
        node.__flexparentd__ = true;
        node.classList.add('mui-flex');
    }
    .mui-flex {
        display: -webkit-box!important;
        display: -webkit-flex!important;
        display: -ms-flexbox!important;
        display: flex!important;
        -webkit-flex-wrap: wrap;
        -ms-flex-wrap: wrap;
        flex-wrap: wrap;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
        -webkit-flex-direction: column;
        -ms-flex-direction: column;
        flex-direction: column;
    }
1
2
3
4
5
6
7
8
    .mui-flex-cell {
        -webkit-flex-basis: 0;
        -ms-flex-preferred-size: 0;
        flex-basis: 0;
        max-width: 100%;
        display: block;
        position: relative;
    }

总结

这个demo很简单,实际应用中应该会有很多地方的坑, 比如:

  1. 模块中依赖只有native才有的组件
  2. Native模块的事件处理和web大不相同
  3. 现实环境中的模块更多,更复杂,如何做模块的管理

对于write once, run anywhere 这个观点. 相信不同的人会有不同的看法,但无论如何,如果兼容成本不大,这样的兼容技术方案对业务开发是有极大意义的。

ps0: 这里仅仅做可行性方案的分析,不代表我认同或不认同这种方案。

ps1: 大家如果有更好的方案,求教,求讨论。


Best Learning Resources for Meteor.js

$
0
0

Best Learning Resources for Meteor.js

Meteor.js is an open-source platform built on node.js for rapidly creating reactive web and mobile apps. It is designed to allow programmers to create applications in a modern fashion, using up-to-date paradigms, most importantly reactive programming. Meteor became v1.0 on October 28th, 2014.

Together with Manuel I am the author of the Manning book Meteor in Action. It’s for everyone coming from traditional server languages like Ruby, PHP, or Java and even front-end engineers looking to cover the full stack. All you need are JavaScript fundamentals and HTML/CSS basics. Click here to get your own copy of Meteor in Action.

Why Meteor?

JavaScript

First, you need to know JavaScript, obviously. Not any frontend library like jQuery or MooTools, but the actual language (of course it doesn’t hurt to know a bit or two about libraries, esp. jQuery).

General Meteor Resources

Once you know JavaScript basics you can dive into Meteor. Since the aim of Meteor.js is to radically simplify app development, you will very quickly be able to see good results.

Tutorials

Code Examples

Sometimes it is best to study some existing sources to become more familiar with coding conventions, patterns, styles, and what not. Here are some interesting repositories you can learn from and -who knows? – possibly even contribute to.

Testing and Debugging

Ready for Production

Once the coding is done and your app is tested, you want to go live. For that the following may be interesting:

Keep up to date

Books

The internet is great for up-to-date information, but sometimes a book (on paper or electronic) provides better structure and didactic concept, so that you may wish to use one in the beginning to make the most of your learning experience.

Built with Meteor

Especially if you’re just beginning your programming career the most convincing aspect to learn Meteor might be to showcase some of the applications using Meteor behind the scenes.

  • Assistant.io – The Easiest Way to Schedule Meetings
  • Illustreets – England’s best places to live
  • MathFights – Test Your Math Skills In Real-Time Battles
  • Pantheon by MIT – Mapping Historical Cultural Production
  • Pintask – Task tracker with Kanban board, free for life + Custom extensions
  • RalphChat – Web-based and iOS/Android Chat
  • Reaction – Change the way you think about commerce
  • Repeeet – making tweet repeating super simple
  • Sonic Agile – A free agile Project Management tool that includes a real-time Backlog, Kanban, and Burndown Charts
  • TangoEdit – Collaborative, cloud-based video editing
  • Verso – The future of classrooms powered by Meteor & Phonegap
  • Workpop was funded with almost $8 million dollars and is a job marketplace for hourly workers.

Know more? Did I miss some interesting resource?

Do you know any other resources that you find useful in getting productive with the Meteor framework? Let me know via Twitter or Email and I will add them here. If you care for a much more verbose list of resources I suggest you head on over and contribute to Eric’s list of Meteor Learning Resources on Github.


Meteor-Learning

$
0
0

https://github.com/ericdouglas/Meteor-Learning

List of resources to learning this amazing platform for building top-quality web apps with JavaScript! ❤

Meteor’s site

Table of Contents

This list was inspired by this and this!

How to Collaborate

Send a pull request or just open an issue to send more useful links! After it, I’ll update the list!

Articles & Tutorials

  1. Meteor.js – The Perfect Match For Lean Startups
  2. Why web beginners should start with Meteor
  3. Learn Meteor Fundamentals and Best Practices
  4. Meteor’s official examples
  5. Meteor 1.0 Tutorial – Build an app from scratch
  6. Introduction to Realtime Web with Meteor and Node.js
  7. Building a customized accounts ui for Meteor
  8. Using d3 and Meteor to generate scalable vector graphics (SVG)
  9. Using Meteor’s Rendered Callback
  10. Meteor’s Reactive Data Sources
  11. Entering the Atmosphere with Meteor.js
  12. Meteor.js Iron Router Filters, Before and After Hooks
  13. Why Is My Meteor App Not Updating Reactively?
  14. LIVEBUS: THEBUS VIS WITH METEOR AND D3
  15. Meteor is F***ing Awesome
  16. The Wonderful Duo — Using Meteor and AngularJS Together
  17. Why Meteor will kill Ruby on Rails
  18. How Meteor.js Made Me a God
  19. Building an MVP – Crowducate.me
  20. METEOR #9: INTERNATIONALIZATION. (I18N)
  21. Introduction to DDP
  22. Writing your first Meteor application
  23. Building an RSS Reader With Meteor
  24. Design a Complete Authentication System with Meteor
  25. Meteor.js in Action: Create an App, Test With Laika
  26. What’s This Meteor Thing?
  27. Meteor for Front-End Engineers
  28. Confessions of a Meteor Newb
  29. 9 ways that Meteor JS raises expectations
  30. Building An App In 45 Minutes With Meteor
  31. Add routing to Meteor JS
  32. Meteor and SEO
  33. 5 Meteor Misconceptions
  34. Why the future of the web is real-time (6 months w/ Meteor)
  35. Instant web applications with Meteor
  36. So, I’m Learning Meteor.js
  37. Learning Meteor, Part 2
  38. Going all in with Meteor.JS
  39. Iron Router: First Steps
  40. Set Up Navigation With Iron Router and Bootstrap
  41. The (not so) real problems of meteor.js
  42. Getting Started with Databases in Meteor: A Complete Beginner’s Guide to MongoDB
  43. I’ve Hitched My Wagon to Meteor
  44. Learn Meteor.js Properly
  45. Everything You Need To Know About Async & Meteor
  46. Bullet-proof Meteor applications with Velocity, Unit Testing, Integration Testing and Jasmine

Books

  1. Discover Meteor
  2. Getting Started with Meteor.js JavaScript Framework
  3. Meteor in Action
  4. Instant Meteor JavaScript Framework Starter
  5. The Meteor Testing Manual
  6. Meteor Cookbook
  7. Building Single-page Web Apps with Meteor
  8. Your First Meteor Application
  9. Meteoric Projects
  10. Meteor Tutorial
  11. Pro Meteor: Meteor Internals, Scaling & More

Books in Other Languages

  1. Discover Meteor – Multilingual
  2. pt-br | Meteor: Criando aplicações web real-time com JavaScript

Built with Meteor

  1. Made With – a list of applications built with meteor
  2. antichess – a chess variant in which the objective of each player is to lose all of his pieces
  3. Assistant.io – The Easiest Way to Schedule Meetings
  4. Cleanio – Laundry and dry cleaning on demand
  5. CodersTV – Watch programming videos or broadcast your coder skills with the world
  6. EtherPOS – Retail point of sale system.
  7. Hast – an on-the-fly presentation for everyone
  8. Illustreets – England’s best places to live
  9. Liquid – Collect, share, and analyze data
  10. MathFights – Test Your Math Skills In Real-Time Battles
  11. Meeting Hero – Realtime collaborative meeting agenda and minutes, connects to your Google Calendar.
  12. MixMax – Apps for Gmail
  13. Mmmelon – Collaborative project and document management
  14. Movienr – social way of discovering movies while engaging with fellow movie addicts
  15. Pantheon by MIT – Mapping Historical Cultural Production
  16. Pintask – Task tracker with Kanban board, free for life + Custom extensions
  17. RalphChat – Web-based and iOS/Android Chat
  18. Reaction – Change the way you think about commerce
  19. Respondly – Team Inbox for Email & Twitter
  20. Sedimently – Knowledge base for startups without wikicomplications
  21. Sonic Agile – A free agile Project Management tool that includes a real-time Backlog, Kanban, and Burndown Charts
  22. TangoEdit – Collaborative, cloud-based video editing
  23. Teamput – Simple and uniquely effective sticky-note app that gives every team member a voice in idea generation.
  24. Telescope – a social news platform
  25. Verso – The future of classrooms powered by Meteor & Phonegap
  26. Writ – A Markdown app for mere mortals

Community

  1. Meteor Forum
  2. IRC Channel on freenode
  3. Meteor on Twitter
  4. Learn Meteor Properly – Facebook Group

Courses

  1. Single Page Web Apps with Meteor
  2. Meteor.js Fundamentals for Single Page Applications
  3. Build a Multi-Player Card Game With Meteor
  4. BulletProof Meteor – Build fast and efficient Meteor app
  5. Meteor For Everyone

Learn with Code

  1. BrowPie – shows visitor stats as Browser charts
  2. crowducate.me – an open education platform
  3. Hast – an on-the-fly presentation for everyone
  4. Meteor source code!
  5. Meteor URL Shortener – Open-source URL shortening app with several good practices in place
  6. meteor-boilerplate
  7. Reaction – full e-commerce solution
  8. Repeeet – making repet tweeting super simple
  9. Telescope – a hacker-news clone built entirely on Meteor
  10. Weworkmeteor – a Meteor Job Board and Expert Directory

News

  1. Meteor Weekly
  2. Crater.io – Meteor News
  3. MeteorHacks

Podcasts

  1. The Meteor Podcast

Screencasts

  1. Diving into Meteor.JS
  2. Evented Mind
  3. How to Debug a Meteor.js Application
  4. Lunch and Hack
  5. Meteor – Chat Room Tutorial
  6. Meteor 101
  7. Meteor Learning or here
  8. Meteor’s site Screencast

Slides

  1. Intro to Meteor
  2. Meteor before impact!
  3. Getting Started with MeteorJS
  4. Code Dojo 23: Meteor Hack
  5. From Meteor To Maker
  6. Meteor – A better way to build apps
  7. Meteor – like Django, had it been written today
  8. Meteor
  9. Real-Time Web Apps Using MongoDB and Meteor

Talks

  1. Meteor Youtube Channel
  2. Emily Stark: Meteor – A Full Stack Framework For Building Pure JavaScript Apps – JSConf.Asia 2013
  3. MongoDB in the Browser and Realtime Application Design with Meteor.js
  4. Meteor.js with Matt Debergalis
  5. MeteorJS Tutorial – part 1part 2part 3
  6. Creating a Blog with Meteor.js – part 1
  7. Radically faster web development — Meteor after one year
  8. meteor.js by Roger Zurawicki
  9. SFJS #23: Functional Programming and Meteor.js
  10. TakeOff 2013 – Meteor.JS – Geoff Schmidt

More Useful Links

  1. Best Learning Resources for Meteor.js
  2. The Mission of Meteor
  3. Meteor’s new $11.2 million development budget
  4. The Reactive Manifesto
  5. Meteor’s Documentation
  6. Unofficial Meteor FAQ
  7. Meteorite – a Meteor version manager and package manager
  8. Atmosphere – Explore Meteor Packages
  9. Meteor on StackOverflow
  10. Top Resources for learning MeteorJS – Hackpad
  11. Meteor security resources
  12. meteor-phonegap
  13. MongoDB Manual
  14. Meteor Cookbook
  15. Meteor CheatSheet
  16. We Work Meteor – job board and community space for users of the Meteor
  17. Meteor Jobs
  18. METEOR #4: BEST RESSOURCES TO BECOME A MASTER
  19. Discovering Meteor Blog
  20. Meteor Resources: Learning and Everyday
  21. Laika – testing framework for Meteor
  22. RTD – The Meteor Test Runner
  23. Useful Meteor Resources
  24. Kadira : Meteor Performance Monitoring Service

Viewing all 764 articles
Browse latest View live