时隔将近三年,终于分co了

从提交PR申请今天,已经过去了将近三年时间!今天收到IMMI的邮件,要求补无犯罪记录证明和全家体检,其实这两项早在疫情前一个月我们提交申请的时候就已经完成,但是因为有时效性,只能重新补。 2019年底,眼看着马上要审理我们的case,国内突发疫情,澳洲移民局直接把中国所有的cases都hold on了。后来疫情蔓延至全球,澳洲关闭边境,所有offshore的cases都暂停。今年澳洲完全放开国门,前几个月大选换了总理,终于开始加速审理我们这些被滞留的cases,这一晃已经三年时间。 这三年深刻影响了每一个人,全球化停止了,随着各国民族主义的崛起,世界已经不再友好,一切都已经回不去了。而也正是在这三年时间,我静下来(重)读了很多书,从文学到中国文化、从历史到政治哲学,因为拥有科学上网的能力,能看到未删减的图书,得以获得信息全貌,逐渐形成自己牢固的思想。 今天已经预约体检,并申请了无犯罪记录证明,后续按部就班完成各项事宜,希望这次真的Granted Directly

September 25, 2022

依赖注入简单易懂的详解

之前记录的依赖注入太复杂,今天认真看了《C#高级编程》里面对依赖注入的解释,明显就简单很多。 1、什么是依赖注入?为什么需要它? 更快的开发周期需要单元测试和更好的可更新性。更改一些代码,不应该导致意外位罝出现错误。创建更模块化的、减少依赖项的应用程序,有助于防止这种错误。 依赖注入(Dependency Injection,DI)允许从类的外部注入依赖项,因此注入依赖项的类只需要知道一个协定(通常是C#接口)。这个类可以独立于其对象的创建。 依赖注入更便于进行单元测试。在单元测试中,只需要测试特定的类,需要的依赖项可以替换为包含测试数据的特殊模拟类。 还可以使用不同的实现区分生产模式和开发模式。例如,在生产过程中,可能需要访问SAP服务器,或者可能需要对所有开发人员都无法访问的特定活动目录进行身份验证。在开发的每个调试会话期间,都不希望等待成功的身份验证,也不需要SAP服务器开发用户界面。在这里,可以给相同的协定使用不同的实现来模拟身份验证,可以使用测试数据而不是访问SAP服务器。 也可以在不同的平台上使用不同的实现。例如,可以创建一个.NET标准库,在其中为UWP、WPF和Xamarin应用程序实现所有公共功能,并可以根据需要重定向到特定于平台的代码。 依赖注入还允许用自定义特性替换标准功能。ASP.NETCore和EntityFrameworkCore主要基于依赖注入。这些技术使用数百个协定一例如,来找到控制器,将HTTP请求映射到控制器,将接收到的数据转换为参数,将数据库表映射到实体类型等。使用不同的实现,可以轻松地替换自定义功能。 DI是敏捷软件开发和持续软件交付实践的核心模式。 依赖注入不需要依赖注入容器,但该容器有助于管理依赖项。 依赖注入容器管理的服务列表越来越长,就可以看到它的优点。ASP.NETCore和EntityFrameworkCore使用Microsoft.Exteosions.DependencyInjection作为容器来管理所有依赖项,以此管理数百个服务。 尽管依赖注入和依赖注入容器在非常小的应用程序中会增加复杂性,但是一旦应用程序变得更大,需要多个服务,依赖注入就会降低复杂性,并促进非紧密绑定的实现。 2、没有依赖注入 下面的示例没有使用依赖注入;稍后将更改它,以使用依赖注入。所用的服务实现在类GreetingService中定义。这个类定义了返回字符串的Greet方法: public class GreetingService { public string Greet(stringname)=>$"Hello,{name}"; } 类HomeController使用这个服务。在Hello方法中,实例化了GreetingService,并且调用Greet方法: public class HomeController { public string Hello(string name) { var service = new GreetingService(); return service.Greet(name); } } 下面看看Program类的Main()方法。其中实例化了HomeController,调用Hello方法,将结果写入控制台: static void Main() { var controller=new HomeController(); string result=controller.Hello("Stephanie"); Console.WriteLine(result); } 程序运行时,把Hello,Stephanie写入控制台。这有什么问题吗? HomeController和GreetingService是紧密稱合的。要用不同的实现取代HomeController中的GreetingService并不容易。 这个GreetingService是一个返回字符串的简单服务。在正常的应用程序中,场景通常更复杂。例如,GreetingService可能使用HTTP请求访问API服务,或者使用EntityFramewoik访问数据库。可能要更改在一个地方使用的服务,而不是査找使用服务的所有位置。 另外,为HomeController创建单元测试时,也会测试GreetingService。在单元测试中,希望仅测试单个类的方法的功能,而不需要使用其他依赖项。在HomeController中,不能很容易地为单元测试替换GreetingService。从技术上讲,为单元测试替换GreetingService方法的内部实现是可能的。使用Microsoft Fakes框架,可以通过替换GreetingSeivice类的特定方法和属性,来更改方法的实现。这个变更是在单元测试中定义的,并且只有在单元测试运行时才会发生:通过另一个方法来“伪造”原来的方法。其实这有更好的方法:使用依赖注入。 下一节将介绍如何更改此实现,以使用依赖注入。 3、使用依赖注入实现 下面使HomeController独立于GreetingService的实现。为此,可以创建接口IGreetingService,它定义了HomeController所需的功能: public interface IGreetingService { string Greet(stringname); } GreetingService现在实现了接口IGreetingService: public class GreetingService:IGreetingService { public string Greet(stringname)=>$"Hello,{name}"; } HomeController现在只需要对一个对象的引用,该对象实现了接口IGreetingService。它用HomeController的构造函数注入,分配给私有字段,通过方法Hello来使用: public class HomeController { private readonly IGreetingService _greetingService; public HomeController(IGreetingService greetingService) { _greetingService=greetingService?? throw new ArgumentMullException(nameof(greetingService)); } public string Hello(stringname) => _greetingService.Greet(name); } 在这个实现中,HomeController利用了控制反转的设计原理。HomeController没有像以前那样实例化GreetingService。相反,定义由HomeController使用的具体类的控件在外部给出;换句话说,控制是反转的。 ...

September 9, 2022

https请求报错block:mixed-content

开发过程中,可能会遇到在https里面请求内容的时候报混合调用的错误,一般是因为网站启用了https,但是老的网页链接和请求中还有使用http的情况。接口会错block: mixed-content,图片则会报错:Mixed block。解决的办法有两种。 第一种, 页面的head中加入下面代码(将调用的http请求升级成https请求并调用): <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> 这是最方便快捷的,也是很有效的办法。 第二种, 如果是接口,可以通过本地后端(将本地后端当成service中间层),从后端再去调用其他服务器的http请求。

September 5, 2022

如何在.NET Core3.1使用log4net

1、添加log4net程序集 通过nuget添加,可以直接在程序集引用里搜索nuget包安装,也可以通过命令行安装,这里使用命令行:PM> Install-Package log4net 2、添加log4net.config配置文件 创建一个log4net.config文件,保存在项目的根目录: <log4net> <root> <level value="ALL" /> <appender-ref ref="console" /> <appender-ref ref="file" /> </root> <!--File Appender--> <appender name="file" type="log4net.Appender.RollingFileAppender"> <file value="main.log" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="5" /> <maximumFileSize value="25MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %level %logger - %message%newline" /> </layout> </appender> <!--Console appender--> <appender name="console" type="log4net.Appender.ManagedColoredConsoleAppender"> <mapping> <level value="INFO" /> <forecolor value="Green" /> </mapping> <mapping> <level value="WARN" /> <forecolor value="Yellow" /> </mapping> <mapping> <level value="ERROR" /> <forecolor value="Red" /> </mapping> <mapping> <level value="DEBUG" /> <forecolor value="Blue" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionpattern value="%date [%thread] %-5level - %message%newline" /> </layout> </appender> </log4net> 3、加载log4net的配置的并创建相关实例 这里有两种办法,第一种最简单 ,这种情况适用于控制台应用程序,简单明了,直接用加载到程序集中: ...

August 23, 2022

亲子沟通提示:重视亲子沟通

一、耐心、认真地去“听”你的孩子讲话 有时当妈妈一边炒菜一边盛饭时,孩子在想跟妈妈说些什么时,妈妈有时是不经心地听着,有时会打断她,反而请她帮忙摆桌吃饭,但从未停下来,专心去“听”她想说的话,除非她说的话,真是什么天大的好消息(不过,这种机率低于百分之一)。 这里不是教您一定要停下手边所做的,但你可给孩子一个“确定”的时间,比如:“好,等我把饭菜摆好。”或是“再给我一分钟。“当然,最好是立即去“听”孩子要说的。 因为,你一次,二次,三次地忽略了他们后,他们便会慢慢地失去了"告诉你”的兴趣。另外,在“听”时,最好做目光接触,要孩子知道你是直的愿意听。很多时候,孩子不过想说你觉得不太要紧的事,但对他们而言,却是重要的。如果你没有经常拒绝他们,当他们真遇到困难时,自然就会地来找你谈了。 二、有些话不能说,以免伤害到孩子的感情 家长不要说一些孩子最不想听的话,即使在盛怒的时候,也要思考话语的轻重,以免伤害孩子的感情。 另外,孩子的世界与想法是和大人们不同的,当孩子很认真地告诉你什么时,你如果取笑孩子,或者有轻蔑或不相信的态度,也会伤害孩子,这样孩子以后也就不再愿意跟你谈了。 三、有意识地与孩子进行沟通,主动分享自己的感受 多与孩子说说自己的感受和以往的经历,让孩子走进自己,向孩子表达自己的期待和需求。 当然,做父母的,不需要把心中的担心向孩子表明,去增加孩子担忧的心理负担,但有时不妨主动地与孩子分享自己的心情、感受,及对事情的看法,孩子当然也就比较容易向你诉说他的心情、感受与看法了。 四、重视沟通的方法,别问一些太空洞的问题 譬如“今天如何?”“学校好吗?”也别常用,“为什么?”因为孩子会不自觉地想保护自己。以询问孩子一些有趣的、愉快的事情作为聊天的开场白。愉快的开始,能营造良好的沟通氛围,促进亲子沟通。 了解孩子的兴趣,了解现在孩子与同龄人中流行的东西 ,包括儿歌、动画片,故事书等,与孩子一起做他感兴趣的事,进行积极沟通,让孩子感受到父母对自己的关心,他会更愿意与家长沟通。 五、了解孩子的想法,理解孩子要表达的意思 由于孩子的表达能力条理性较差,因此孩子有时不能清晰表达自己 。家长要耐心等孩子把话说完,把“零散”的东西拼凑起来,准确理解孩子要表达的意思。 大部分时间,孩子只是想从他信任的成人中,确定自己的想法与做法 。所以,家长可在了解情况后,做个回答或支持。

August 15, 2022

ABP框架能力清单

ABP框架提供了一个稳定的架构用于构建企业级软件解决方案,它遵循了.NET和ASP.NETCore平台之上的最佳实践。它内置了基础架构、生产级别的模块、主题、工具、指南和文档,并尽可能地自动化开发细节和解法我们的重复性工作。 在接下来的几个小节中,我将从架构层面介绍ABP是如何完成所有这些工作。 ABP架构 ABP是一个特殊的架构,换句话说,它是一个有个性化的框架。先解释一下什么是没有个性的框架,什么是有个性的框架。 正如我在搭建架构部分所述,为搭建解决方案的基础设施需要大量决策工作;比如系统架构、开发模型、技术、模式、工具和库。 没有个性的框架,例如ASP.NETCore,这些决定大多由您决定。例如,您可以通过将UI层与数据访问层分离来创建分层解决方案,或者您可以通过直接从UI页面/视图访问数据库来创建单层解决方案。您可以使用任何库,只要它与ASP.NETCore兼容,并且您可以应用任何架构模式。无个性使ASP.NETCore在不同的场景中变得灵活和可用。但是,所有的这些都需要我们自己去做决策。 我并不是说ASP.NETCore完全没有自己的个性想法。假定您正在构建基于HTTP规范的Web应用程序或API。它清楚地定义了应该如何开发UI和API层。它还提供了一些低级的基础设施组件,例如依赖项注入、缓存和日志记录。但是,它并没有说明您的业务代码是应该要如何组建,应该使用哪些架构模式。 换句话说,ABP框架是一个有个性倾向的框架。它相信软件开发方法本质上可以更好,因此可以引导开发人员在解决方案中使用更佳的架构、模式、工具和库。 尽管ABP框架足够灵活,可以使用不同的工具和库来改变您的架构决策,但当您遵循它的实践原则时,您将获得最大的价值。请别担心,因为它为通用架构提供了良好的、行业认可的解决方案。他的架构规则将节省您的时间,提高您的生产力,并使您专注于您的业务代码而不是基础设施问题。 在接下来,我将介绍ABP所支持的四种基本架构。 领域驱动设计 ABP的主要目标是根据整洁代码原则提供一个模型来构建易维护的解决方案。它提供了一个基于DDD模式和实践的分层架构。它提供了一个分层的启动模板、基础架构以及架构应用指南。 由于ABP是一个软件框架,它专注于DDD的技术实现。本书的第3部分,实现领域驱动设计,解释了使用ABP框架构建基于DDD的最佳实践。 模块化 在软件开发中,模块化是一种拆分系统成独立模块的技术。最终目标是降低复杂性,提高可重用性,使不同的团队能够在不相互影响的情况下能并行处理不同的功能集。 ABP构建模块化有两个主要挑战: 第一个挑战是模块隔离。尽管ASP.NETCore有一些特性(例如Razor组件库)来支持模块化。但是,它仍然非常有限,因为它是一个底层通用的框架,并且仅对UI和API部分支持。另一方面,ABP框架提供了一个一致的模型和基础设施来构建完全隔离的、可重用的应用模块及数据库、领域、应用和UI层。 第二个挑战是模块之间如何通信,使之成为一个统一的应用程序。ABP为模块化系统提供常见的模型,例如在模块之间共享数据库,在模块之间通过事件或API进行通信,以及模块安装。 ABP提供了许多可在任何应用程序中使用的预构建模块。包括身份验证模块,它提供用户、角色和权限管理,同时也提供登录和注册页面。他们基本上都是可重用和自定义的。此外,ABP提供了模块启动模板,帮助您构建可重用的应用程序。这方面的一个例子可以在[第15章]使用模块化中详细介绍。 模块化非常适合管理复杂的大型单体系统。但是,ABP也可以帮助您创建微服务解决方案。 微服务 微服务和分布式架构是构建可扩展系统的公认方法。它允许不同的团队开发不同的服务并独立地对服务进行单独部署和扩展。 但是,构建微服务系统在团队开发、部署、微服务间通信、数据一致性、监控等方面存在一些重要挑战。 微服务系统是一种将不同的学科、方法、技术和工具结合在一起来解决独特问题的解决方案。每个微服务系统都有其要求和限制。每个团队都有一定程度的专业知识、知识和技能。 ABP框架从一开始就被设计为与微服务兼容。它在具有事务支持的微服务之间提供了一个用于异步通信的分布式事件总线。它还提供C#客户端代理来轻松调用远程服务的RESTAPI。 所有预构建的ABP应用模块都经过设计,以便您可以将它们转换为微服务。ABP也提供了详细指南来解释如何创建微服务兼容模块。这样,您可以从模块化单体开始,然后将其转换为微服务解决方案。 ABP团队准备了一个使用ABP框架构建的开源微服务参考方案。它演示了如何使用API网关、微服务间通信、分布式事件、分布式缓存、多个数据库提供程序和多个UI应用程序。它还包括在容器上运行解决方案的Kubernetes和Helm配置。详情参阅。 SaaS/多租户 软件即服务(SaaS)是一种广泛使用的架构模式。以下是多租户系统的典型特征: 在租户之间共享硬件和软件资源。每个租户都有用户、角色和权限。在租户之间隔离数据库、缓存和其他资源。可以启用/禁用每个租户的应用功能。可以为每个租户自定义应用配置。 ABP框架涵盖了所有这些要求甚至更多。它可以帮助您优雅地构建多租户系统,而您几乎感受不到多租户的存在。 到目前为止,我已经介绍了四种ABP基本架构模式。此外,ABP还提供了启动模板来轻松创建新的解决方案。 启动模板 使用ASP.NETCore自带的模板创建新解决方案时,只能获得单个项目,没有分层和依赖关系。您通常会花费大量时间来设置解决方案架构,包括安装工具和做配置基本。 ABP框架提供了一个架构完善、分层清晰、预配置和生产就绪的启动解决方案模板。以下截图显示了当您运行ABP框架创建的启动模板时的初始UI: 下面谈谈这个启动模板:解决方案已经做好逻辑分层。一些预构建模块,例如Account和Identity模块。已经实现了基本的登录、注册、用户和角色管理以及其他一些标准功能。预先配置好的单元测试和集成测试项目。一些管理数据库迁移以及使用HTTPAPI实用工具。 ABP的启动模板带有UI框架和数据库提供者的多个选项。你可以从Angular、Blazor或MVC(RazorPages)选择一个作为UI框架,或者使用EntityFrameworkCore或MongoDB作为数据库提供者。 ABP基础设施 ABP基于您已经了熟悉的工具和库。它没有引入新的对象关系映射器(ORM),而是使用EntityFrameworkCore。同样,它使用Serilog、AutoMapper、IdentityServer和Bootstrap,而不是自己创建类似的功能。它提供了一个解决方案集成了这些工具,并实现了常见的业务应用需求。 ABP框架按照约定简化了异常处理、验证、授权、缓存、审计日志和数据库事务管理,并允许您在需要时进行精细控制。 ABP与IdentityServer很好地集成,基于cookie和令牌的身份验证以及单点登录。它还提供了一个详细的、基于权限的授权系统来帮助您控制应用的权限。 同时也提供了后台作业、BLOB存储、文本模板、审计日志和本地化等常见组件。 在UI部分,ABP提供了完整的UI主题系统,帮助您开发无主题的模块化应用,并轻松为应用程序安装主题。它还在UI方面提供了大量功能和帮助程序,以消除重复代码。 社区 当您在公司中搭建解决方案架构时,除了开发人员没有人会去研究它。然而,ABP拥有一个庞大而活跃的社区。他们使用相同的架构和基础设施,应用类似的最佳实践,并以类似的方式开发他们的应用程序。当您遇到基础架构问题或想要获得解决业务问题的想法或建议时,这具有很大的优势。由于ABP开发人员正在应用相同或相似的模式,因此在另一个解决方案中也更容易理解他人的代码。 ABP框架自2016年以来一直存在并不断发展。截至2021年底,它在GitHub上拥有7,000多颗星、220多位贡献者、22,000多个提交、5,700个已关闭问题,以及在NuGet上超过4,000,000次下载,超过110多个专业和次要版本。我的意思是,它是一个成熟的、被接受的、值得信赖的开源项目。 来自ABP核心团队和社区的贡献者,有着不断持续输出的文章,视频教程和ABP社区网站可供大家学习。

July 8, 2022

ASP.NET Core应用程序配合web服务器的工作原理

这段时间开始阅读.NET Core内部技术的书籍,发现了很多之前忽视的技术,果然还是得通过阅读,才可以加深对技术的理解。今天了解到了ASP.NET Core应用程序配合web服务器的工作原理。 Web服务器(如IIS)通过一个配置的端口与完全解耦的可执行文件通信,并将传入的请求转发给控制台应用程序。这个控制台应用程序由一个必要的HTTP模块从US进程空间生成,该HTTP模块使IIS能够支持ASP.NETCore。要将ASP.NETCore应用程序托管到其他Web服务器(如Apache或NGINX)上,必须有类似的扩展模块。 这里值得注意的是,图中给出的ASP.NETCore架构与最初的架构(即2003年将ASP.NET1.x与IIS连接起来的架构)有类似之处。当时ASP.NET有自己的工作进程,通过命名管道与IIS通信。后来,ASP.NET工作进程的任务被内置的IIS工作进程(w3wp.exe)接过,从而有了应用程序池的概念。在ASP.NETCore中,两个独立的、无关的、完全解耦的可执行文件进行通信,但是ASP.NET可执行文件并不是一个多租户工作进程,而只是托管一个基本的异步服务器来处理传入请求的应用程序的一个实例。

June 28, 2022

微软官方.NET 升级助手:可以将NET Core 3.1项目升级为.NET 6

装并运行升级助手 在命令提示符下,运行以下命令安装升级助手工具: dotnet tool install -g –add-source ‘https://api.nuget.org/v3/index.json’ –ignore-failed-sources upgrade-assistant 现在,你已准备好在解决方案或项目上运行该工具。让我们先分析项目的包依赖项。 导航到包含项目或解决方案的目录,并运行以下命令: upgrade-assistant analyze 将此页命令上的 更改为解决方案或项目文件的路径和名称。 上一个命令将生成 SARIF 格式的报告,该报告基于 JSON 格式,可使用以下查看器查看: 任何文本编辑器。 VS extension for SARIF Viewer for a richer experience. 分析项目依赖项后,运行以下命令以开始升级项目: upgrade-assistant upgrade 该工具还支持其他选项。有关完整的工具使用情况信息,请参阅 GitHub 上的 升级助手自述文件。

June 21, 2022

伯林的《两种自由概念——消极自由和积极自由》

最近读完叶礼庭的《伯林传》,进一步理解了伯林的很多思想,伯林是二十世纪最重要的思想家和哲学家之一,也是自由主义大师,他提倡的保护消极自由才是自由主义者的核心本质,任何一位要叙述自由都离不开他。 “20世纪的思想家中,以赛亚·伯林可以说是既无做大师的抱负,也自认没有下过大师的苦功,却在有生之年成为当之无愧大师的人。对那些寻求以思想改变世界的思想家来说,伯林是成功的,也是幸运的。” “在强调自由高于平等、个性高于群体的冷战式自由主义转向中,伯林对消极自由的辩护是一种时代精神;他是当代多元主义,特别是从价值多元主义到文化多元主义的最有力倡导者,而这种多元主义已经成为晚近实践哲学的纲领。” “伯林一生最重要的工作之一,就在于审视为什么独创性的、书斋式的哲学或社会思想,用于改造人类现实时,会导致灾难性的结果。用大观念的社会历史后果来检视大观念,暴露出大观念的残酷本性,揭示人的一种现代境遇,在这方面,伯林是无与伦比的。” 这几天又把《两种自由概念——消极自由和积极自由》大概看了一遍,做如下读书笔记。 这篇文章是伯林的一次演讲,通篇核心的思想是:要把自由拆分为消极自由和积极自由;要保护消极自由,因为消极自由是自由主义者的真正政治内核;要警惕积极自由,因为积极自由是亦导致了法西斯主义和共产主义的现代极权的根源。 一个社会,除非至少遵循由下列两个互有关连的原则,否则,绝对无法获得自由 ,这两个原则是:第一,惟有“权利”(rights)能成为绝对的东西,除了权利以外,任何“权力”(power)都不能被视为绝对 ;惟有如此,所有的人才能具有绝对的权利,去拒绝从事非人的行为,而不论他们是被什么权利所统治。第二,人类在某些界限以内,是不容侵犯的,这些界限不是人为划定的,这些界限之形成,是因为它们所包含的规则,长久以来,就广为众人所接受,而人们也认为:要做一个“正常人”,就必须遵守这些规则 ;同时,人们认为如果违犯这些规则,就是不人道、或不正常的行为;对于这些规则而言,如果我们认为它们可以由某个法庭、或统治团体,用某种正式的程序,予以废止,是荒谬的想法。当我说某一个人是个“正常人”的时候,我所指的意思中,也包含了“他不可能破坏以上这些规则,而丝毫不感到嫌恶、或不安”。 导论 社会与政治理论的研究,本就发源于人类意见之分歧,而且因为意见分歧,相关的研究才会不断滋生繁茂。 有人可能会以下面这个理由,来质疑我的说法:即使在一个由圣徒般的无政府主义者组成、对终极目的不可能有冲突看法的社会里,政治问题,诸如宪法或立法的问题,也仍然会出现。但是,这项反对意见的理由是错误的。人们对于“目的”的看法,一旦趋于一致,剩下来的,就是“手段”的问题,而手段问题只是技术性(technical)的问题,不是政治性的问题。 换句话说,这些问题可以由专家或机器来解决,就像是工程师或医生之间的争论一样。这就是何以若有人信仰某种巨大无比、旋乾转坤的现象,例如“理性的最后胜利”、或“无产阶级革命的最后胜利”等,便也必然相信一切政治或道德问题,都可以转变为技术上的问题 。圣西蒙的名言:“用‘管理事情’来代替‘治理人们’”,以及马克思预言:国家的凋萎,就是真正人类历史的开始,所指的都是这个意思。 有人认为,这种有关社会和谐的完美状态之类的玄想,只是一种无聊的幻想,于是称之为“乌托邦式”的看法。令人惊讶,因为在近代历史上,也许从不曾有这么多人——包括东方人和西方人——的观念以及生命,被狂热的社会与政治学说所改变,有时甚至被猛烈翻搅。 相当危险,因为如果应该注意观念的人,也就是说,训练有素、能对观念作批判性思考的人,忽视观念的话,观念有时候就会形成一股不受拘制的动力,对广大人群产生无可抗拒的影响力,这些力量会变得极为暴烈,不是理性批判所能左右。 一百多年以前,德国诗人海涅(Heine)就曾经警告法国人,不要低估观念的力量:一位教授在他宁静的书房里孕育出来的哲学观念,可能毁灭一个文明 。海涅认为康德的巨著《纯粹理性批判》(Critiqueof Pure Reason),是一把处决了欧洲“自然神论”的宝剑;卢梭的著作在罗伯斯庇尔的手中,变成一种沾满血渍的武器,摧毁了欧洲的旧体制。 政治言论、观念和行为的背后,都有某些使人产生不同意见问题,为其背景。我们若不去了解这些背景,就无法了解这些政治言论、观念或行为。因此,除非我们理解我们这个世界的重要问题,我们可能就无法清楚地认识我们自己的态度和活动。 这其中最大的一个问题,便是两种思想体系之间的公开战争,这两种思想体系为古老的政治中心问题,即:服从与强制问题,提出了互相冲突的不同答案。 这些政治中心问题大抵是:“我(或任何人)为什么要服从别人?”“我为什么不能按照我喜欢的方式去生活?”“我必须服从吗?”“如果我不服从?我会不会受到强制?谁来强制?强制到什么程度?用什么名义强制?为什么?” 关于强制力的许可限度,这个问题,当今世界人们持有互相对立的看法,每一种看法都有很多信服者。因此,在我看来,这问题的任何一个层面,都值得加以检讨。 一、两组不同的问题(主要探讨消极自由) 在人类历史上,几乎每一个道德家都颂扬自由。正如“幸福”、“善良”、“自然”、“实相”一样,“自由”这个名词的意义也很模糊,所以,几乎能够容纳绝大部分的解释。我并不想去探讨这个变幻莫测的字眼的起源,也不打算去研究思想史家为它所提出来的两百多种意涵。我所要探讨的,只是这个名词在两个层面上的意义——但却是最重要的两个意义,各自背后都包含了许多历史事件。 同时,我敢说未来也有许多历史事件,将会与这两种意义下的“自由”,发生关连。 我将和前此许多人一样,把我所要探讨的第一种“自由”(freedomor liberty,我用这两个词眼来表示同一种意思)的政治意义,称为“消极的”(negative)自由 ;这种“消极的自由”,和针对以下这个问题所提出的解答有关,亦即:“在什么样的限度以内,某一个主体(一个人或一群人),可以、或应当被容许,做他所能做的事,或成为他所能成为的角色,而不受到别人的干涉?” 第二种意义的自由,我称之为**“积极的”(Positive)自由** ,则和以下这个问题的答案有关:“什么东西、或什么人,有权控制、或干涉,从而决定某人应该去做这件事、成为这种人,而不应该去做另一件事、成为另一种人?” 这两个问题的答案,虽然可能有重叠之处,但却显然是不同的问题。 1、“消极”自由的概念 正常的说法是,在没有其他人或群体干涉我的行动程度之内,我是自由的。 在这个意义下,政治自由只是指一个人能够不受别人阻扰而径自行动的范围。我本来是可以去做某些事情的,但是别人却防止我去做——这个限度以内,我是不自由的。我是否受到压迫,其判别的准则是:别人是否直接或间接、有意或无意地,使我的希望不得实现。 在此一意义下,若我是自由的,意思就是我不受别人干涉。不受别人干涉的范围愈大,我所享有的自由也愈广。英国古典政治哲学家在使用“自由”这个字的时候,他们所指的,也就是上述这个意思。 自由的范围可能有多大、应该有多大,他们的意见并不一致。他们认为不能漫无限制,因为如果这样的话,人们就可以漫无界限地干涉彼此的行为;这种“自然的”(natural)自由,也会导致社会的混乱,在这种混乱中,要不是人类的最低限度之需求,无法获得满足,就是弱者的自由,会被强者所剥夺。这些思想家认为:人类自由行动的范围,必须由法律施以限制。但是,他们同样又认为 ,尤其是英国的洛克与穆勒、以及法国的康斯坦和托克维尔等自由主义思想家认为:个人自由应该有一个无论如何都不可侵犯的最小范围,如果这些范围被逾越,个人将会发觉自己处身的范围,狭窄到自己的天赋能力甚至无法作最起码的发挥 ,而惟有这些天赋得到最起码的发挥,他才可能追求、甚至才能“构想”,人类认为是善的、对的、神圣的目的。 2、自由主义者的良心问题 我认为,西方自由主义者之所以会感到良心不安,并非由于他们相信人类追求的自由 ,随其社会或经济环境的不同,而有所分别,而是由于他们相信少数人之所以拥有自由,是因为他们剥削了大多数没有自由的人、或至少是对大多数人缺乏自由的事实视若无睹,而得来的。 但是, 我们如果仅以这种说法,把用语搅混的话,却得不到什么好处。为了要避免显著的不公平、或者到处可见的悲苦情况,我随时愿意牺牲我的一部分自由、或全部自由;我可以情愿而自由地这么做:然而,为了正义、平等、或同胞爱,我牺牲的是自由。在某种情况下,我如果不做这样的牺牲,我的内心将会充满、而且理当充满罪恶感。 但是, 一种牺牲不会增长被牺牲的东西,无论哪种牺牲,在道德上有多大需要或补偿,都是如此。一件东西是什么,就是什么:自由就是自由,不是平等、公平、正义,不是文化,也不是人类的幸福、或平静的良心。如果我自己、或我的阶级、或我的国家的自由,是建立在许多人的不幸上面,则促成此事的体制就是不公正、不道德的。 但是, 如果我为了减少不平等的耻辱,因而去削减、或者丧失我的自由,却又没有能借此具体地增益别人的个人自由,那么,所发生的是自由的“绝对丧失”(abso1uteloss)。这虽可以由正义、或幸福、或和平的收获来补偿,但是丧失的却毕竟是丧失了;如果我们硬要说:我虽然失去我个人的、“自由主义式”的自由,但是别种形式的自由,即“社会自由”或“经济自由”,却增加了,则这样的说法,不啻是混淆价值。 3、限制自由的最低界限 不过,为了使某些人获得自由,有时候其他人的自由,必须削减,这一点仍然没错。问题是:在什么原则下,我们才能如此削减某些人的自由?如果自由是神圣而不可侵犯的价值,那么,我们将找不到任何这样的原则。 无论如何,在实际上,这些互相冲突的规则或原则中,有些必须让步:这种让步并不一定都基于某些可以明确陈述的道理,更不是都能概化成规则、或普遍的公理。 无论如何,我们仍然必须找到一个实际的妥协办法。 对人性抱持乐观态度,并且相信人类利益能彼此和谐的哲学家,诸如洛克或亚当斯密,以及某种心情下的穆勒,他们相信社会的和谐与进步,与为个人保留一个不容国家、或其他权威任加干涉的广大私生活范围,是可以相容的。 霍布斯,以及其他一些和他持相同看法的人,特别是一些保守、反动的思想家,则主张:为了避免人类的互相残杀,因而使社会生活变成一处丛林或荒野,我们必须建立一个更高一等的安全防卫,使人类能够各安其位;基于这个缘故,霍布士主张加强中央控制的范围,减少个人自由的范围。 无论如何,以上这二派,都一致认为:人类生活的某些部分必须独立,不受社会控制。若是侵犯到了那个保留区,则不管该保留区多么褊狭,都将构成专制。 自由与隐私权最雄辩的维护者康斯坦,忘不了法国雅各宾党人的独裁,他宣称说:至少宗教、意见、表达、财产的自由,必须受到保障,不容横加侵扰。杰佛逊(Jefferson)、柏克、潘恩(Paine)、穆勒等人,也都各自列举了一些不同的个人自由,但目的都同样是不使权威过度扩张。 我们必须维持最低限度的个人自由,才不致于“贬抑或否定我们的本性”。我们无法享有绝对的自由,因此必须放弃某些自由,以保障其他自由。 但是完全的自我放弃,便是自我挫败。那么,这个最低限度应该是什么呢?如果我们抛弃它,就是违逆了我们的人性本质—这就是最低限度的自由。 然则,所谓人性本质却又是什么东西?它又隐含了哪些标准呢?对于这个问题,人们一向争论不休,将来也仍会永远争论不休。无论这个不准干涉的范围,是根据什么原则来划定的,无论它是根据自然法、或自然权利、或功利原则、或某种康德所谓的无上命令(categorieal imprative)、或社会契约的神圣不可侵犯性、或是人类用来厘清并支持他们的信念的其他任何概念,来订定的,在这种意义之下,自由都是“免于……的自由”(liberty from…);也就是:在变动不居的、但永远可以辨认出来的界限以内,不受任何干扰。 一位最有名的自由斗士,曾经说过:“惟一能以自由为名,而当之无愧的,是用我们自己的方式,追求我们自己利益的自由。”果真如此的话,我们是否有理由强迫任何人做任何事? 穆勒认为我们毫无疑问地具有这种权利。既然正义的意义,是每个人拥有最低限度的自由,我们当然有必要对其他的人加以约束,必要时还可以强制执行,以使他们不至于剥夺在何人最低限度的自由。其实法律的整个功能,也就是预防这种冲突:在这种情况下,国家就成为拉萨尔(Lassalle)所讥讽为守夜者、或交通警察之类所代表的功能。 4、穆勒的自由理念 为什么穆勒会认为保障个人自由,是如此神圣的事呢?他在他有名的论文中表示:除非人们得以按照他们的希望,“按照只与他们自己有关的方式去生活”,否则文明就不会进步,真理也不会显现,因为我们会缺少自由的观念市场 ;人类的自动自发、原创力、天才、心智能力、道德勇气等,也将无从发挥。社会将会被集体的平庸所压抑。 对一个人施以威胁说:除非他屈就于一种无法自己选择目标的生活,否则就要迫害他;堵塞他所有去路,而只留一扇门,那么,无论这扇门开向多么高贵的远景,无论作此安排的人,动机多么慈悲仁道,这些作法都违反了下述的真理:他是一个人,他有他自己的生活方式所有关于公民自由与个人权利的呼吁,所有对于剥削与羞辱的抗议,对于大众权威侵犯个人生活的反抗,以及向习俗和有组织的宣传对群众的操纵,所发出的抗议,都是源自于这种个人主义式的、议论纷坛的“人之概念”。 这种意义下的自由,与某几类专制政体或至少与自治(self—government)之阙如,并非不能相容。这个意义下的自由,所涉及的主要是“控制的范围”,而不是它的“来源”问题。正如一个民主社会,事实上可能剥夺一个公民在别种形式的社会里,所能享有的许多自由。我们也完全可以想见:一个具有自由心态的专制君主,可能会容许他的子民,享有相当大尺度的个人自由。这种给予他的子民享有相当大自由范围的专制君主,或许是不公正的,或许助长极度的不平等,或许不重视秩序、美德、或知识;但是,假使他不抑制人民的自由,或至少比其他政权约束得更少,那么,他就合乎穆勒的特定标准了。 ...

June 15, 2022

刘擎《伯林与自由民族主义》

摘要 本文通过讨论以赛亚·伯林的民族主义论述,分析自由民族主义的理论可能与复杂性。 作者认为,伯林的自由多元主义与文化民族主义之间具有和解包容的可能,但始终存在着深刻的紧张,因此他未能提出一套清晰的关于“自由民族主义”的规范性学说。伯林思想的内在紧张标志着自由民族主义的实践困境,而仅仅在观念层面上做出分析疏理无法克服这种困境,必须借助具体语境下的社会学分析才有可能在实践中达成自由主义与民族主义的融合。 文章在最后勾勒了当代中国在社会转型的条件下民族主义兴起的形态特征,指出了发展自由民族主义论述的必要性与困难所在。 中国的现状 民族主义思潮在当今中国社会的强劲崛起是一个显著的事实,而与此形成激烈竞争的是晚近兴起的自由主义思潮。 两者之间的紧张与冲突已经成为当前中国公共辩论中最为醒目的话题之一(李世涛主编,2002)。无论是知识分子的争论,还是互联网上的民间大众讨论,无论是对具体事件的直觉反应,还是在理念层面上的立场言说,民族主义与自由主义呈现出严重的分歧,公众意识在此出现了两极化的对垒。 在意识形态谱系的一端,民族主义被写在信念的旗帜上,发出悲壮的召唤,自由主义主张的普适价值(人权、自由与民主)经常被视为虚假的甚至伪善的;而在另一端,民族主义被钉在历史的耻辱柱上,象征着狭隘、偏激与灾难,是需要被克服与超越的蒙昧与危险的狂热情感。 在公共讨论中,人们经常会被置于一种强制性的审问与抉择:是放弃还是坚持民族主义立场?而答案似乎是如此至关重要。对激进的民族主义者来说,这是检验“爱国”与“卖国”、“忠诚”与“背叛”、“英雄”与“败类”的试金石;而对于另一方的自由主义者来说,是否能将自由主义的价值置于民族情感之上,意味着对“开放”还是“封闭”、“文明”还是“野蛮”、“和平”还是“暴力”的抉择。 在当代中国的社会转型中,自由主义与民族主义之间的紧张成为一个令人焦虑的问题。 在这样的背景下,“自由民族主义”(liberalnationalism)———这种能够使自由主义与民族主义彼此和解、甚至相互结盟的理念———对于中国知识分子具有格外的吸引力,它可能为我们的社会认同提供新的想象空间,为中国未来的发展提供新的政治文化选择。因此,考察自由民族主义的理论内涵,探讨它与中国社会转型的相关性具有格外重要的意义。 伯林的自由民族主义思想 本文试图通过对以赛亚·伯林的民族主义思想的讨论,分析自由民族主义的理论可能与复杂性,并在当代中国民族主义话语的形态特征中,讨论发展自由民族主义论述的必要性与困境。任何文化民族主义的理想,在其实践中都不得不与政治相关,其现实形态都或多或少地必须是一种“政治民族主义”。伯林的犹太复国主义本来只是追求一种“在家”的理想,却不能不为寻求家园而展开政治斗争。 伯林非常清楚地意识到这一困难。在《两种民族主义概念》的访谈中,当被问及,“怎样的政治结构才适合文化自决的新时代并且维护自由,避免有一些一触即发的流血冲突”?伯林的回应没有给出答案,而是更加突出了这个问题的严重性———“没有政治框架的文化自决恰恰是现在面临的问题……像赫尔德那样的理想主义者显然并没有考虑到这问题”(嘉德尔斯,1999:260)。也正是在这个意义上,他说赫尔德以及马志尼所抱有的信念———各个“社会可以沿着它自身内在的路线和平地、非暴力地发展,对其他同样致力于和平发展的社会非但不存嫉妒与敌意,而且还非常同情”———“是过于天真”了(嘉德尔斯,1999:259-260)。而对于这种善意的“天真”,伯林并没有像后来的一些自由民族主义者试图做的那样,设法发展一套更为“成熟”的理论原则来加以弥补,因为(再一次)他的反唯理主义的知识倾向妨碍了他,在他看来,那是更为天真的做法。伯林愿意做的,就是怀着对这种天真善意的同情,同时以他“狐狸般的”警觉,不断地对民族主义“进攻性”的危险予以解剖,并提出警策。 那么,什么是伯林最为敏感的政治民族主义的危险?当被问及:“是什么使得文化自决的热望演变为民族主义的进攻”时,伯林回答说:一种受到伤害的“民族精神”,打个比喻说,就像一根被强力扳弯的树枝,一旦放开就会猛烈地弹回去 。民族主义,至少在西方,是压力引起的创伤所造成的。至于东欧和前苏维埃帝国,现在看起来是一个巨大的、开裂的伤口,经受多年压迫和屈辱之后,解放了的民族和它们的领袖容易产生一种剧烈的反作用,产生一种突然爆发的民族自豪感和往往具有进攻性的坚持自己主张的行为。 “弯枝”(benttwig)成为伯林论述民族主义的一个中心隐喻。“弯曲”(bent)暗示了民族遭到的羞辱性征服,来自“更先进的”、文化上更优越的外国势力的征服。但是,这个被迫弯曲的枝条终究要反弹回去,以鞭挞民族的欺辱者。没有一个民族能够忍受外来的长期羞辱,“迟早会有无法控制的强烈反应。人们再也不愿容忍一个有优越感的民族、阶级或者其他什么东西盛气凌人的态度和侮辱。迟早,他们会提出民族主义的问题:“我们为什么得听他们摆布?’“他们有什么权利……?’“我们怎么办?’“我们为什么不能……’”(嘉德尔斯,1999:257)。这里的关键词是“羞辱”以及“雪耻”。这是伯林在德国民族主义的形成中看到的最为突出的情感。“弯枝”会以盲目的、非理性的过度反弹来回应曾经遭受的羞辱,成为攻击性的民族主义。这是弯枝隐喻的重点所在。 为什么伯林会对攻击性的民族主义如此忧虑?血腥的冲突、残酷的战争———这些“人道代价”当然是重要而且明显的理由。但还有更为潜藏的理由。在走向雪耻的民族自决的政治斗争中,民族主义话语几乎无可避免地走向极端,走向偏见,成为一种偏执的、反自由的意识形态,一种惟我独尊的、整体性的、道德上无限制的民族主义。 这是一种与马志尼等民主派所持有的民族主义反差鲜明的另一种民族主义:“民族自由存在于对来自外部和内部的一切可能障碍的铲除中,也就是要对一切权力的竞争者发起圣战———内部的阶级或团体,以及外部的力量,即其他民族。”这种形态的民族主义和它的两个“令人恐惧的兄弟”———种族主义和宗教狂热主义———一样,会演变出我们时代“最恐怖和最野蛮的现象”(伯林,2004b:287-288)。在此,攻击性民族主义对自由价值的压制与摧毁,是伯林忧虑的深层原因。 所以,即使民族的政治自决就长远而言有利于这个民族的文化自由发展,但如果在短期内会出于“民族利益高于一切”而限制许多个人的和群体选择自己生活方式的自由———这是许多后来的自由民族主义①者愿意承担的代价,伯林将对此十分勉强。对他而言,集体性的自决并不具有内在的价值,而只是一种条件,与其他许多条件一样,其目的是为了个人和群体的自由发展。因此,正如米勒和汉普夏尔(StuartHampshire)等人都指出的那样,“民族自决”对于伯林来说只是“工具性”的(Miller,2005:117)。从这个角度来看,伯林对犹太复国主义的支持并没有普遍性的原则依据,而是出于一种实际的、工具性的考虑。 伯林的另一位朋友、哲学家沃尔海姆(RichardWollheim)指出,犹太复国主义对于伯林不是意识形态,而只是推动以色列立国的实际途径,是“对犹太人具体苦境的明智的解决方案”。言下之意,如果还有别的方法(比如伯林说过,如果世界上有这样一种药,犹太人吃了就能够一夜之间变为丹麦人,他会鼓励他们吃这种药),伯林很可能不会选择犹太复国主义。 在沃尔海姆看来,这就是为什么在对犹太复国主义的正当性论述中,伯林对“积极正当性论证”持极为温和的态度,而偏爱“消极正当性论证”(Wollheim,2001:166)。然而,犹太复国主义毕竟是一种意识形态的蓝图,就此而言,汉普夏尔的问题是尖锐的———伯林如何可能调和对先验蓝图的反对与他对犹太复国主义的支持?马格利特最终的结论是,这两者之间存在着真实的紧张,伯林也没有真正解决这种紧张(Margalit,2001:157)。 沃尔海姆也指出,伯林犹太复国主义与他的总体生活态度具有“很别扭”的关系,“他支持犹太复国主义多少是一个例外”(Wollheim,2001:168)。总的来说,以赛亚·伯林对民族主义怀有一种爱恨交加的复杂情感,其中的紧张在于,他一方面重视民族“文化自决”的价值,因为这对于多样而自由的生活方式是必要的;但他在另一方面极为忧虑民族“政治自决”的危险,因为政治形态的民族主义是不稳定的,总是可能走向反自由的方向。 非政治化的文化自决是伯林所期望的,而他良好的“现实感”告诉他,离开政治的文化自决往往是不可能的。正是民族主义所要求的“政治化”使伯林犹豫不决。 社会转型中的中国语境:创伤记忆与雪耻情结 本文以上的分析所获得的一个结论是:伯林思想的内在紧张表明,自由主义与民族主义之间的冲突,无法仅仅通过思想观念层面上的清理来解决,无法诉诸一套明确的政治哲学原则或纲领来化解。 自由民族主义是一种实践性的改革方案。如果我们期望人类普遍的自由价值与对自身民族的特殊偏爱之间达成和解,只能在具体语境的实践中实现。因此,我们必须由思想观念的研究中启程,走向社会学的探索,在具体的语境中展开社会学层面的分析和判断,开拓出富有实践性的自由民族主义的改良路径。 如果以自由民族主义的视野来考察,中国当下突出而紧迫的问题是自由主义与民族主义之间的相互排斥和极端对立。中国的自由主义者从来没有发展出一套自由的“民族论述”,而中国的民族主义者也从来没有发展出民族的“自由论述”。 这是双方的失败,而其负面的结果是:一种偏激和危险的民族主义情绪日益高涨,既妨碍了自由的价值, 也最终会损害民族的利益。伯林曾指出,在民族主义兴起的过程中有两个关键的因素:一是民族经受的历史创伤,一是现代化过程中的社会动荡与结构变迁。这两点都与中国目前的民族主义形态有关。 首先,中国的民族主义情绪来自一种创伤性的历史记忆,这是一个客观的社会心理事实,如果不能同情地理解这种社会心理,也就不可能发展出具有实践潜力的自由民族主义论述 。伯林在一篇短文《关于偏见的笔记中》中表达了民族主义“常常是创伤的产物”这一观点,其中特别提到“如果俄国人没有被西方视为野蛮的大众,中国人没有在鸦片战争或更普遍的剥削中受屈辱”,他们不会轻易接受极端的观念(伯林,2003c:396)。中国的历史无疑记载着民族的创伤体验。但是,历史记忆具有特定的选择性,只有在当下的语境中重新建构之后才能形成一种有力的叙事。设想一下,对于一个“正统的汉民族主义者来说”,最为深重的历史创伤应该是千百万“汉人”曾在长达250年的时间里沦为满人的“亡国奴”。 还有什么比这样的奇耻大辱更令人沉痛的历史记忆吗?实际上,从“反清复明”的先驱义士到孙中山的革命同盟,一直曾坚持着激昂的“排满”诉求,这种民族主义的斗争叙事持续了几百年,并在某种意义上促成了中国作为现代民族国家的诞生。然而,如今电视剧中那些连篇累牍的关于大清皇帝们“丰功伟绩”的故事,却丝毫不会激发我们的民族主义激情。因为历史变迁了,“满人”早已融入中华民族的大家庭,排满主义的义愤已经被化解、被超越而最终被遗忘了。 历史的“创伤记忆”只有在“新鲜伤口”的刺激下才会重新复活。 今天中国的民族主义义愤主要指向西方(尤其是美国)与日本。从中国大使馆被美军轰炸、到南海的飞机相撞、到日本公司职员在珠海的集体嫖娼等一系列事件中,中国人感受到直接的、当下的耻辱体验。这种新的屈辱感选择性地激活了创伤记忆———从鸦片战争、甲午战争直到日本侵华战争所遗留的历史伤口,而作为这一历史记忆的中心象征———火烧圆明园以及南京大屠杀等事件———散发着格外血腥的气息。于是,“新仇”接续“旧恨”构成了悲愤性的民族历史叙事。由此可见,历史创伤转化为一种社会心理事实是社会学层面上的选择性建构。创伤记忆或许会激发极端的、狭隘的与排外的民族主义情绪,但这种生成转化并不是直接的,也不是必然的,它与现代性条件下的社会变迁具有深刻的关联。 这正是伯林思想蕴含的第二个启示。 伯林在分析俄国与德国的民族主义兴起时指出,“尽管在我看来, 民族主义首先是受到伤害的社会做出的反应,不过这虽然是民族主义肯定自身的必要条件,却不是一个充足的理由。”在伯林的分析中,“社会变迁”(对于俄国,是彼得大帝剧烈而迅速的现代化造成的冲击)是民族主义兴起的重要前提,“技术革命的后果或新市场的开拓和旧市场的衰败,各阶层的生活因此而被打乱……于是人们努力创造一种新的综合,一种新的意识形态,以便为与他们的信念及生活方式相对立的势力做出的反抗加以解释和辩解,并指出一个新的方向,为自己提供一个自我认同的新中心 ”(伯林,2003a:416)。这段论述对我们认识当下的状况仍然具有相关性。 在中国最近20多年的改革开放的探索实践中,社会的价值观念与阶层结构都发生了剧烈的动荡和变化。文革之后终结了以“阶级斗争”为核心的意识形态,“竞争”、“商品”、“资本”和“财产”逐渐成为公共话语中的关键词,“市场价值”导向的意识形态叙述改变了社会的基本价值观念与行为方式。一系列改革方案在刺激生产力增长的同时也重新分配了社会资源和财富,伴随着全球化趋势的扩张、新技术革命的来临和产业结构的重组等因素,中国出现了新的社会分层,相应的贫富不均也日渐鲜明。所有这些精神领域和物质层面的变化发生在短短的20多年之间,使中国人感受到强烈的现代化冲击,在社会心理层面造成了自我认同与价值归属的危机和紊乱。在这种状况下,人们需要一种新的意识形态层面上的综合,以获得明确而统一的自我认同和对于生活的“意义感”。而民族主义生逢其时地提供了一个认同与意义资源。 尤其重要的一个原因是,中国的现代化深刻地介入了当今的全球化过程,中国作为一个民族国家进入了世界性的经济、政治和文化多个维度的互动,既是交换融和,也是博弈斗争。虽然中国在参与全球化的过程中获得许多经济利益,但全球化作为一个博弈格局仍然具有结构性的不平等,中国仍然受到来自美国、日本等“发达国家”的压力。虽然社会成员所经历的社会动荡与全球化的不平等之间的关系十分复杂,但公众在寻求自我认同与价值归属方面需要一种“简洁性”,而民族主义恰恰提供了这种简洁性。于是,民族历史的创伤记忆,经过改革年代社会转型的特定条件,得以在社会心理层面上的重构,形成当今中国民族主义的特殊形态,可称之为“雪耻型民族主义”。 创伤记忆只是今天民族主义勃兴的一个源头。现代性的社会变迁需要调动与此平行的另一种民族记忆,那是以“强汉盛唐”的辉煌传说 为代表的历史叙事,一种中华帝国的“华夏中心主义”叙事,它唤起了许多中国人对往昔的强盛、骄傲与尊严的深切缅怀,并激发出对未来“中华民族伟大复兴”的热烈想象。创伤记忆与复兴想象,这两种叙事共同建构了当代中国民族主义的气质形态。 “雪耻型民族主义”———以重返远古时代曾经的辉煌来彻底洗刷近代以来的屈辱,这种民族主义话语不只是一种情绪性的集体宣言,同时也正在发展成为一种意识形态,为日常经验提供了一种可能的认知框架。在这种叙事所支持的阐释图景中,所有个人的遭遇只要涉及异族外邦就不再是孤立的、意外的和偶然的,都与文化、政治、军事与经济的结构性压迫相联系。来自外企上司的傲慢言辞、被拒绝的签证、在海关遭遇的“特别问询”,甚至目睹那些出入高级宾馆的异族男人身边伴随着迷人的中国女人等等最细微的不良感受,都会激发悲愤的民族情绪,可以毫不迟疑地与奥运会申办的落选、与大使馆被炸、与中国公民在国外被警察殴打等等“整合”起来,生成逻辑一致的整体性耻辱感。我们在20世纪初郁达夫的私性小说《沉沦》中已经看到了这种阐释的原型。小说中那位苦闷的青年主人公在日本妓院遭受冷遇之后,发出了强劲的民族呐喊:“中国呀中国!你怎么还不强大起来!”“祖国呀祖国!你快富起来!强起来吧!你还有许多儿女在那里受苦呢!”借助于民族主义的解释逻辑,个体的不幸遭遇将得以与民族的苦难命运有机地合为一体,由此超越了个人的卑微感,上升为一种悲壮体验。而日常经验与抽象理念互为增援,不断地加固了民族主义宏大叙事的建构,最终为身处社会变迁压力下的人们提供了自我认同和价值归属的可能。 雪耻型民族主义具有不断激进化的可能。骄傲与创伤的双重性反差会产生一种激增性的循环反馈:对雪耻的诉求越强烈,就越容易被外来的冲击所挫伤,而越发深重的屈辱感将会唤起更为迫切的复兴渴望。 因此,雪耻型民族主义具有一种持续的内在紧张,宛如一个允诺已久却迟迟未临的狂欢高潮,令人焦虑不安。实际上,我们每个人都处在这种集体性的焦虑之中。即便那些民族主义的极端反对者,或“民族虚无主义者”也是如此。那些诸如“宁愿再被殖民三百年”或者“解散中国”的鼓吹,正是试图以一种自虐性的狂热一劳永逸地解脱这种焦虑。无论是拒绝还是坚持,民族情感都是特定历史的造物,也是我们共同的地平线。如果我们无法摆脱民族主义,真实的问题是我们怎样对待民族主义。 雪耻型民族主义具有某种反自由的倾向,也是伯林所说的“弯枝”隐喻典型形态:它将“民族的统一与自决的利益提升为最高价值,必要时其他一切考虑必须服从这种利益……”“假如满足我所归属的有机体的需要变得与实现其他群体的目标不可调和,那么,我或者我不可分割地属于其中的社会别无选择,只能强迫那些群体屈服,必要时就诉诸武力。假如我的群体———让我们称它为民族———想自由地实现其真正的本性,就必须清除道路上的障碍”(伯林,2003a:403、409)。在当今中国的雪耻话语中,尤其在网络论坛最为极端的呐喊中,我们的确可以感受到极端的、盲目的和非理性的复仇主义的潜流 ———以“来一次东京大屠杀”来雪“南京大屠杀”之耻,以“日本是劣等民族”来回应“支那劣等民族”论,以我对你的仇杀来血洗你对我的蹂躏、以野蛮来应战野蛮、以残暴回敬残暴。而不同意这些论调的人,一概被极端的民族主义者剥夺了作为“中国人的资格”,是美国的或者日本的“走狗”。但是,辨识现存民族主义情绪中的极端倾向是容易的,简单地指责非理性的民族主义情绪也并不困难,但仅止于此却无助于克服和避免其危险。 在动荡的社会变革时期,如果没有一种有效的对时代变化的解释话语,民族主义很自然地得以借助历史的创伤记忆成为新的意识形态。如果不能发展出有效的自由民族主义论述,狂热的、激进的、攻击性的民族主义将占据主导地位。 在中国发展出自由民族主义的论述是困难的,却不是不可能的。如何克服与超越“自由的”价值与“民族的”价值之间的两极对立?对于中国的自由主义者来说,如果仅仅坚持一些古典自由主义的教条,如果将一切对自身民族的特殊依恋都看作无可救药的狂热偏见,如果相信只有成为“世界主义者”才能摆脱极端民族主义的危险,那么就等于放弃了发展自由民族主义的可能。在这个意义上,中国的自由主义者需要从自身狭隘的偏见中解放出来,怀着对民族情感与自身利益的同情理解,对当代中国与世界格局提供更深刻的、更有说服力的论述,才有可能克服雪耻型民族主义走向极端的潜在危险。 中国的民族主义需要注入自由主义的血液,但这不应该是唯理主义的教条,不是普适主义的幻想,而是一种坚持最低基本价值的、同时具有高度智慧的自由改良主义。

May 4, 2022