星期一, 十二月 29, 2008

The aphorisms on the wall of the study room of the library in Harvard University

The aphorisms on the wall of the study room of the library in Harvard University

哈佛图书馆自习室墙上的训言

1. This moment will nap, you will have a dream; But this moment study, you will interpret a dream.

此刻打盹,你将做梦;而此刻学习,你将圆梦。 

2. I leave uncultivated today, was precisely yesterday perishes tomorrow which person of the body implored.

我荒废的今日,正是昨日殒身之人祈求的明日。 

3. Thought is already is late, exactly is the earliest time.

觉得为时已晚的时候,恰恰是最早的时候。

4. Not matter of the today will drag tomorrow.

勿将今日之事拖到明日。 

5. Time the study pain is temporary, has not learned the pain is life-long.

学习时的苦痛是暂时的,未学到的痛苦是终生的。 

6. Studies this matter, lacks the time, but is lacks diligently.

学习这件事,不是缺乏时间,而是缺乏努力。 

7. Perhaps happiness does not arrange the position, but succeeds must arrange the position.

幸福或许不排名次,但成功必排名次。 

8. The study certainly is not the life complete. But, since continually life part of - studies also is unable to conquer, what but also can make?

学习并不是人生的全部。但,既然连人生的一部分——学习也无法征服,还能做什么呢? 

9. Please enjoy the pain which is unable to avoid.

请享受无法回避的痛苦。 

10. Only has compared to the others early, diligently diligently, can feel the successful taste.

只有比别人更早、更勤奋地努力,才能尝到成功的滋味。 

11. Nobody can casually succeed, it comes from the thorough self-control and the will.

谁也不能随随便便成功,它来自彻底的自我管理和毅力。 

12. The time is passing.

时间在流逝。 

13. Now drips the saliva, will become tomorrow the tear.

现在淌的哈喇子,将成为明天的眼泪。 

14. The dog equally study, the gentleman equally plays.

狗一样地学,绅士一样地玩。 

15. Today does not walk, will have to run tomorrow.

今天不走,明天要跑。 

16. The investment future person will be, will be loyal to the reality person.

投资未来的人是忠于现实的人。 

17. The education level represents the income.

教育程度代表收入。 

18. One day, has not been able again to come.

一天过完,不会再来。 

19. Even if the present, the match does not stop changes the page.

即使现在,对手也不停地翻动书页。 

20. Has not been difficult, then does not have attains.

没有艰辛,便无所获。

星期三, 十二月 24, 2008

[转贴]谌洪果:范美忠事件点评:那一刻我真他妈高尚

2008-7-6
谌洪果:范美忠事件点评:那一刻我真他妈高尚
1、范美忠的言说有特殊的背景,脱离其背景而妄评或指责,都会批错地方。有人动辄拿美国或日本的教师伦理说事,认为范美忠的行为若在这些国家,是一定要被剥夺教师资格甚至受到法律追究的。我认为这根本就不是理由。美国或日本的教师职业伦理的确规定了教师在紧急灾难面前有保护救助学生的义务,但这是在教师从事这门职业之前就言之凿凿写好了的,每一个细节,包括如何引导救助学生的路线,都不仅有具体的指导细则,而且还要进行经常性的专门训练,这是取得其教师资格的前提。更何况,即使这些国家规定了教师保护学生的伦理,但也都没有要求教师牺牲自己的生命救助学生,其细致入微的规定恰好是要把生命而不是牺牲作为最高价值。由此得出的结论是,范美忠如果在美国或日本从事教师职业,那么他在地震时根本就不会逃跑。他跑是因为他在中国。这反过来说明,中国的教师资格考试和职业伦理训练完全是空话和侮辱,不过是教育主管部门的又一次揽钱而已。这一点在更深层次证明,在中国,往往是有责任的没有权利;而有权力者却无需承担责任,比如教育部。

2、范美忠言说的第二个特殊背景是,这次地震是共和国史无前例的猝然不及的大灾难。人类苦心经营的文明和理性在巨大的自然灾难面前是无比脆弱的。在“一虎一席谈”的节目里有两位人士高调地说在地震来临时他们绝对能做到最后离开教室,对此我是持怀疑态度的。我在课堂上和几个场合都作过一个小小的试验:请那些宣称能够成为谭千秋的同学或同事站到我的身边,然后我突然大吼一声或猛地做出要打他们的动作,结果十之八九的人都惊吓一跳,瞬间躲开。所以我对他们说,你们连我这一吓都经受不了,难道还能保证在那种大地震面前坐怀不乱?所以我完全相信范美忠所言当时头脑是“一片空白”,既然空白一片,又哪能想得到要喊一声学生快走?还有人说范美忠的这种逃跑本能不是人性而是动物性。我不得不说,在很多时候,人们要是能具备起码的动物性就谢天谢地很不错了,人类的野心、残忍和虚伪又哪是动物能比得了的呢?所以,我们并不比范美忠更崇高,他也并不比我们更无耻。

3、范美忠言说的第三个特殊背景是,他试图通过这一事件来挑战中国几千年来的道德绑架及伪善传统。他并不否认在巨大灾难面前人们的真诚悲怆,也肯定救助过程中的各种英雄行为以及社会动员。但他坚决反对那种对牺牲道德的宣扬,反对无聊的歌功颂德和无耻的胜利者姿态。我们本就为生命的失去而悲伤,为什么反过来又要弘扬牺牲?我们因为人性的美好而感动,但又何必为了感动而把灾民的伤痛弄成舞台上的表演(像CCTV的一贯做法一样)?我们当然要拥有一颗“感恩的心”,但这与感激政府又有什么关系?如果抗震救灾不是政府份内的事情,那我们还需要政府干什么?因此,片面地弘扬道德恰好是对对人性复苏的巨大扭曲,更是遮蔽了背后必须履行和追究的制度责任,比如贪腐和豆腐渣。如果我们真是一个“多难兴邦”的国度,那就根本不应该让各种灾难尤其是人为的灾难重复上演,毕竟是“吃一堑长一智”啊。所以,范美忠反对的是感动的道德背后所隐藏着的非道德或者无德,正如他解释的那样,“一个成熟的民族应该趁这个机会反思历史,反思每一次灾难,让有些灾难不再发生。”

4、所以,大家对范美忠的批判,说到底还是因为他提供了另一种道德判断标准,并从反面表明没有哪一种道德是天经地义不可置疑的。我们长期以来生活在一种泛道德化的氛围里,包括“八荣八耻”那样的东西。而这种臆想的道德感因为范美忠的出现而遭受了颠覆。我相信批判范美忠的人大部分都无法成为他们向往的道德楷模,但也正因如此,他们才要借助批范来确立自我的道德安慰甚至道德优势。范美忠对主流道德的玩弄,可以说已经使许多善良的人士产生了某种道德恐慌,那就是害怕他“妖言惑众”,引起这个社会的堕落。但事实证明,这种推断是没有多大根据的。一方面,我们不断地宣扬高尚的道德,树立了一个又一个的道德英雄,却没有使这个社会的道德水准提高多少。另一方面,范美忠本人作为一介中学教师,又何来那么大的能量能让大家趋之若鹜?有道德的人自然不会受到范氏流毒的影响,而那些无良之徒(例如推行大学评估之流)大概要比范美忠恶劣得多,又何须他来加以引诱?因此,人为地拔高道德标杆和树立榜样的模式,才是使道德败坏的真正根源。而那些真诚的道德家们,在面对范美忠时又何必如此不自信呢?如果你们真有道德,那就坦然面对并把范美忠作为一个镜子和考验吧,而不要纯粹打压。要知道,上帝也需要魔鬼的存在呢。 

5、大家批判范美忠的另一个主要原因是他的傲慢。一个懦弱逃跑的人,却高调宣扬自己的行为,还找了很多堂而皇之的理由,这让许多人在感情上无法接受,因为中国的另一个传统似乎是:可以做,但不能说,殊不知这一批判理由却充分说明了批判本身的荒谬。我们不是谴责范美忠的懦弱吗?但能够抛弃功名利禄甚至基本生存,为了某种教育的理想而甘愿到中学任教的人在中国能有几个?敢于在这种特殊的时刻承受千夫所指万人唾弃而大胆发表自己意见的人,又能否找到第二个?所以,与其说人们是因为他的懦弱而批判他,不如说是因为他的勇敢而攻击他。不过我总是疑惑,为什么国人在指责别人的时候,总是不愿把别人文章全部看完、把别人的观点全部搞清楚后再作评价?事实上,从范文的整个思路来看,他其实不是自得,而是内疚和忏悔,他后来说过,他的批判不仅针对别人,也是针对他自己,因为他也大义凛然地指责过很多人,而少有对自己的反思;他还拷问自己对学生的爱是不是还不够,因为“瞬间的本能抉择却可能反映了内在的自我与他人生命孰为重的权衡”;他也接受妻子的“你离神还很远!”的批评。我因此相信,范美忠并不仅是“真小人”,他通过记述自己的心路轨迹,而迈向了走向“神性”的希望之途。

6、关于道德问题,还有一点与职业道德有关。有人认为,范美忠的逃跑虽然符合人之本能,但他并不适合再当一名教师。其主要理由在于,教师是人类灵魂的工程师,理应为人师表。范美忠的做法虽然没有大错,但他的主张却有可能消解教育积极向上的核心价值。这一看法表面上比较理性,也不情绪化,但却蕴含着对教育理念的深深误解。到底什么是教育的核心价值?是爱国主义?民族主义?共产主义?还是儒家传统?五讲四美?一种健全的教育能否将上述价值之一确定为最高而排斥其余?我认为,所有这些价值实际上都不具有绝对性。就拿如今热闹的爱国主义来说,这届欧洲杯恰好提供了一个反例,荷兰籍主帅希丁克率领俄罗斯队痛快击败自己祖国的球队荷兰队。在这里,希丁克显然会因为自己的职业主义而非爱国主义受到尊重。在现代社会,任何职业伦理(比如医生、律师)都可能和大众伦理发生冲突,因为大众往往对某一职业有过高的期待而忽视了其自身的制度角色和现实条件。从教师职业来看,我认为,捍卫多元价值本身才是教育的核心价值。因此,教师基本的职业伦理恰好就是要放弃人类灵魂工程师的姿态(因为教师不可能成为道德知识完美的楷模),而是通过对真理、人性、社会和时代问题的独立思考,来作多元主义的表率。在这个意义上,我认为范美忠恰好最适合做一名教师,他的独立人格、自由精神和诚实探索的勇气,能够让学生认识到人性的局限以及理性判断、独立抉择的重要性。

7、还有许多自由主义者,包括我非常敬重的梁文道先生和我在很多观点上比较认同的萧瀚先生,他们都认为,范美忠不该拿自由主义的普适价值为自己的不道德行为辩护,而且他对自由主义的理解存在误会,因为自由和美德是联系在一起的,追求自由的人一定是学会放弃的人,人性的缺陷并不能作为自由主义的终极目标。这些评判似乎是想使自由主义和范美忠撇清关系,其实没有必要。范美忠并没有误读自由主义,当然也不会损害自由主义的名声。首先,自由主义本身不仅是一种言说,其更可贵而且更需要的是一种身体实践,范美忠敢于承受主流道德大棒的批判打压,就是展现了难能的自由主义精神;其次,无论是积极自由还是消极自由观,都主张对自由的追求所对应的概念并非美德问题,而是反对专制、强权和暴政。所以,自由主义主要是一种政治哲学,它力图抵制专横暴力、捍卫自主空间,从而否认“人们之间的道德差异对社会及政治秩序具有任何相关性”;第三,自由主义源于一种人性和社会的幽暗意识,它意识到人类无法达到神性,但人的堕落却是无限可能的。正因为人性不可靠,所以才需要制度。人类的发展确实需要追求向上的神性,但只有尊重个人欲望的自由观才能孕育出社会的道德感,我们不能把美德作为自由必须追求的目标,而要具有为了自由而追求自由的精神,也惟有在这个过程中才能塑造一颗颗面对自我的有反思能力的灵魂,才能内在地生发出我们需要的美德。

8、有必要说说范美忠存在的意义。我对此有三个评价:其一,范美忠是矛盾的人。他是范跑跑,却勇敢地站在风口浪尖岿然不动;他怀揣着理想主义,却对人性和社会有冷峻甚至冷血的批判;他强调老师和学生之间的独立平等,却对不学无术的强权者和伪道德者尽情挥洒居高临下的优越感和嘲弄姿态;他表面反对道德甚至宣称不去救自己的母亲,却在坚守自身的道德立场并对家人充满温情和责任——请匆忙的批判者们注意,范美忠的《地动山摇》一文中有三分之二的篇幅是在记述自己如何为家人担心受怕,和家人共度难关的;所以,范美忠既向我们展示了人性的复杂性和丰富性,又展示了某种单纯的性情和纯粹的理想;其二,范美忠的初衷已经取得了积极的效果,对中国社会的推动产生了有益的贡献。李敖当年在北大关于自由主义的演讲振聋发聩,但其影响层面还仅限于知识界,而范美忠的一番言说则辐射到整个社会的层面,对人们惯常接受的道德观念直接予以巨大的冲击。我旗帜鲜明地赞同,我们不缺乏对主流道德的维护,真正稀缺的还是挑战主流道德的声音;其三,有人认为范美忠不过是一种炒作,他会像超女或许多网络名人那样很快成为过眼云烟。我认为这样的看法未免低估了范美忠的积累和价值。重要的是他一直在读书思考,在坚持发出独立的声音。这些声音或许错误,但他敢于把自己的错误亮出来接受无情批判,这就非常不错了。对于真正的思考者来说,只要他能继续阅读和观察,就会有更长久的生命力。这次事件对范美忠而言是一个新的起点,他将因此对这个国度、这个时代有更深切的体认,并继续锤炼自己的思想,保持对制度的正当性基础的质疑。这才是一个负责任的知识分子应担当的道义。作为教师和思考者的范美忠,应该都是问心无愧的。

9、我理解学生们在那一刻对老师范美忠的失落,但这种失落对他们的成长来说是必要的,它与道德无关,而是证明在制度保障和紧急避险的专业知识方面,中国的教师和他们一样其实也是弱者,在人生的道路上,只有自己才能真正拯救自己;我也相信郭松民先生的愤怒是真诚的,可惜的是人们的大多数愤怒都不是因为别人的错误,而是因为别人有着与我们不一样的想法和活法。在铺天盖地的对范美忠的批判声中,出现频率最高的词汇大概就是“无耻”一词了。人们往往喜欢收获别人高尚牺牲后的感动,并通过谴责范美忠这样的小人来使自己心安理得。我们会以仪式化的行为表示来取代应有的真情流露,捐完款后,就认为自己履行了神圣的道德义务,进而有资格指责别人;参加了某个抵制游行,就以为自己特别的爱国;为女士开门撑伞,就以为自己相当的绅士。人是很容易自我感觉良好并把自己陶醉进去的,用粗俗的说法,这就叫“装逼”。我也装过,在地震那天,我是行政楼里最先发觉地震的人,于是我赶忙让楼道里的人快跑出去,还在门口拦住那些正要进楼的人。几秒钟后,震感就非常强烈了。那一刻,我觉得自己真他妈的高尚,但事后仔细想想,才明白根本不是那回事,我的反应之所以快一些,是因为我在老家四川西昌经历过地震,所以比别人多了些敏感。更何况当时也没想到会有那么严重,所以才能比较从容地叫大家离开楼房,而不至于“脑子空白”。我也经常胆小如鼠,遇事慌乱。这番评论基本与正文无关,属于自我的一个解剖。

10、正如有论者所言,“妖魔化范美忠不会使我们更善良”,反过来我要说,英雄化的一个个人物脸谱也不会使我们更崇高。就如黄纪苏先生描述,文革初期海淀区有片芦苇荡,有一天燃起了大火,附近的驻扎的子弟兵一马当先,与烈焰搏斗,其中一个战士奋不顾身,表现突出,后来查出来他就是纵火犯,原来是想当英雄没机会便创造机会。社会的风气由此可见一斑。在准备写这篇评论的时候,我又看到了教育部的新闻发言人对范美忠的盖棺论定“可以不崇高但不允许无耻”;教育部一向是站在所谓的道德制高点说话的,虽然在这个制高点下,它多年来并没有做过什么积德的好事,除了把异议者开除教师队伍之外。作为堂堂教育部的发言人,面对教育大跃进和腐败问题造成的那么多学生生命的消逝,面对各种各样的致使中国教育不断堕落的教育问题,居然还好意思说整天被英雄们感染和激动,真是太有闲情了。我真的想问一句:到底是谁在败坏我们的道德?与其忙于谴责别人,不如首先审问自己;与其贬低他人的人格,不如思考如何去建设一种公正和催人向善的制度。

星期二, 十二月 16, 2008

零八宪章

零八宪章
2008年12月10日公布

一、前言

今年是中国立宪百年,《世界人权宣言》公布60周年,“民主墙”诞生30周年,中国政府签署《公民权利和政治权利国际公约》10周年。在经历了长期的人权灾难和艰难曲折的抗争历程之后,觉醒的中国公民日渐清楚地认识到,自由、平等、人权是人类共同的普世价值;民主、共和、宪政是现代政治的基本制度架构。抽离了这些普世价值和基本政制架构的“现代化”,是剥夺人的权利、腐蚀人性、摧毁人的尊严的灾难过程。21世纪的中国将走向何方,是继续这种威权统治下的“ 现代化”,还是认同普世价值、融入主流文明、建立民主政体?这是一个不容回避的抉择。

19世纪中期的历史巨变,暴露了中国传统专制制度的腐朽,揭开了中华大地上“数千年未有之大变局”的序幕。洋务运动追求器物层面的进良,甲午战败再次暴露了体制的过时;戊戌变法触及到制度层面的革新,终因顽固派的残酷镇压而归于失败;辛亥革命在表面上埋葬了延续2000多年的皇权制度,建立了亚洲第一个共和国。囿于当时内忧外患的特定历史条件,共和政体只是昙花一现,专制主义旋即卷土重来。器物模仿和制度更新的失败,推动国人深入到对文化病根的反思,遂有以“科学与民主”为旗帜的“五四”新文化运动,因内战频仍和外敌入侵,中国政治民主化历程被迫中断。抗日战争胜利后的中国再次开启了宪政历程,然而国共内战的结果使中国陷入了现代极权主义的深渊。1949年建立的“新中国”,名义上是“人民共和国”,实质上是“党天下”。执政党垄断了所有政治、经济和社会资源,制造了反右、大跃进、文革、六四、打压民间宗教活动与维权运动等一系列人权灾难,致使数千万人失去生命,国民和国家都付出了极为惨重的代价。

二十世纪后期的“改革开放”,使中国摆脱了毛泽东时代的普遍贫困和绝对极权,民间财富和民众生活水平有了大幅度提高,个人的经济自由和社会权利得到部分恢复,公民社会开始生长,民间对人权和政治自由的呼声日益高涨。执政者也在进行走向市场化和私有化的经济改革的同时,开始了从拒绝人权到逐渐承认人权的转变。中国政府于1997年、1998年分别签署了两个重要的国际人权公约,全国人大于2004年通过修宪把“尊重和保障人权”写进宪法,今年又承诺制订和推行《国家人权行动计划》。但是,这些政治进步迄今为止大多停留在纸面上;有法律而无法治,有宪法而无宪政,仍然是有目共睹的政治现实。执政集团继续坚持维系威权统治,排拒政治变革,由此导致官场腐败,法治难立,人权不彰,道德沦丧,社会两极分化,经济畸形发展,自然环境和人文环境遭到双重破坏,公民的自由、财产和追求幸福的权利得不到制度化的保障,各种社会矛盾不断积累,不满情绪持续高涨,特别是官民对立激化和群体事件激增,正在显示着灾难性的失控趋势,现行体制的落伍已经到了非改不可的地步。

二、我们的基本理念

当此决定中国未来命运的历史关头,有必要反思百年来的现代化历程,重申如下基本理念:

  • 自由:自由是普世价值的核心之所在。言论、出版、信仰、集会、结社、迁徙、罢工和游行示威等权利都是自由的具体体现。自由不昌,则无现代文明可言。
  • 人权:人权不是国家的赐予,而是每个人与生俱来就享有的权利。保障人权,既是政府的首要目标和公共权力合法性的基础,也是“以人为本”的内在要求。中国的历次政治灾难都与执政当局对人权的无视密切相关。人是国家的主体,国家服务于人民,政府为人民而存在。
  • 平等:每一个个体的人,不论社会地位、职业、性别、经济状况、种族、肤色、宗教或政治信仰,其人格、尊严、自由都是平等的。必须落实法律面前人人平等的原则,落实公民的社会、经济、文化、政治权利平等的原则。
  • 共和:共和就是“大家共治,和平共生”,就是分权制衡与利益平衡,就是多种利益成分、不同社会集团、多元文化与信仰追求的群体,在平等参与、公平竞争、共同议政的基础上,以和平的方式处理公共事务。
  • 民主:最基本的涵义是主权在民和民选政府。民主具有如下基本特点:
    (1)政权的合法性来自人民,政治权力来源于人民;
    (2)政治统治经过人民选择;
    (3)公民享有真正的选举权,各级政府的主要政务官员必须通过定期的竞选产生;
    (4)尊重多数人的决定,同时保护少数人的基本人权。
    一句话,民主使政府成为“民有,民治,民享”的现代公器。
  • 宪政:宪政是通过法律规定和法治来保障宪法确定的公民基本自由和权利的原则,限制并划定政府权力和行为的边界,并提供相应的制度设施。

在中国,帝国皇权的时代早已一去不复返了;在世界范围内,威权体制也日近黄昏;公民应该成为真正的国家主人。祛除依赖“明君”、“清官”的臣民意识,张扬权利为本、参与为责的公民意识,实践自由,躬行民主,尊奉法治,才是中国的根本出路。

三、我们的基本主张

藉此,我们本着负责任与建设性的公民精神对国家政制、公民权利与社会发展诸方面提出如下具体主张:

  1. 修改宪法:根据前述价值理念修改宪法,删除现行宪法中不符合主权在民原则的条文,使宪法真正成为人权的保证书和公共权力的许可状,成为任何个人、团体和党派不得违反的可以实施的最高法律,为中国民主化奠定法权基础。
  2. 分权制衡:构建分权制衡的现代政府,保证立法、司法、行政三权分立。确立法定行政和责任政府的原则,防止行政权力过分扩张;政府应对纳税人负责;在中央和地方之间建立分权与制衡制度,中央权力须由宪法明确界定授权,地方实行充分自治。
  3. 立法民主:各级立法机构由直选产生,立法秉持公平正义原则,实行立法民主。
  4. 司法独立:司法应超越党派、不受任何干预,实行司法独立,保障司法公正;设立宪法法院,建立违宪审查制度,维护宪法权威。尽早撤销严重危害国家法治的各级党的政法委员会,避免公器私用。
  5. 公器公用:实现军队国家化,军人应效忠于宪法,效忠于国家,政党组织应从军队中退出,提高军队职业化水平。包括警察在内的所有公务员应保持政治中立。消除公务员录用的党派歧视,应不分党派平等录用。
  6. 人权保障:切实保障人权,维护人的尊严。设立对最高民意机关负责的人权委员会,防止政府滥用公权侵犯人权,尤其要保障公民的人身自由,任何人不受非法逮捕、拘禁、传讯、审问、处罚,废除劳动教养制度。
  7. 公职选举:全面推行民主选举制度,落实一人一票的平等选举权。各级行政首长的直接选举应制度化地逐步推行。定期自由竞争选举和公民参选法定公共职务是不可剥夺的基本人权。
  8. 城乡平等:废除现行的城乡二元户籍制度,落实公民一律平等的宪法权利,保障公民的自由迁徙权。
  9. 结社自由:保障公民的结社自由权,将现行的社团登记审批制改为备案制。开放党禁,以宪法和法律规范政党行为,取消一党垄断执政特权,确立政党活动自由和公平竞争的原则,实现政党政治正常化和法制化。
  10. 集会自由:和平集会、游行、示威和表达自由,是宪法规定的公民基本自由,不应受到执政党和政府的非法干预与违宪限制。
  11. 言论自由:落实言论自由、出版自由和学术自由,保障公民的知情权和监督权。制订《新闻法》和《出版法》,开放报禁,废除现行《刑法》中的“煽动颠覆国家政权罪”条款,杜绝以言治罪。
  12. 宗教自由:保障宗教自由与信仰自由,实行政教分离,宗教信仰活动不受政府干预。审查并撤销限制或剥夺公民宗教自由的行政法规、行政规章和地方性法规;禁止以行政立法管理宗教活动。废除宗教团体(包括宗教活动场所)必经登记始获合法地位的事先许可制度,代之以无须任何审查的备案制。
  13. 公民教育:取消服务于一党统治、带有浓厚意识形态色彩的政治教育与政治考试,推广以普世价值和公民权利为本的公民教育,确立公民意识,倡导服务社会的公民美德。
  14. 财产保护:确立和保护私有财产权利,实行自由、开放的市场经济制度,保障创业自由,消除行政垄断;设立对最高民意机关负责的国有资产管理委员会,合法有序地展开产权改革,明晰产权归属和责任者;开展新土地运动,推进土地私有化,切实保障公民尤其是农民的土地所有权。
  15. 财税改革:确立民主财政和保障纳税人的权利。建立权责明确的公共财政制度构架和运行机制,建立各级政府合理有效的财政分权体系;对赋税制度进行重大改革,以降低税率、简化税制、公平税负。非经社会公共选择过程,民意机关决议,行政部门不得随意加税、开征新税。通过产权改革,引进多元市场主体和竞争机制,降低金融准入门槛,为发展民间金融创造条件,使金融体系充分发挥活力。
  16. 社会保障:建立覆盖全体国民的社会保障体制,使国民在教育、医疗、养老和就业等方面得到最基本的保障。
  17. 环境保护:保护生态环境,提倡可持续发展,为子孙后代和全人类负责;明确落实国家和各级官员必须为此承担的相应责任;发挥民间组织在环境保护中的参与和监督作用。
  18. 联邦共和:以平等、公正的态度参与维持地区和平与发展,塑造一个负责任的大国形象。维护香港、澳门的自由制度。在自由民主的前提下,通过平等谈判与合作互动的方式寻求海峡两岸和解方案。以大智慧探索各民族共同繁荣的可能途径和制度设计,在民主宪政的架构下建立中华联邦共和国。
  19. 转型正义:为历次政治运动中遭受政治迫害的人士及其家属,恢复名誉,给予国家赔偿;释放所有政治犯和良心犯,释放所有因信仰而获罪的人员;成立真相调查委员会,查清历史事件的真相,厘清责任,伸张正义;在此基础上寻求社会和解。

四、结语

中国作为世界大国,作为联合国安理会五个常任理事国之一和人权理事会的成员,理应为人类和平事业与人权进步做出自身的贡献。但令人遗憾的是,在当今世界的所有大国里,唯独中国还处在威权主义政治生态中,并由此造成连绵不断的人权灾难和社会危机,束缚了中华民族的自身发展,制约了人类文明的进步——这种局面必须改变!政治民主化变革不能再拖延下去。

为此,我们本着勇于践行的公民精神,公布《零八宪章》。我们希望所有具有同样危机感、责任感和使命感的中国公民,不分朝野,不论身份,求同存异,积极参与到公民运动中来,共同推动中国社会的伟大变革,以期早日建成一个自由、民主、宪政的国家,实现国人百余年来锲而不舍的追求与梦想。

文坛“黑马”刘晓波

(香港《解放月报》1988年12月号金钟文) 

    文坛“黑马”刘晓波                        

香港《解放月报》 
  作者按:自从刘晓波在本报亮相以来,我期待着和他见面。11月27日,他结束在挪威的讲学,应夏威夷大学之邀,途经香港,逗留几日,接受了解放月报的专访,下面是根据录音整理的访问记录。 
  今年6月,北师大举行刘晓波博士论文“审美与人的自由”的答辩会,九位全国一流的教授专家一致同意授予刘晓波文学博士学位。但是,这篇访问中的刘晓波,没有表示一点学者的拘谨和斯文,而是更像一名顽强地表现自己观念的“愤怒青年”或“思考青年”。他的激烈和尖锐来自于世界观的成熟,他的勇敢无畏则显示了和中国思想界主流派的深刻代沟,这很容易令人想起台湾六十年代的李敖。 
  如果推刘晓波为当代中国反叛的青年一代的理论代表,他是当之无愧的。因此,这篇访问记录值得推广给所有关注中国发展和青年一代状况的人士一读。 
  问:您在大陆被视为一匹“黑马”,言论“偏激”,他们怎么会放你出来的呢? 
  刘晓波:我出国没感到多大阻力,手续办得非常顺利。邀请递上去,先由系里批准,再由学校批,我只去过国家教委两次,一次送材料,一次拿护照与签证。这在中国人中是非常顺利的,人家出国不知道要跑多少趟,简直要扒掉一层皮。我一次也没去过挪威大使馆 
  对教育制度的批判 
  问:你今年6月在北师大获得博士学位,是否意味着一种官言承认? 
  刘晓波:我永远不承认学问好坏由博士硕士决定,我只看具体的人,如果你行,可以不用任何学位。我认为,不论在国内外,真正像样的只是极少数,所以我说大学毕业生有95%的废物,硕士毕业生有97%。博士毕业生有98%、99%的废物。不能用学位去评价一个人,同人接触,我完全凭感觉决定喜恶、好坏。 
  问:西方社会的支柱之一是教育制度,学位往往决定一个人的社会地位,你看中国的学位制在国际上地位如何? 
  刘晓波:中国的学位,我不想多谈,我想谈谈中国的教育制度,这个制度有一点是世界各国无法企及的,即它通过教育如何把人变成一个奴隶。 
  问:你是说过去还是现在? 
  刘晓波:过去现在都一样。 
  问:一点变化都没有吗? 
  刘晓波:没有。中国通过教育把人变成奴隶的技巧和一套程序,已经达到世界上最成熟和登峰造极的地步。我在中国从小学到大学,都是在“夹板”中长大的,就如围住长的一棵树,长出杈就砍掉。 
  问:你在文革时开始念书了吧? 
  刘晓波:我非常感谢文化大革命。那时我是一个孩子,我可以想干什么便干什么。父母都去干革命。学校都停课了,我可以暂时摆脱教育程序,去干我想干的事,去玩,去打仗,我过得很愉快。 
  问:你这次去北欧,是干什么?愉快吗? 
  刘晓波:是奥斯陆大学一个基金会邀请的,他们有一笔研究中国的经费,准备请五个人:第一个是我,第二个是北岛,然后是陈凯歌、万之、米丘。去讲了五次课,留下一个讲课提纲,3万多字,主要讲中国文学。 
  对西方汉学的批判 
  问:这三个月,你对北欧的中国研究有什么印象? 
  刘晓波:我仍然说,他们的汉学家中98%是废物,学素质极差,很多人在向中国政府谄媚,他们与中国的关系有很大的功利成分,他们不是学者。我比较喜欢的是如澳大利亚的李克曼,美国的费正清,他们真正是搞了中国问题,他们对中国采取一种冷眼旁观的超脱态度,但现在不少汉学家,如德国的、瑞典的、北欧的,他们既不了解自己的文化,也不了解中国,中国的东西看得很少,只是喜欢某个作家,研究他的东西而已,至少我知道奥斯陆大学东亚系教授的水平是误人子弟的,包括语言能力。我对他们说,你们研究中国当代文学,有如中国人研究越南文学、朝鲜文学的水平。那位邀请我去的汉学家说,我是第一个被他们邀请又对他们不客气的中国人。 
  问:除了文学问题外,你在国外还谈政治社会问题吗? 
  刘晓波:很少。我在国外很深的一点体会是,想做一个真实的人,上天给了你不同于别人的天赋,你能把它贯彻到底。这就是一个彻底的人。做这种人不仅在中国,就是在西方一样需要勇气和智慧,人类的不少弱点是共同的,只不过中国人把它发展到他妈的没法再“操蛋”(北方粗话)的地步。 
  问:你这次去夏威夷,准备讲什么? 
  刘晓波:不准备再讲文学,想讲讲哲学,大约三个月,然后可能去美国加州。 
  问:你这样云游四海,还打不打算回去? 
  刘晓波:我现在不想回去,但我不敢保证我将来会有什么变化。 
  问:有的中国作家说,离开了自己的国家和人民,就很难作出成就来,你同意吗? 
  刘晓波:他们是给自己留退路,是弱者的表现,生活就在你脚下,每分钟都有生活,你只要能面对内心世界,能保持感觉,就能写出东西,不论你生活在哪里。 
  问:你自己会不会面临抉择呢? 
  刘晓波:我有自身无法摆脱的局限:语言问题。我没法用英语那样好的表达自己的内心世界,我将来有可能用英语表达的意思,但语言的味道会一点儿也没啦。所以,语言如果可以过关,中国会和我根本没有关系。我最大的悲哀就是因为语言的局限性,还不得不为中国说话,我是在与一个非常愚昧、非常庸俗的东西对话,这种对话只会使自己的水平越来越低。 
  问:中国文学提出“走向世界”的口号,但我发现他们对外部世界又有某种程度的抗拒感(年轻的作家好一些),不像苏联和东欧的作家,如索忍尼辛昆德拉,不恐惧国外生活,而且写出了好作品。 
  刘晓波:这种抗拒感来源于他们太软弱,中国文学“走向世界”是他们虚构的前提,就像能不能获诺贝尔奖的问题一样,其前提是中国作家已达到获诺贝尔奖的水平,为什么获不到?如果诺贝尔奖是世界一流水平,这前提就是虚构的。当然,诺贝尔奖的作品不一定是最好的。 
  对电视片“河殇”的批判 
  问:最近我看了电视片“河殇”的脚本,金观涛他们表达了一个强烈的意念:透过所谓黄色文明与蓝色文明的对比,中国一定要走向海洋,你对此是否同意? 
  刘晓波:我认为东西方文明并不构成冲突和对抗,那也是中国人虚构出来的,中国文明就落伍了,并不存在与西方文明对抗的问题,需要的是从头学起,承认落伍和失败,老老实实向别人学习,只有强度相等而方向不同的两个东西才会形成对抗,如西方的经验主义与理性主义哲学,生命哲学与科学哲学等等。中国有什么东可以与西方文明对抗?这种对抗概念证明了中国民族根深蒂固的虚荣心。 
  问:“河殇”在海内外引起轩然大波,褒贬不一,你同“河殇”的作者是同一代人,很想听听你对它的评价。 
  刘晓波:“河殇”做到了中国人现在电视上可能做到的程度,尽管我觉得还远远不够,放在中国而言,我肯定“河殇”,假如放在更高层次上看,这个片子也有没什么东西。我特别不喜欢“河殇”的解说词和它的语调,那是一种毛泽东式的语言,救世主式的语言。毛泽东这一点很厉害,他的语言影响了当代中国所有的理论和小说。 
  问:很多人推崇“河殇”在文化层面上所作的探索和反省,你对传统文化也很批判,为什么又对它很有保留? 
  刘晓波:“河殇”在解说词和画画的背后,蕴含了中国人几千年的虚荣心,它不是彻底承认中国落伍。它提出中国的西化,可今后中国要中化世界。中国人的观念是:西方强大时,中国人当奴隶,中国强大时,它要西方人当奴隶。这是“河殇”中潜在的意识,如洋务派所说:师夷之长以制夷”,为什么一定要制别人?中国骂别人帝国主义,其实自己最帝国主义。中国人在物质上可以承认自己落后,机器不如人家,衣服不如人家,但精神上不承认落后,道德世界第一!如梁漱溟、李泽厚、林语堂这些学者都持这种论调,李泽厚就要求以东方天人合一补充西方的天人对立,以东方的群体性、人际关系补充西方人的空虚感……但这两种东西是根本不能互补的!是决然不同的两种文化体系,不能调和的。 
  对中国人格的批判 
  问:你说“河殇”后面的虚荣心,我也有同感…… 
  刘晓波:比如一开始的舞龙场面,拍得激昂,很有力量,如果我拍的话,我会拍出中国人如何的萎缩,软弱和“操蛋”,而不加一句解说。但“河殇”潜在的意思还是在说中国是一个伟大的民族,中国人99%的萎靡状态和那些画面表现的精神状态差得太远了。我在“新时期文学的危机”一文中,曾指出中国人从肉体到精神统统阳痿! 
  问:真是一番李敖味道!“河殇”实际上把中国近几百年积弱落后解释成一种历史的误会,似乎中国本应是世界第一,根本就不应该落后,你如何看待中国知识分子的历史作用? 
  刘晓波:我不相信古书上记载的知识分子人格如何高尚,如韩愈是一个很正统的卫道士,一个大儒,但此人生活无所不好,财、权、色俱全。中国知识分子的双重性很强,学术也具有功利价值,成了学者之后,能得到许多实际的功利,所以,中国知识分子立足社会有两条路一是入世当官,成为官僚集团中的一员,得到实际利益;一是先成名后得利,诸葛亮三顾茅庐留美名,就很会同统治者玩游戏,隐是为了显,退是为了进,出世是为了入世。 
  问:“河殇”对中国社会长期停滞提出了一种解释,也就是现在很时髦的金观涛理论:超稳定结构,另外,也有人对中国人的民族性格提出批评,你以为如何? 
  刘晓波:我承认我对中国文化的研究,最后走投无路,如果你把问题归结为政治腐败,再及文化腐败,就会问:为什么孔子的思想能统治中国这么多年,至今阴魂不散?我没法回答。我说过可能与人种有关。我绝不认为中国的落伍是几个昏君造成的,而是每个人造成的,因为制度是人创造的,中国的所有悲剧,都是中国人自编自导自演和自我欣赏的,不要埋怨别人,反传统与革新要从每个人开始,中国打倒“四人帮”之后,人人都成了受难者,或是反“四人帮”的英雄,他妈的,文革时你干什么去了?那些知识分子写大字报比谁都写得好,没有土壤,毛泽东一个人不会有那么大的力量。 
  问:你常提到“人格”,你认为中国人在人格、人性素质方面,甚至在人种方面,同西方民族有什么差异? 
  刘晓波:我只能说一点,中国人缺乏创造力。以哲学而言,西方有最好的经验主义哲学家、思辩哲学家、宗教哲学家、非理性哲学家和逻辑学者,他们能把人身上所具有的每一创造力,都发展到一个极致和非常漂亮的地步。要非理性,就有尼采式的那样全非理性的学说;要逻辑,有亚里士多德的逻辑,有罗素的数理逻辑,有笛卡儿、莱布尼兹的逻辑,精细严密到你毫无办法!中国人有什么?中国只有一堆非驴非马的大杂烩。 
  问:为什么会这样呢?中国人智能不低啊。 
  刘晓波:那我回答不了。从制度、文化推到人种上去找?我无力去天空几十万年前的历史。中国人一直傲称古代四大发明,西方古代以来几百大发明都有了,有什么值得骄傲的?四大发明对中国今天惟一的意义,就是遮羞布! 
  对孔孟之道的批判 
  问:你曾宣称要彻底埋葬孔孟之道,在它的废墟上能建立现代中国文化,如果一个民族完全否定了她的传统文化、失去了基础,如何建设一个新文化? 
  刘晓波:传统文化只是提供了一个否定的基础和起点,不是继承和承袭的基础。我认为孔子是个庸才,孟子比他有智慧,他承认的天才是庄子,从哲学上说,孔子什么都不是,孔子的学说是一种入世的为政治服务的学说,汉代把它变为统治工具,它的生命到汉代就该死亡了,奇怪的是这么多年还没有死亡!不过,它面对新世界已经死亡了。西方有人喜欢孔子,不奇怪,因为是多元社会,但是在一元化的社会中,最好的东西也没用。所以孔子在东西方的意义不一样,如果中国是个多元化的政体,我不反对别人信仰马克思、信仰基督教、信仰孔子,但当前的中国,你信仰马克思就等于信仰一种思想独裁,因为马克思主义在中国是统治阶级的工具,是棍子,不具有理论意义。 
  问:有人认为亚洲四小龙经济上的成功是儒学的胜利,证明儒学还有现代价值。 
  刘晓波:这是胡说八道!也是忘恩负义。台湾、南韩、新加坡都有美国支持,日本也是,如果没有美国的人权观念的约束,这些国家可能什么都没有!这是东方人的丑恶,东方人面临着人的解放的问题,中国是一架政治机器,日本是一架经济机器,每个人都是机器上的一个螺丝钉。台湾、日本的人权问题表示解决,香港解决了西方近代的个人主义是功利化的,它争取的是政治与经济的权利,但现代存在主义哲学追求的则是生命意义上的个性解入,这是一种“纯哲学”。 
  问:哲学问题我们只能点到辄止了。不如你说说,你如此反传统,是否同意全盘西化? 
  刘晓波:现代化是至明真理:私有制、民主政治、言论自由、法律至上。这是无可争议的,中国不存在理论问题,只有政策问题,全盘西化就是人化、现代化,选择西化就是要过人的生活,西化与中国制度的区别就是人与非人的区别,换言之,要过人的生活就要选择全盘西化,没有和稀泥及调和的余地。我把西化叫做国际化、世界化,因为只有西化,人性才能充分发挥,这不是一个民族的选择,而是人类的选择,所以,我很讨厌“民族性”这个词。中国就讲不清什么是“中国特色”。 
  问:据了解,大陆思想界对你阁下的这些高见,颇有一些如“走极端”、“绝对化”的批评,你有何辩解?是否有意赋予它的特殊意义?刘晓波:不是,我的声音只属于我自己,那只是中国的一种声音,别人搞条理很清晰、论证很严密的学问,我不反对,但我的方式就是这样,无以名之,但并不妨碍我欣赏西方的科学哲学。它严密的论证环环相扣,但我不会那样写,我的极端应有存在的理由,我并不要求别人和我一样。我不喜欢钱钟书那样写一条后引好几十条考证式的文章,那是他的一绝,我承认他的价值,虽然我可能认为他很荒谬。 
  问:你的思路和表达方式有鲜明的个人色彩,是怎样形成的?通过思辩、经验还是人生的独特背景? 
  刘晓波:我向来不喜谈“我的治学之道”,没什么道,只不过我与别人不同,其他没什么好谈的。有的人动辄谈成材之路……他妈的,你有什么资格给青年人做楷模,当青年导师!我很欣赏无法之法,每个人只有自己的方法,无统一的方法,做学问做人皆如此。任何一个人的成功,都是别人的坟墓,不要走别人的路。 
  对四大思想领袖的批判 
  问:请你介绍一下,海外所说金观涛、李泽厚、方励之、温元凯是中国四大思想领袖,符不符合实际? 
  刘晓波:某种情况下是符合的。不过,方励之要除外,只有李泽厚、刘宾雁、金观涛,他们和青年的关系是伯乐和千里马。他们的“伯乐欲”特别强,他们要不断发现人,给青年人写作,而年轻知识分子又要依靠大树来生活,进入名人圈子。中国不是千里马多,而是伯乐多,故尔千里马多。中国名人征服人的办法不是打不是骂,是抚摸你、关怀你,用类似女性般的温柔去同化你。 
  问:他们四大领袖的思想在中国究竟有多大影响力? 
  刘晓波:非常大。金观涛、李泽厚很有市场,尤其在大学生中,青年导师嘛。我演讲时,别人请教,我就说不向任何人教任何东西……我为什么要演讲,一是自我感觉好,二为了挣钱,不给够一小时多小钱,我就不去。钱是一种自我评价,有了一定数量的钱,你的生命也就随着开放到一定的广度。(众笑)我太清楚了!有次去北京友谊商店,见到一瓶160元外汇券的酒,当时我站在那瓶酒前面,感到自己是个弱者,完全被粉碎了!他妈的,你刘晓波出名、演讲,有什么用,这瓶酒都不能征服它! 
  问:四大思想领袖对青年的引导,你认为是否全是正面的?有无负面的成分? 
  刘晓波:我先要排除方励之,我认为他不是青年导师,他要自封的话,我也不喜欢。(问:为什么?)他有什么资格!!(问:他事实上已经是导师!)这叫做中国人制造偶像的先天遗传,有些人不愿当偶像,是别人把他推上去的,就像一个为掌声而跑的运动员。方励之人过的最大的关,不是和当权者的关系,而是和崇拜者之间的关系,是面对鲜花和掌声应该怎么办?我认为,他们每个人对青年的引导基本上是负面的。 
  问:这样说来,中国思想界对青年一代的影响是一片空白了? 
  刘晓波:中国现在的“文化热”是虚幻的,中国人的素质这样低,一个农业文明生存方式的国家,在十年内走完了西方两千年的精神进程,从古希腊到后现代派,似乎都接受了,但什么也没有接受,什么都玩了,什么都不地道、不深入,新名词只能满足人们的虚荣心。 
  问:你可否说一点你对李泽厚的“挑战”? 
  刘晓波:李泽厚与刘再复有一个对话,谈对青年人的态度,说他们过去“整体地支持青年人”。过去我说过再不同庸才作战了,现在我要和庸才作战(我承认我也是庸才)。我和他们论战时是指着鼻子骂的,但他们明明骂的是我,却不指出来,说现在年轻人分化了,对有的年青人要重新看。他们的心态是:当你承认他是伯乐时,他就整体地支持你:你想叛逆他时,他就不支持你。刘再复在文章最后说:“青年人,我希望你们知道,我们是爱你们的!”他妈的,你那个爱值几个钱?谁要你的爱!你高高在上,赐给我一个爱,谁稀罕你!你的自我评价太不准确了!他以为爱一个人,别人要感激他,跪下叩头——没那码事!他们三位青年导师(不算方励之)的态度本身就很“操蛋”,是中国知识分子的救世主人格。 
  对当代中国文学的批判 
  问:你86年发表了关于文学危机的惊人之论后,现在你看中国文学有了多少变化? 
  刘晓波:对大陆文学我想说的只是:没有好的东西。不是不让写,而是写不出来。我较喜欢的作家是残雪,他有远到世界水平的潜力,他的感觉很奇特,那种阴冷的、恐怖的、折磨人的感觉,他的“苍孝的浮云”我很喜欢。我早就想写关于他的评论,迟迟未动笔,是想看看他还能不能写出好东西来。我评价一个作品有两个参照系,一是国内的,一是世界的,往往国内一流的作品拿出去也不能跟别人比。
  问:中国作家的创作向西方借鉴的情况令人满意吗? 
  刘晓波:西方文学影响该唤起中国作家内心的生命力才有效,如鲁迅受到很多外国影响,但他的“阿Q正传”绝对是中国式的,现在有些作家抄西方的意境和结构,比如高行健的“车站”把“等待戈多”的结构全部照搬过来,竟被认为是“创新”,这种庸俗是高级庸俗,比模仿句子更可怕。寻根文学也抄“百年孤寂”的神神怪怪,陈凯歌他们也有这种情形。 
  问:你自己的文章与理论呢? 
  刘晓波:我承认也有拾人牙慧的地方,但我承认要切切实实的学习,因为我是在文化沙漠中成长起来的。我要感谢马克思的是,我在文革中能看到的书只有马克思选集,马克思给我提供了不少西方哲学史的线索,是当时“走向世界”的惟一桥梁。我看过马克思全集四十多卷,可以大段大段背下来。马克思前期的作品不错。 
  对马克思主义的批判 
  问:马克思主义近几年受到了冲击,它是否在中国已走向衰落?或失去了生存的价值? 
  刘晓波:马克思给我惟一的震撼,是它不妥协的批判态度。他的历史主义方法也有一定道理,其他不少则是胡说八道,如他对西方社会结构的分析:剥削者与被剥削者、资产阶级与工人阶级,就太简单,没有看到各阶层互相制约的关系。严格地说,阶级的概念在西方已不适用了。马克思的两分法只适用于专制社会。马克思的共产主义也只不过是西方传统的一环,从柏拉图的理想国,到圣经中的天堂。到摩尔的乌托邦,到康特拉的太阳城,到法国空想社会主义。马克思主义理想的混蛋的地方是,它说这理明天就会实现:资本主义准备好一切物质条件,只要一革命就能实现共产主义。马克思的理想太廉价了。 
  问:你认为现在的中国社会处在历史的什么发展阶段? 
  刘晓波:还没有走出农业文明。 
  问:是不是要补资本主义的课? 
  刘晓波:必须补课。 
  问:那么,今天中国的路线还是顺着农业社会的惯性在走? 
  刘晓波:是的。不过,它在调整它的专制,因为它面临危机。 
  问:中国可能在根本上加以改造吗? 
  刘晓波:不可能,即使一两个统治者下决心,也没办法,因为没有土壤。 
  问:那什么条件下,中国才有可能实现一个真正的历史变革呢? 
  刘晓波:三百年殖民地。香港一百年殖民地变成今天这样,中国那么大,当然需要三百年殖民地,才会变成今天香港这样,三百年够不够,我还有怀疑。 
  问:十足的:“卖国主义”啦。 
  刘晓波:我要引用马克思“***宣言”的一句话:“工人没有祖国,决不能剥夺他们所没有的东西。”我无所谓爱国、叛国,你要说我叛国,我就叛国!就承认自己是挖祖坟的不孝子孙,且以此为荣。 
  问:你是说,中国还要走香港的路? 
  刘晓波:但历史不会再给中国人这样的机会了,殖民地时代已经过去了,没人会愿意再背中国这个包袱。 
  问:那怎么办呢?岂不太令人悲观? 
  刘晓波:没办法。我对整个人类都是悲观的,但我的悲观主义并不逃避,即使摆在我面前的是一个又一个悲剧,我也要挣扎,也要对抗,我不喜欢叔本华而喜欢尼采,原因便在于此。 
  (香港《解放月报》1988年12月号金钟文) 

星期三, 十二月 10, 2008

OPNET Frequently Asked Questions

OPNET Frequently Asked Questions


Note: The problem with missing/deleted files has been resolved. Remember that when you modify built-in models, you must save them with a new filename.

  • 0.0 Where do I begin?
  • 1.0 How do I set-up OPNET?
    • 1.1 Log into a graduate workstation.

    • 1.2 Parameter set-up for initial use.

    • 1.3 Starting OPNET.

  • 2.0 What is our MIL 3 Group ID?
  • 3.0 What is the MIL 3 MUC?
    • 3.1 Product Logged Problem Reports

    • 3.2 Mailing lists (Moderated by Mil3)

    • 3.3 Accessing the MUC

  • 4.0 Where can I find models developed by customers?
    • 4.1 Local subdir

    • 4.2 FTP site

  • 5.0 Is there a listing of the OPNET functions/procedures?
  • 6.0 In the online documentation, how do I know what's hyper-text (i.e. clickable) and what's not?
  • 7.0 Is the online index "searchable?"
  • 8.0 What is EMA code?
  • 9.0 Are there different simulation modes available?
  • 10.0 So, what does the "rehash" button rehash?
  • 11.0 Where is the trouble shooting chapter and what problems does it address?
  • 12.0 Can I use a shell scrīpt to run a simulation?
  • 13.0 What are the OPNET programs and scrīpts and where are they documented?
  • 14.0 I am ready to begin designing at the process model level, where should I start?
  • 15.0 How do I trouble-shoot process model compile-time errors and simulation run-time errors?
  • 16.0 What's the difference between State Variables and Temporary Variables?

Follow these steps to reconfigure your account to use the latest release of OPNET.

  1. Edit your .cshrc file. Replace every occurrence of "3.0.A_DL5" with "3.0.B_DL0".
  2. type source .cshrc
  3. Make a copy of your env_db3.0 file, located in your local op_admin sub-directory. The new filename should include the release info, for example env_db3.0.A_DL5.
  4. Run op_newuser again. (Follow the instructions just as before in the "How do I set-up OPNET?" section.)
  5. "Recompile all user-developed or modified process models, transceiver pipeline stages, and external C files."
  6. Read through the new "Where do I begin?" section.

0.0 Where do I begin?
Begin Here! This is not necessarily a quick-reference because there are no shortcuts to learning to use OPNET:-( This is, however, an attempt to provide a methodological approach to learning to use the tool.

  • Follow the set-up steps in the "How do I set-up OPNET?" section.
  • Read the Preference and Introduction to the Tutorial Manual.
  • Read the outside, back cover of the one of the manuals to see what is contained in each of the manuals.
  • Quickly read through this FAQ at a high-level. (You will notice that this FAQ is just an unordered compilation of some of the questions and answers that I have encountered.)
  • If you will use built-in models, minimally you should do the M/M/1 Queue and Packet Switch Chapters of the Tutorial Manual. If the behavīor that you are planning to simulate is not built-in, you should also do the Basic Process Model Chapter. Ideally, you should do the tutorials in order, up to and including the CSMA/CD Chapter. If you are researching wireless communications, you should do the Mobile Radio Chapter too.
  • Read through this FAQ again, this time, paying a little closer attention to details.
  • Begin your modelling journey...

Brief hints for all users:

  • Use all capital letters in the filenames when you save models. It makes the models easier to distinguish between your models and the built in models.
  • Technical Support is usually responsive. When you email them (at opnet@mil3.com), you should include our Group ID, which is: 9720. Click on the "About OPNET" icon, which is located in the lower right corner of the OPNET window (M3UI), to learn about the type of support they provide.
  • The index (Volume 12) for the documentation is very thorough. Use it.

Brief hints for ATM users:

  • ATM models are described in the ATM Chapter of the Models/Protocols Manual.
  • There two ATM network models built-in: a client-server network and an enterprise network. You can also build your own networks.

1.0 How do I set-up OPNET?

1.1 Log into a graduate workstation.

1.2 Parameter set-up for initial use.

1.2.1 For Suns
- Enter the following or add to your .cshrc file:
setenv LD_LIBRARY_PATH /usr/openwin/lib:/usr3/local/lib:/usr/lib
set path=($path /usr21/opnet/3.0.B_DL0/sys/sun_sparc_solaris/bin)
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/usr21/opnet/3.0.B_DL0/sys/sun_sparc_solaris/lib
You might need to add the following line to your .cshrc if you get a "LD_LIBRARY_PATH undefined" error.
setenv LD_LIBRARY_PATH /usr/openwin/lib:/usr3/local/lib:/usr/lib
- Enter op_newuser and answer the questions as indicated below.
-- MIL3 dir > /usr21/opnet
-- Include all models > y
-- Default OPNET product for this user account > 2
[for OPNET Modeler/Radio]
-- font configuration > 1
-- display name > [simply hit enter here]
- Add the following line to your env_db3.0 file contained in your <$HOME>/op_admin/ directory.
arch_suffix: TRUE
(Note: This attribute setting forces all Sun Solaris architecture-specific files to embed "*.s1.*" in the generated file's name. Also, this setting forces all HP-UX architecture-specific files to embed "*.h0.*" in the generated file's name.)
- If your are not already logged into "ash", then telnet to it now. This is the only Sun workstation that you will be able to use.
- Finally, you should go to the systems administrator to get write permission to the OPNET models sub-directory. Also, request to be added to the OPNET group.

1.2.2 For HPs
- Enter the following or add to your .cshrc file:
set path=($path /usr21/opnet/3.0.B_DL0/sys/hp_pa_hpux/bin)
setenv SHLIB_PATH ${SHLIB_PATH}:/usr21/opnet/3.0.B_DL0/sys/hp_pa_hpux/lib:/usr/local/X11R5/lib
You might need to add the following line to your .cshrc if you get a "SHLIB_PATH undefined" error.
setenv SHLIB_PATH /usr/local/X11R5/lib
- Enter op_newuser and answer the questions as indicated below.
-- MIL3 dir > /usr21/opnet
-- Include all models > y
-- Default OPNET product for this user account > 2
[for OPNET Modeler/Radio]
-- font configuration > 3
[for HP 9000/7xx Display, HP VUE Environment]
-- display name > [simply hit enter here]
- If you want to use HPs only, then skip down to 1.3, otherwise continue to the next line.
- If you want the flexibility to use either the HP or Sun architecture, then you must add the following line to your env_db3.0 file. You will need to run op_newuser only once.
arch_suffix: TRUE
- This added flexibility also restricts you to using either "ash" or "sheep."
- Finally, you should go to the systems administrators to get write permission to the OPNET models sub-directory. Also, request to be added to the OPNET group.

1.3 Invoking OPNET.
- Invoke OPNET's graphical interface by typing opnet at the command line UNIX prompt.
- For information about the non-graphical command line oriented method, see the External Interfaces Manual.
- By the way, you don't have to be logged into "ash" or "sheep" at the console in order to run OPNET. You can run OPNET remotely by typing the following. (The statements below assume you are connecting to ash instead of sheep.)
xhost +
telnet ash
Finally, you should set your environment display variable by typing:
setenv DISPLAY local_machine:0.0
where local_machine is the name of the machine in front of which you sit.


2.0 What is our MIL 3 Group ID?
Our MIL 3 Group ID is 9720. It should be included in correspondence to technical support.


3.0 What is the MIL 3 MUC?
MIL 3 has a Maintained User Community (MUC) on the WWW for OPNET. The MUC contains 3.1 problem logs and 3.2 instructions on how to subscribe to various mailing lists moderated by MIL 3. Instructions for accessing the MUC are given in 3.3 below.

3.1 Product Logged Problem Reports
Product Logged Problem entries are used to track the investigation and resolution of reports of problems or bugs with released OPNET software.

3.2 Mailing lists (Moderated by Mil3)
JOB-LINK (Resumes of persons with OPNET experience)
MIL3-ANNOUNCE_ADS (MIL 3 news/announcements)
OPNET-FEEDBACK (OPNET product feedback - sugs/comments)
OPNET-MDL-802.14 (OPNET Model forum - 802.14 Cable)
OPNET-MDL-ATM (OPNET Model forum - ATM)
OPNET-MDL-AVAILABLE (OPNET Models Sought/Offered)
OPNET-MDL-BR_RTE (OPNET Model forum - Bridge/Routers)
OPNET-MDL-MAC (OPNET Model forum - MAC protocols)
OPNET-MDL-MISC (OPNET Model forum - other models)
OPNET-MDL-RADIO (OPNET Model forum - Radio)
OPNET-MDL-TCP_IP (OPNET Model forum - TCP/IP)
OPNET-PLP-STANDARD (OPNET Product Logged Problems - standard)
OPNET-PLP-URGENT (OPNET Product Logged Problems - urgent)
OPNET-TECH_QUESTIONS (OPNET Technical Questions)
OPUSER-ANNOUNCE_ADS (OPNET User Announcements and ads)
Subscrīption is via forms on the website or listproc commands sent by email. There are also list archives that appear to be searchable. Mil3 strongly suggests that OPNET users subscribe, at least, to the following lists:
MIL3-ANNOUNCE_ADS: MIL 3 news and announcements
OPNET-PLP-URGENT: Notification of urgent Product Logged Problems

3.3 Accessing the MUC
To access the MUC, you must be a Va Tech student.
Contact Dr. Nathaniel Davis IV at:
ndavis@vt.edu for instructions.


4.0 Where can I find models developed by customers?

4.1 Local subdirectory
change directory to the contrib subdirectory by executing the following command.
cd /usr21/opnet/3.0.B_DL0/models/contrib

4.2 FTP site -- go here to find models that might have been added since the current OPNET release.
To access the FTP site, you must be a Va Tech student.
Contact Dr. Nathaniel Davis IV at:
ndavis@vt.edu for instructions.

For an overview, read the file: CONTRIB_MODEL_SUMMARIES


5.0 Is there a listing of the OPNET functions/procedures?
Yes, descrīptions are in the two-part Simulation Kernel Manual.


6.0 In the online documentation, how do I know what's hyper-text (i.e. clickable) and what's not?
You must explore and discover! (As one moves the cursor over hyper-text, it does NOT change from a pointer to a hand, as one would expect.)


7.0 Is the online index "searchable?"
The documentation does not have search capability built in. An alternative (but less effective) approach is to use the "find" feature built into the viewer.


8.0 What is EMA code?

[Quoted from the Tool Operations Manual.]
"Source code that represents the model currently present in the active tool. Ema code is in text format, allowing you to edit it with an ordinary text editor. For more info about Ema, see the External Model Access chapter of the OPNET External Interfaces Manual. CAUTION: Ema source code files for all models have the same suffix, ".em.c", regardless of model type. Be sure that the Ema file you create will not overwrite a previously-created file you want to keep."

[Quoted from the External Interfaces Manual, chapter Ema.] "External model access is an OPNET term that is defined as follows: The technique of accessing a model external to the opnet program (i.e., without using the services provided by the opnet graphical editors). In this context, the definition of accessing a model includes creating it, modifying it, and extracting data from it. [Ema] is supported via a library of C-callable functions, which serves as a programmatic specification and query language. This library is nammed the [Ema] package, and it can viewed as an Application Program Interface (API) for [manipulating] OPNET model files."


9.0 Are there different simulation modes available?
Yes. Either 2 or 3, depending upon how you look at it. [Will elaborate on later...]


10.0 So, what does the "rehash" button rehash?
The rehash button alphabetically sorts the model list. The model type depends on


11.0 Where is the trouble shooting chapter and what problems does it address?
Yes. It is last chapter in the Tutorial Manual (Vol.1). It addresses the following problems.
Compiling a Process Model
- Process Editor can't compile a model.
Checking Link Consistency
- Red "X" marks denote link inconsistencies.
Executing a Simulation
- op_runsum cannot construct the simulation repository.
- An executing simulation eventually freezes, displaying a fixed message in the Simulation Tool Message Display, and it makes no further progress.
- The simulation stops unexpectedly and prints one of the following error messages:
program abort -- bus error
program abort -- floating point exception
program abort -- segmentation violation
- When running a simulation model, the simulation halts and the following error message is issued: "Program Abort: no true transitions from state "
- When running a simulation model, the simulation halts and the following error message is issued: "Program Abort: multiple true transitions from state "
Specific Tool Operations
- Subnets, nodes, or modules within the Probe Editor do not appear in the attribute menu of the probe being edited when they are clicked on. - The selection of the destination module of a packet stream within the Node Editor fails and prints the error "Invalid Intermediate point. Path definition cancelled." - Activating action buttons fails and generates the error "point not in workspace."
- Writing a model file fails and prints the error "Unable to write model because it was opend read-only. Try a different name."
- During interactive use of OPNET, the cursor disappears or stays in the "hourglass" mode for a long time (several minutes). A simulation is not being executed, and the workstation or network does not seem to be excessively loaded (as evidenced by the ability to open up windows via the window system menus).


12.0 Can I use a shell scrīpt to run a simulation?
Yes. Read the Simulation Execution chapter (specifically pages Simx-16 through Simx-18) in the OPNET External Interfaces Manual. The UNIX C shell scrīpt file given as an example is shown below.
#!/bin/csh
# frnet_sweq.csh: scrīpt to run frnet simulations

#S-method simulation runs
op_rumsim -net_name frnet -duration 10.0 -parm_A 50.0 -parm_B s_method
op_rumsim -net_name frnet -duration 10.0 -parm_A 100.0 -parm_B s_method
op_rumsim -net_name frnet -duration 10.0 -parm_A 150.0 -parm_B s_method

#T-method simulation runs
op_rumsim -net_name frnet -duration 10.0 -parm_A 50.0 -parm_B t_method
op_rumsim -net_name frnet -duration 10.0 -parm_A 100.0 -parm_B t_method
op_rumsim -net_name frnet -duration 10.0 -parm_A 150.0 -parm_B t_method

Important: remember to make the scrīpt file executable before attempting to run it. For the above example, one should type at the command line (UNIX prompt):
chmod +x frnet_seq.csh


13.0 What are the OPNET programs and scrīpts and where are they documented?
Listed below are the OPNET programs and scrīpts along with brief synopses. For more detailed descrīptions including general and program-specific attributes, see the Program Descrīptions chapter (Prog) of the External Interfaces Manual.

Program Name

Synopsis

m3_binin

Program that adds trace info to OPNET model code (not a stand-alone program).

m3_bintype

Utility to determine binary type of MIL3 programs in your path.

m3_clrtmp

Utility that removes all files from <$HOME>/op_admin/tmp (safer than rm *).

m3_comptype

Prints out a string describing host environment, including the computer manufacturer, CPU architecture, and operating system.

m3_cvanim

Utility that performs conversion between animation scrīpt and history files.

m3_edicon

Utility for creating or modifying icons used within M3UI-based programs.

m3_edkey

A graphical utility for defining M3UI logical keys in terms of specific key combinations.

m3_edmap

An M3UI-based, FLS-controlled application for creating or modifying maps in the Network Editor.

m3_flsd

Program that runs as a daemon process, issuing execution permits to FLS-controlled applications.

m3_flse

Program that is executed as a background process by FLS-controlled applications, releasing execution permits back to the FL Supervisor upon exit of the applications.

m3_manfile

Utility that performs management operations related to the tracking and identification of OPNET model files, including file location, locks, security protection/registration, and header contents.

m3_manfls

Utility that performs management operations for the FLS.

m3_mkema

Utility that compiles and links an application program that invokes functions from the Ema library.

m3_mkorg,(Radio only)

Utility that generates an orbit coordinate dataset for a satellite node, based on a specified set of orbital elements.

m3_prtext

Utility that formats an ASCII text file into a Postscrīpt print output file, spools the resulting file to a Postscrīpt output device.

m3_vanim

An M3UI-based, FLS-controlled application for viewing animation flows from an executing simulation or an animation history file.

m3_vuerr

Utility that prints out function stack traceback and other program error information. The error information is extracted from an error log maintained by programs supplied by MIL 3 or based on MIL 3 object code libraries.

m3_vuorb,(Radio only)

An M3UI-based, FLS-controlled application for viewing satellite orbits in 3-D projections.

opnet

An M3UI-based, FLS-controlled application for editing and viewing OPNET models, executing simulations, and analyzing simulation output results.

op_cvmod

Utility for converting an OPNET Release 2.5 model into a Release 3.0 model.

op_cvos

Utility that converts the contents of a scalar ouput file (file type suffix ".os") into a user-editable ASCII text file as well as the reverse conversion.

op_install

Provides a method for automating the OPNET installation procedure.

op_mko

Utility that translates a process model into C code form, and compiles it into object code form. This utility also compiles pipeline stages and external code files.

op_mksim

Utility that binds a simulation together from its components: the simulation object code file, the associated model archive, and the simulation kernel libraries.

op_newuser

Prepares a user account's home directory (<$HOME>) for OPNET use.

op_prmodel

Utility program to display useful summary information about a node or link model.

op_runsim

Program to run OPNET simulations.

op_techsup

Utility scrīpt that displays useful info about MIL 3 Technical Support, and allows you to print out various technical support forms.


14.0 I am ready to begin designing at the process model level, where should I start?
Below is a summary of the first 15 pages of the 120 page Process Domain Definitions (Prdef) Chapter (Modeling Manual, Volume 1).

Queues and processors (hence forth referred to as QP) offer essentially the same capabilities with regard to their general behavīor and most of their physical resources. However, queue modules provide special support for organized packet storage by allowing users to define internal subqueues in which packets can be inserted and sorted, and from which packets can be extracted according to a general, user-defined method.

A process is an instance of a process model defined with the Process Editor.

...processes are driven by events. When an event is actually delivered to a process, it is termed an interrupt, ... the process is said to be interrupted which means that it is invoked to allow it to take some action in response to the interrupt.

A process follows an alternation cycle of invocation and rest periods.

A process always begins the simulation in a resting mode, waiting to be invoked; a process that is waiting in this condition is said to be blocked.

At the moment when a simulation begins, each QP hosts only one process that is automatically created by the Simulation Kernel. This process, termed the root process, is an instance of the process model designated in the QP's "process model" attribute.

Can use root process as the only process, but it will be complex, therefore consider multiple processes. The latter approach also improves modularity.

Processes within a QP module create new processes to be associated with the QP module by calling the Kernel Procedure (KP) op_pro_create().

Root processes are created by the Kernel and dynamic processes are created by other processes.

Parent processes CAN be destroyed BEFORE their child processes.

Note that a process is capable of creating child processes of any type (i.e., based on any process model), including its own or the type of its parents; however, a complete list of child process models that it intends to instantiate must be declared prior to simulation.

Shared Memory Architecture (Communications mechanisms)
1. QP-level Shared Memory (also called module memory)
...it is up to the processes within the QP to decide how much memory is necessary and when it should become available. The processes are therefore responsible for allocating the block of shared memory.
Relevant KP's:
op_prg_mem_alloc() - performs memory allocation
op_pro_modmem_install() - sets shared memory area's address
op_pro_modmem_access() - gets shared memory area's address

In practice, a shared memory block is usually (but not necessarily) installed only once and this installation is performed by the root process when it is invoked for the first time.

2. Parent-to-child Shared Memory
The Kernel maintains an independent shared memory block for each parent-child pair in the system.
-Unlike QP-level shared memory, however, parent-to-child memory may only be installed once for each parent-child pair, when the child process is created with the KP op_pro_create().
-A process may obtain the address of the memory that it shares with its parent process by calling the KP op_pro_parmem_access().

3. Argument Memory
Communication between processes is often required at a time that one process transfers control to another by invoking it with the KP op_pro_invoke(). To support this type of information passing, op_pro_invoke() accepts a general memory address as an argument and makes this address available to the invoked process.

Operations on Dynamic Processes
When a process model is created, it is implicitly incorporated into the process hierarchy of the process that created it. There is no way to create a process in another QP than that of the current process.

process handle - the special data item returned by op_pro_create()
- variable declared by the data type Prohandle
- uniquely identifies a process, not only within a process
hierarchy, but within the entire modeled system (i.e. across all QP's)
- can also be obtained via op_pro_self(), op_pro_parent(), or op_pro_root()

Two other forms of process identification are provided, but neither is necessary to use the KP's that affect processes.
1. Process ID - can be obtained via op_pro_id()
- cannot recur within same simulation (i.e. are unique)
- used to represent processes' information output from the OPNET debugger (ODB)
2. Process tag - user-supplied string that can be assigned to a process at any time
- used only to identify processes or report special information about them as part of the output of the ODB command promap.

op_pro_destroy() - any dynamic process can be destroyed
- can be applied to other dynamic process or by a dynamic process to itself.

Regardless of the method by which a dynamic process is destroyed, the Simulation Kernel always provides it with an opportunity to perform a sequence of final actions via a special section of the process model called the Termination Block.
Characteristics of the TB:
- typically contains statements that deallocate dynamically allocated memory that is referenced within the process state variables.
- can be used to record final values of collected statistics
- can be used to notify other processes that may be affected by its destruction
- should not contain any function definitions.
- should not contain any variable declarations.

op_pro_invoke() - supports process-to-process invocation, i.e. allows one process that currently controls the thread of execution to cause another process to temporarily take control.

- process invocation does not support recursion; i.e. a process that is suspended due to having called op_pro_invoke() may not itself be invoked again until it has resumed control of the thread of execution and subsequently blocked.

- limitation on recursion applies only to process instances and NOT to process models, i.e. it is possible for distinct instances of the same process model to invoke each other.

Parent Process vs Invoking process
- a process' parent process is the one that created it and therefore a process can have only one parent (root has no parent).
- each process, including the root, may be invoked by any other process in the same process hierarchy, and different processes may even invoke it during the same event.

Interrupt Steering
When an interrupt occurs for a QP, the Simulation Kernel must make a decision concerning which process will first be invoked to handle the interrupt. The most general way to manage situations where interrupts must receive initial handling by different processes, is to create a dispatcher process that decides which process to invoke. Most often, the dispatcher process is the root process since it receives interrupts by default.

Instead of using a dispatcher process, can use two KP's that request that the Kernel automatically invoke a particular process based on the type of interrupt or based on the input on which an interrupt arrives. op_intrpt_type_register() - supports steering based on interrupt type (excluding interrupts of type self, process, and procedure).
op_intrpt_port_register() - provides additional specificity regarding the input stream or input statistic associated with the interrupt.
If both mechanisms are used, port registration has precedence over type registration.

Local Process Resources
The QP object provides the processes that it contains with certain resources that are implicitly part of each process' environment.
I/O Streams
- Packet Streams are objects that exist in the Node Editor and are used to connect modules together.
Input streams accept packets from two sources:
1. packet stream objects.
2. remote delivery service provided by op_pk_deliver() and related KP's.

op_intrpt_strm() - may be called by a process to determine which input stream received the new packet.
op_pk_get() - called by a process to obtain the earliest arriving packet that remains in an input stream of its QP (must reference appropriate input stream index).
op_strm_pksize() - returns number of packets remaining in the input stream.

Output streams support communication of packets via the KP's op_pk_send(), op_pk_send_delayed(), op_pk_send_forced(), and op_pk_send_quiet().

Output and input streams may also be referenced by the stream accessing mechanism.


15.0 How do I trouble-shoot process model compile-time errors and simulation run-time errors?

  • Examine the trouble-shooting chapter (Chapter Tsh of the Tutorial Manual).
  • Use the opnet debugger. The debugger is extensive, but here are some hints.
    - If you're using the command line mode of the debugger (instead of the M3UI), type "help" for a command summary.
    - Other good commands are: objmap all, objid, tstop, cont, objprint or attrget, hist, and quit
    - To learn more about running the OPNET Debugger (ODB), read through Simx-22 to Simx-140 of the External Interfaces Manual.
  • Use the Diagnostic Block - My understanding is that code that is contained in this block is only executed when the debugger is enabled. (You should verify this...)
  • Use the m3_vuerr command to see the function stack. The stack "builds downward" so the function which was executed last, will appear at the bottom. In order for procedures that you create to appear, you must include FIN, FRET, and FOUT statements.
  • 16.0 What's the difference between State Variables and Temporary Variables?
    According to page Bpt-15 of the Tutorial manual:
    "State variables are persistent and private. That is, they retain their value between invocations of the process model and are maintained independently for each process in the system. Temporary variables retain their values only until control is returned to the Simulation Kernel when the FSM rests in an unforced state."