理查德-道金斯《自私的基因》令人信服地向我们展示了物种自私基因与物种演变的过程和方向。其中有不少对我们现今社会有着深刻的启迪作用。

在第十章《我为你搔痒就骑在你头上》中的一个虚拟推理很值得玩味。这个虚拟推理的过程大致上是这样的:假设有一种鸟类,它们身上寄生着一种令人厌恶的蜱虫,而这种蜱虫又带着危险的病菌,这种鸟儿必须尽快清除自己身上的蜱虫,以免影响自己的健康,如果不加以清除的话,很可能导致自己乃至整个鸟群的灭亡。这种鸟通常可以通过自己的喙为自己清除部分蜱虫,但总有它的喙够不上的地方,比如自己的脑袋部分,脖子部分。这就需要其他鸟同伴的帮忙。由于互相需要,为此它们建立了互助关系,互相为同类的鸟儿清除特定部位的蜱虫。也就是互相为对方工作。在这种条件下,我们假设每个鸟儿都因为自身的自私需求而表现出某种利他行为,换句话说,利他的驱动因素还是利己。这种利他行为作为一种基因被代代遗传下来,这种鸟儿先天地具有为其它同伴清理蜱虫的本能,它们从不计较它所服务过的鸟儿是谁,也不计较为它服务的鸟儿是谁。我们先简单地称之为傻瓜。如果这个种群中的每个鸟儿都是傻瓜的话,这个鸟族绝不会因蜱虫的侵害而受到威胁,该种群便得以繁衍。

但是,假如这个鸟儿的种群中有一种只接受别的鸟儿的帮助而从不帮助别的鸟儿的成员,它们先天地只知道享受而不知道奉献。我们假设这类成员为“骗子”。假设这种骗子的数量不够多,该鸟类种群不至于会受到多大的影响。但是由于骗子把为其它成员工作的时间用来从事其它利己的行为(比如发展自身的体格等等),这样骗子们就明显地具有了优势,它们较少地付出而获得了较大的回报。因此骗子的基因是“优秀”的,于是骗子基因得以广泛传播,成员数量逐渐增大。而傻瓜基因的鸟儿却处于劣势,基因的遗传被压制。如果这种情况无限制发展下去,其结果必然是该种群因骗子过多,蜱虫猖獗肆虐得不到清除而趋于衰落直至灭亡。

在人类社会中,我们可以把社会诚信度高的社会看作人人都是“傻瓜”的社会,或者傻瓜具有绝对优势的社会。而一个诚信度很低,便是骗子横行,并且数量占多的社会。这种社会发展下去最后的结局不言而喻是可悲的。

假如上面的那个鸟儿的社会中不仅仅只有傻瓜和骗子,还有另一类成员,它们善于识别和记忆拒绝为它提供服务的成员,也就是它们善于记住那些骗子的脸。当骗子要求它提供服务时,它也拒绝为其提供服务,因为它清楚地记得,这个骗子曾经拒绝过为自己服务。道金斯将这类鸟儿称为“斤斤计较者”,由于有斤斤计较鸟儿的存在,至少某些骗子在某些时候难以得逞。如果斤斤计较者处于少数,骗子的行为不可能得到成功的抑制,该物种的灭绝还是难以避免。只有当斤斤计较者的数量相当大,使得骗子们总是得不到多数成员的服务,由于蜱虫的侵害。使骗子们最终被淘汰走向灭亡,该物种才能将得以延续下去。因此,上面虚拟的这个鸟儿社会得以生存延续的希望在于它们中的斤斤计较者。

如果我们把人类社会的生产活动看作这种鸟儿的社会行为,那么一个效率极高的社会必然是没有骗子的社会,其次是骗子较少的社会,然后是骗子较多的社会,而一个骗子占绝大多数的社会是很难生存下去的。因为如果所有人互相欺骗,所有人上当,这个社会将无法维持下去。

比如在学术界,傻瓜们辛辛苦苦地学习,获得了相应的学历和学位,通过研究工作获得了相应的职称,这些都能体现傻瓜们所投入的精力和对社会的贡献。但是骗子们却通过各种投机手段走捷径,骗取了学位(比如博士学位),和高级职称(比如教授),这种假博士和假教授如果数量极少,问题还不太大。可是这种假博士假教授的数量如果占据了一定的比例,那么结果就是博士和教授原有的生态就受到严重威胁,发展到后来,假博士假教授横行于世,真博士和真教授就会彻底灭亡。再也没有人相信博士和教授,即使有一些真博士真教授,外人也会当作是假的来看待。套用一句话来说,这时候博士和教授已经功能性灭绝了。因此,如果没有斤斤计较者的清理,假博士和假教授就是博士和教授的掘墓人。他们似乎就是为了埋葬博士和教授出现的。

在经济生产领域,傻瓜们真材实料进行物质生产,为社会提供了真实可靠的物质资料。他们投入了高昂的成本,生产出真材实料的产品。但是骗子却用极少量的投入进行假冒,生产劣质甚至毒害人的产品。由于假冒产品成本低廉,根本不存在产品设计和研发的成本,因此必然具有竞争优势,很快就能占领市场,有些甚至还能压倒真品。假产品直接导致生产真品的厂家倒闭,新产品的研发直接死亡。

因此,无论哪个行业,只要出现了假冒,那就意味着对真品生存的威胁。如果不加以抑制,出现假冒的行业如同有骗子鸟儿的种群一样必将毁灭,假冒横行的社会必将被淘汰。

我们也看到,傻瓜是无法抑制骗子的,而能够杜绝骗子行为的只能是斤斤计较者。而且只有斤斤计较者达到一定数量才能有效抑制骗子的行径。新语丝、方舟子们是当今中国社会的斤斤计较者,但是这样的斤斤计较者在数量上还太少,还不足以抑制骗子的横行肆虐。因此,如果不希望我们的社会被淘汰,只能提高像方舟子这样的斤斤计较者的数量,让骗子们不能得逞,只有这样,我们的社会才有希望。

#include<bits\stdc++.h> 
#include<windows.h> 
#include<time.h> 
using namespace std; 
int a,b,c,k,k2,kk,bb,t,tt,R,Blood=10,Illness=10,Time=500;
int bird[15001],ill[15001],blood[15001];
bool what[5001][15001],e,win;
void Color(int a)
{
    if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
    if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_GREEN);
    if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED);
    if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_GREEN);
    if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |FOREGROUND_RED | FOREGROUND_BLUE);
}
void Slow(char *p){ while(1){if(*p!=0)printf("%c",*p++);else break;Sleep(20);}}
void help(int a)
{
    if(kk==1) return;
    K:int r=rand()%k+1;
    if(r==a||bird[r]==0) goto K;
    if(bird[r]==1) ill[a]=0;
    if(bird[r]==2&&bird[a]==3&&what[a-k2][r]==0) what[a-k2][r]=1;
    if(bird[r]==3&&what[r-k2][a]==0) ill[a]=0;
}
void Cout(int a)
{
    Color(bird[a]);
    if(ill[a]==1) Color(4);
    if(blood[a]==0) cout<<setw(3)<<'*';
    else cout<<setw(3)<<blood[a];
    if(ill[a]==1) help(a);
    if(ill[a]==1) blood[a]--,bb=1;
    if(blood[a]<=0&&ill[a]==1) bird[a]=0,ill[a]=0,kk--;
    Color(0);
}
int main() 
{ 
    Color(0);
    srand((unsigned)time(NULL)); 
    Slow("\n  请输入傻瓜,骗子,斤斤计较者的数量(均不可超过5000):"); cin>>a>>b>>c;
    Slow("\n  要改变血量等常量的默认值吗?(1-Yes 0-No):"); cin>>e;
    if(e==1)
    {
        Slow("\n  请输入鸟们的初始血量:"); cin>>Blood;
        Slow("\n  请输入鸟们的得病率(<100):"); cin>>Illness;
        Slow("\n  请输入输出间隔时间(毫秒):"); cin>>Time;
    }
    for(int i=1;i<=a;i++) k++,k2++,bird[k]=1,blood[k]=Blood;
    for(int i=1;i<=b;i++) k++,k2++,bird[k]=2,blood[k]=Blood;
    for(int i=1;i<=c;i++) k++,bird[k]=3,blood[k]=Blood;kk=k;
    Slow("\n  三秒钟之后开始模拟------ ");Sleep(500);
    cout<<"3";Sleep(1000);cout<<" 2";Sleep(1000);cout<<" 1"<<endl;Sleep(1000);
    for(int i=1;i<=k;i++) Cout(i);cout<<endl;Sleep(Time);
    while(kk!=0)
    {
        t++;bb=0;
        for(int i=1;i<=k;i++)
        {
            R=rand()%100+1;
            if(R<=Illness&&bird[i]!=0) ill[i]=1;
            Cout(i);
        }cout<<endl;
        if(bb==0) tt++;
        else tt=0;
        if(tt>30) {win=1;break;}
        Sleep(Time);
    }for(int i=1;i<=k;i++) Cout(i);cout<<endl;
    if(win==0) Slow("\n  此种族灭亡了,存活时间为"),printf("%d。\n  ",t);Sleep(500);
    if(win==1) Slow("\n  如果不出意外,此种族会永远存活下去。\n  ");Sleep(500);
    system("pause");
    return 0;
}