在达尔文(Charles Darwin)的著作
《物种起源》之后,德国的动物学家海克尔(Ernst Haeckel)指出了“个体重复发展”现象。他的意思是,一个胚胎(个体)重复物种(个体)的演化。换句话说,在卵子受精之后,一个人类的卵子在成为人类婴儿之前,经过了是鱼、是猪或其他物种的阶段。现代生物学家认为这是一种粗略的的简化说法,不过这个说法的内部包含有真理的成分。在计算机产业中有类似的情形。每一个新物种(大型机/小型机/个人计算机/嵌入式计算机/智能卡)似乎经历着它的前辈经历过的发展过程。
第一台真正的数字计算机是英国数学家Charles Babbage(1792-1871)设计的。尽管Babbage花费他几乎一生的时间和财产试图建造他的“分析机”,但是他始终未能让机器正常的运转,因为它是纯机械的,他所在的时代不可能生产出他所需要的高精度的齿轮和轮牙。Babbage认为他的分析机需要操作系统,于是雇用了世界上第一位程序员,一名叫Ada Loveplace的年轻妇女(她是英国著名诗人拜伦Byron的女儿)。程序设计语言Ada则是以她的名字为命名。
第一代计算机是在1945年-1955年间出现的,它们最初使用大规模的机械继电器,运行非常缓慢,后来被真空管取代。这些机器极为巨大,有成千上万根真空管,充满整个房间。同一个小组的人设计、建造、编程并维护一台机器。所有的程序设计是用纯粹的机械语言完成的,常常连线到插件板上以便控制机器的基本功能。通常的操作方式是程序员提前在墙上的机时表上预约一段时间,然后到机房中将他的插板放到计算机中。在此期间,他必须得祈祷几万根真空管没有任何一根出现问题(被烧坏)。后来插板被穿孔的卡片取代。此时计算机主要应用于数字运算。
第二代计算机(1955年-1965年)由于上世纪50年代中期晶体管的出现极大的改变了状况。计算机变得很可靠,厂商可以批量的生产并销售给最终用户,用户也可以指望计算机长期的运行。此时,设计人员,生产人员,操作人员,编程人员和维护人员之间第一次有了明确的分工。这些机器被称为大型机(MainFrame),被放置在有专用空调的机房里,由专业的人员操作。为了提高机器效率,批处理系统(Batch System)出现了。它首先会一次性收集程序员们的需求,然后输入执行运算的计算机系统,等到运算结束后,再批量的将运算结果输入。这一代计算机主要应用于工程运算,比如接微分方程。
第三代计算机(1965年-1980年)采用了集成电路和多道程序设计的思想。IBM公司的OS/360采用了小规模集成电路,成为当时的主流机型,与上代计算机相比,在性价比上有较大的提高。它们满足了当时大多数客户的需求,同时也使得第二代计算机几项关键技术得到了广泛的应用。其中最重要的是多道程序设计(Multiprogramming)。在上代的计算机系统中,如果当前作业因等待磁带或其他I/O操作而暂停时,CPU只能去等待该操作的完成。这样就必须采取措施提高CPU运行效率。解决方案是将内存划分为几个部分,每一个部分都存放不同的作业。当第一个作业等待I/O操作完成时,CPU转而去处理下一个作业。如果主存中能存放足够多的作业,那么CPU的效率将达到100%。不过要注意的是,在内存中同时存放多个作业需要特殊的硬件来对其进行保护,以免作业的信息被窃取或受到攻击。多道程序设计的思想后来导致了分时系统(timesharing system)的出现。分时系统中最著名的是MULTICS(MULTiplexed Information and Computer Service),通用汽车,福特和美国国家安全局一直使用到上世纪90年代后期才关闭他们机房中的MULTICS。
目前,公用计算服务系统的概念已经被遗弃,但是这个概念是可以回归的,以大量的,附有相对简单的单用户机器、集中式的网络服务器形式回归。在这种形式中,主要工作将在大型服务器上完成。而回归的动机可能是多数人不愿意管理日益复杂的计算机系统,宁可让那些运行服务器公司的专业团队去做。现在来看,Tanenbaum的预言有了初步的实现的迹象,比如近年来非常火爆的云计算/云存储等概念。
第三代计算机另外一个主要进展是小型计算机的崛起,以1961年DEC的PDP-1为起点。Ken Thompson,一位参加作MULTICS开发的贝尔实验室的科学家,在一台PDP-7上开发了一个简单的单用户版MULTICS,即后来的UNIX。这是计算机操作系统历史中具有非常重要意义的一件大事。
第四代计算机(1980年至今)随着大规模集成电路的发展,迎来了个人计算机时代。Intel在1974年推出8080处理器,后来Kildall受邀在上面开发了CP/M操作系统,该系统当时大受欢迎,Kildall取得了专利权并成立了Digital Research公司持续开发该系统。80年代IBM公司找到Bill Gates,请他推荐一个能在PC上运行的操作系统,Bill推荐了CP/M,但是Kildall并不热心与IBM的合作。最后IBM回过头来找Bill Gates,询问他是否可以接受开发操作系统的任务。Gates把握了这个历史上最好的机会,收购了西雅图一家计算机制造商(DOS),改名为MSDOS并与IBM PC捆绑销售,最后大获成功。而Kildall坚持硬件要为自己的CP/M所兼容,不愿意拓宽自己的视野和思路,导致CP/M在市场上迅速消亡和被MSDOS取代。
上世纪80年代中期出现了网络操作系统和分布式操作系统的雏形。网络操作系统与单机操作系统没有本质区别,它需要一个网络接口控制器以及一些底层软件驱动它,同时需要一些程序来进行远程登录和远程文件访问,但这些附件内容并未改变操作系统的本质结构。相反,分布式操作系统是一种传统的单处理操作系统的形式出现的,尽管它实际上是多个处理机组成的。用户不知道他们的程序在何处运行或他们的文件存放在何处,这些是由操作系统自动和有效的处理的。真正的分布式操作系统不仅仅实在单处理机操许系统上增添一小段代码,因为分布式系统和集中式系统有本质的区别。分布式系统常允许一个应用在多个处理机上运行,因此,需要复杂的处理机调度算法来获得最大的并行优化。网络中的通信延迟往往导致这些算法必须能适应信息的不完备、信息过时甚至信息不正确的环境。这个单处理机操作系统完全不同,对于后者,操作系统掌握这整个系统状态的完全信息。
谈到印度思想,我们习惯于理解的是在
印度定居的雅利安人。这些人在公元前1500年就从西方开始向印度河流域迈进,后来又占领了恒河以及亚穆纳河平原的大部分地区。雅利安(梵文ayra,古波斯文ayria),高贵的意思,是对中亚地区、波斯和东伊朗地区的印度伊朗人的称呼。从新近的一些考古发掘中获悉,印度北部的原著民曾经拥有非常灿烂的文化,然后它并未流传下来。可以推测出的是,当时的原著民已经拥有比后来的雅利安侵略者更为先进的文化。首先这些古印度人在公元前5000年时就已经有了自己的象形文字,它们和中国的汉字有着某种亲缘关系。几个世纪后,他们才开始使用文字。但是由于他们是国家的统治者,所以他们还处于蒙昧阶段的文化必然与原著民已经相当发达的文化发生碰撞,并成为主流。(根据wiki上的资料,雅利安人最早发源于俄罗斯南部的乌拉尔山脉附近的游牧部落,为了不断寻找牧场和水源,他们开始四处迁徙。开始时候到达小亚细亚,巴尔干半岛和希腊,后来东欧的雅利安人继续迁移到南欧,西欧和北欧各地。公元前2000年左右,雅利安人进入伊朗高原,还有一部分继续向东迁移,到达先进的印度北部,与当时印度北部的达罗毗荼人发生战争,600多年后雅利安人打败了原著民达罗毗荼人,在北印度建议了王国。这时估计是公元前1500年左右,也就是史怀哲先生在书中记录的年代。可以想象入侵的游牧民族当时在文化上是没有原著民先进的)
而南亚次大陆南部诸国的各民族则不同,他们并没有收到雅利安人的统治,所以原著民的精神生活还是得以保持。于是他们的思想和印度雅利安人的思想发生交流,受到他们的影响,也会反过来去影响他们。由此我们可以知道原著民的精神生活,并且能够确定,它的伦理思想比印度雅利安人的要更自然更生动,从它身上完全可以看到一个古老文化的影子。
如果我们审视为我们所知最古老的印度雅利安人思想的话,就会发现它并不是同一的。它内部包含了两种思想成分:一种是以自然的方式来面对生命和世界,对生命和世界持肯定的世界观;而另一种本质上则属于构筑在对生命与世界的否定基础上的神秘主义哲学。这种神秘主义是以与婆罗门(Brahman,梵,原意是祈祷和增大的东西)何为一体的思想为基础的。婆罗门被理解为纯粹的,不变的,永恒的存在,而由此产生和消亡的,存在于感性世界中的只不过是一个现象而已。
印度教的种姓制度将种姓分为四种瓦尔那,最高级的是婆罗门,从事教授吠陀经、祭司和接受奉献这三种工作。享有诸多特权,如不可受到处罚等。其次是刹帝利,与婆罗门共享“管辖一切生物”的权利。他们是战士和统治者,掌握实际的政治和军事权力,但被完全排除在完成的司祭活动之外,因此不具有宗教上的权力。此外,负有保护婆罗门的责任。第三级是吠舍。农民和牧民,任务是生产食物和提供各种祭品。可从事农耕,商业,畜牧和放贷的工作。最低级的是首陀罗,是没有人身自由的奴仆,负责提供各种服务。还有社会最底层的贱民,他们被排除在种姓体制之外。《梨俱吠陀》中所描绘的瓦尔那阶序为,婆罗门是人的嘴,刹帝利是人的双臂,吠舍是人的大腿,首陀罗是人的脚。贱民被排除在人的身体之外。
其中以自然的方式来对待人和世界的思想属于民众,而与婆罗门合为一体的神秘主义思想(梵我合一)则属于婆罗门教士阶层的思想方法。令人惊讶的是,这样一种古老的神秘主义思想并不是不成熟的,相反就其形式上达到了非常完善的阶段。印度雅利安人的民间思想我们可以从吠陀赞歌中了解到。从中可以看到,印度雅利安人在他们古老的时代就生活在自身存在的质朴的愉悦和自然的证实中。他们向赞歌中讴歌的神灵乞求成群的牛马,诸事顺利,获得财富,赢得战争和长寿。婆罗门神秘主义的基本思想见诸《奥义书》(Upanischad’s)中。
吠陀经(Veda)中的吠陀是知识的意思,它由很多部分组成。其中第一部是《梨俱吠陀》(Rig-Veda),它包含1028首赞歌。在吠陀赞歌中被歌颂最多的是阿哥尼(Agni),印度教的太阳神、因陀罗(Indra)和伐楼拿(Varuna)。吠陀经的其他部分《娑摩吠陀》(Sama-Veda)、《耶柔吠陀》(Yahur-Veda)和《阿闼婆吠陀》(Atharva-Veda),从形成年代上都比《梨俱吠陀》要晚。从它们的内容中可以看出,它们形成于雅利安侵略者达到恒河地带的时候。而《梨俱吠陀》中的赞歌则只涉及了印度河及其最大支流的流域内容。《娑摩吠陀》包括585个独立唱段的唱词,它某种意义上是一部宗教歌曲集。由于当时还没有乐谱,所以最著名的唱段唱词必须连同曲调一起记忆和表达。《耶柔吠陀》包括各种祭祀的重要礼仪和仪式。《阿闼婆吠陀》则是按照最早的拜火教士群体阿闼婆的名字来命名的。这是与查拉图斯特拉的拜火习俗相对应的,其中还有非常古老的以歌曲形式表现的咒语和誓言。奥义书是从一个动词“在某人身边坐下”派生而来的。它的意思是“可信的话语”。《奥义书》是公元前1000年-公元前550年之间产生的对四部吠陀经的解读,它被看成是吠陀经中暗含的奥义的某种秘密的揭示,实际上指的就是与婆罗门何为一体的神秘主义。《奥义书》之前还有涉及祭祀用语的意义的知识的《梵书》和《阿兰若书》(又译《森林书》,意思为从林中产生的观察)。四部吠陀经、《梵书》、《阿若兰书》和《奥义书》被看成是神圣的神意显现,并且千百年来一直是口头传诵。
雅利安印度人没有创造自己的文字,而是使用了一种闪族人的字母(这可能与他们从伊朗高原迁徙过来有关,因为古波斯语属于闪米特语系),这些可以从腓尼基人(北非的闪族人)的铭文以及摩押国王米沙的著名的石刻文字上可以见到。印度雅利安人古代的重要文献使用的语言是梵文,这是一种和古波斯语有着亲属关系的语言。今天它在印度的地位就相当于拉丁语在中世纪的地位一样(一种属于学术和宗教的专门用语)。婆罗门的思想世界被欧洲所认识首先是通过OUPNEKNAT。OUPNAKNAT这个词是通过肢解《奥义书》而获得的,在1656年被穆罕默德.达拉.沙科王子翻译成波斯语的60篇文章的《奥义书》节选本。
操作系统执行两个相对独立的任务
:1)扩展机器 2)管理资源。一般程序员并不想涉足硬件编程的具体细节,程序员需要的是一种简单的,高度抽象的处理。在磁盘的情况下,典型的朝向是包括一组已经命名文件的一个磁盘。每个文件可以被打开或读写,然后读写完毕,最后被关闭。诸如记录是否应该使用修整的调频记录方式,以及当前电机的状态等细节,不应该不出现在提供给用户的抽象描述中。于是,操作系统为程序员隐藏硬件的实际细节,并提供一个可读写的,简洁的命名文件视图。它屏蔽了磁盘硬件,并提供了一个简单的,面向文件的接口,操作系统还隐藏了大量与中断,定时器,存储管理以及其它与低层特征有关的细节。无论在哪种情况下,操作系统索提供的抽象都比底层硬件所能提供的更简单和更易于使用。从上述角度看,操作系统的作用是为用户提供一台等价的扩展机器(extend machine)或称为虚拟机(virtual machine),它比底层硬件更容易编程。概括来说,操作系统提供各种类型的服务,程序可以通过使用称为系统调用的特殊指令来得到这些服务。
上面把操作系统作看作向用户提供基本方便接口的概念,是一种从上而下的观点。按照另一种从下而上的观点,操作系统则用来管理一个复杂系统的各个部分。现代计算机包括诸多硬件设备,操作系统的任务就是在相互竞争的程序之间有序的控地控制对处理器,存储器以及其他I/O设备的分配。当一个计算机(或网络)有多个用户时,管理和保护存储器,I/O设备以及其他资源的需求变得强烈起来,因为用户可能互相干扰。另外,用户通常不仅共享硬件,还要共享信息(文件/数据库)。简而言之,操作系统的这一种观点认为,其主要任务是1)记录使用资源的情况,2)对资源请求进行授权,3)计算使用费用,4)为不同的程序和用户协调互相冲突的资源请求。
资源管理包括以下两种方式实现复用(共享)资源: 在时间上复用或在空间上复用。当一种资源在时间上复用时,不同的程序或用户轮流使用它。先是第一个获得资源的使用,然后下一个,以此类推。这方面的典型例子是处理器和打印机。当一种资源在空间上复用时,每个顾客都得到资源的一个小部分,从而取代了顾客排队。例如,通常在若干运行程序之间分割主存,这样每一个运行程序都可以同时驻留在内存。假设有足够的内存可以存放多个程序,那么在内存中同时存放多个程序的效率,比把所有的内存分配给一个程序的效率要高很多,尤其是一个程序只需要内存中一小部分的时候。当然,如此的做法会引起公平,保护等问题,这都有赖于操作系统去解决。
写到这里,我想起前些天看的《大明王朝1566》中的明朝内阁。如果把嘉靖皇帝看做是用户,百官臣民看做是底层各类硬件,那么内阁就有类似操作系统的作用。首先从用户态,就是从嘉靖的观点来看,管理内阁的几位大臣,远远比直接管理明朝两京一十三省的官民要容易。这些大臣就如同系统中的各项服务,皇帝可以用圣旨(系统调用)的方式来要求各项服务。对付皇帝而言,内阁就是所有资源的缩影(虚拟机),是方便统治的工具。那么从硬件态,即从普通官民的观点来看,内阁必须要处理好各个地方的资源计划及调配,解决各类争抢的冲突。为了达到这样的目的,在资源分配方面(用人)就因人而异: 比如海瑞这样清廉正直的官员,哪个地方问题比较严重,就派到哪里。问题解决后,再去其他的地方,这是时间上的复用;又比如有一个总督,他的工作就是处理各地的公文。这些公文由各地先呈报给总督的文书,然后文书再转交给总督。假设总督是处理器,那么文书类似于内存的作用。如果文书规定每天只收一个县或一个州的公文,那么就要乱套了;文书只能尽可能多的收集起来,请总督批阅,当然,如果这个文书做的好,他甚至可以帮助总督排好事情的优先级再送呈。总督不一定能在当天批阅完所有的公文,但是比起每天只批阅一个县的公文,(处理器)效率何止提高了百倍。这就是文书的空间复用。看来,历史知道多了,对于再次深入了解计算机系统也是颇有好处的。
北宋时期的猛将狄青,喜欢在战斗中披头散发
,戴一铜面具。在对西夏和平定广西侬智高的数次战役中,狄青战功累累,威名远播。据记载,在狄青率领大军打败侬智高并进驻邕州(现南宁市)时,宋仁宗狂喜之下说道“速议赏,缓则不足以劝矣”。狄青升至枢密使,这是宋朝武将中最高的官衔,当时可谓位极人臣,显赫一时。可是在四年后,狄青被迫引退,并被外放到陈州(现河南省周口市淮阳县)任知府。一年后在“惊疑终日”中郁郁而终,年近四十九岁。为何一代名将落得如此下场?千军万马之前都未胆怯退让,为何在高官厚禄的优裕中却终日“惊疑”?这还得从仁宗庆历新政失败说起。在狄青出任枢密使的十年前,由范仲淹,富弼等大臣发起的庆历新政极大触动了旧官僚势力的利益,最后在强烈的反对之下新政宣告失败。范仲淹等人被称为庆历党人,他们不是遭到排挤,就是被外放。著名的《岳阳楼记》就是范仲淹在这个时期写下的。狄青是在宋朝与西夏李元昊战争中,受到韩琦和范仲淹赏识和提拔的,即有所谓的知遇之恩。范仲淹更是倾力培养,甚至亲自送给狄青《左氏春秋》,期待他成为宋朝的吕蒙。新政失败后,虽然范仲淹在朝中失势,但他培养出来的狄青仍然是当时北宋对付西夏的关键人物,所以狄青并未受到党争的影响,甚至因为军功的累积而不断晋升。在平定广西升任全国最高武官后,那些当初反对庆历新政的人发现狄青已经成为最大的威胁。他受到皇帝的宠信,手握全国的兵权,他有足够的机会和足够的权力去为恩师和朋友范仲淹等人去翻案。想到这里,这些人意识到必须将狄青整下去。最好的方法就是说狄青有反意,“以武臣掌机密,而得军情,于国家不便”,这是皇帝们最忌讳,尤其是宋朝皇帝最忌讳的。因为宋朝的开国皇帝赵匡胤原本就是武将出身,后来因黄袍加身而荣登大宝。先例一开,难说后面就没有武将依葫芦画瓢。于是,谣言就出来了,什么狄青家里的狗长出了角,狄青在什么什么地方穿了黄色的龙袍,件件事情都有鼻子有眼,由不得不信,尤其是在迷信的古代。传的人多了,传的次数多了,谣言就变成了证据,皇帝由开始的不信变成将信将疑,狄青的日子就变得不好过了。据说狄青在任陈州知府时,朝廷每半个月就派人前往仔细查问一次。当时南方已经安定,辽国与宋朝多年和平未战,西夏也在多年与宋朝的战争中大耗元气,无力发起强大的攻势。狄青已经不再是当初不可获取的人物了,他是被为是庆历党人的同伙和对皇帝构成威胁的人而必须被铲除。狄青读范仲淹送给他的《春秋》应该也有十几年了,不要说非常理解,至少也是熟读多次了,他知道主君疑心是多么的可怕,他过去显赫的军功都成为现在沉重的精神负担,“终日惊疑”就是可以想象的情形了。明朝文人杨维桢有诗叹曰: “宾州海月光团团,剑花火树烧烂斑。将军如内客未散,捷书已夺昆仑关。当时谏官疑武士,岂知办贼遽如此。於乎!铜面将军今岂无,世无承相庞公甘老死。”
计算机配置了一个称为操作系统的软件层,它
的任务是(1)管理所有的硬件设备,(2)并为用户程序提供一个较为简单的到硬件的接口。计算机系统可划分为硬件(物理设备-微体系结构-机器语言)和软件(操作系统-系统程序-应用程序)两大部分。最底层的是物理设备,包括集成电路芯片、连线、电源、阴极射线管以及类似的设备。接着是微体系结构层,其中的物理设备分组构成了不同的功能单元。在这层中有CPU的专用寄存器以及包括算术逻辑单元的数据通道。在每个时钟周期,CPU从寄存器中取出一个或两个操作数,并在算术逻辑单元中进行运算。其结果存储在一个或多个寄存器中。在有些机器中,数据通道的操作由称为微程序的软件控制,在另外一些机器中,相关的操作由硬件电路直接控制。
设立数据通道的目的是执行某些指令集。相关的硬件以及对汇编语言程序员可见的指令,构成了指令集体系结构(Instruction Set Architecture,ISA)层,这一层被称为机器语言。典型的机器语言有50-300条指令,大多数指令在机器里从事数据传送、算术运算和值比较的操作。在这个层次上,可以通过向特定的设备寄存器(Device Register)写入值来控制对应的I/O设备。
为了隐藏设备操作的复杂性,使用了操作系统。操作系统包括一个专门隐藏这些硬件的软件层,并且给程序员提供一个使用更为便利的指令集。在操作系统的顶层是其他系统软件,其中有命令解释器(Shell),编译器,编辑器以及类似的独立于应用的程序。重要的是,尽管这些程序通常由计算机厂商提供,但是它们本身并不是操作系统的组成部分。这一点很重要,也很微妙。操作系统通常是专指在核心态(Kernel Mode)或管态(Supervisor Mode)下运行的软件,它受到硬件保护以免遭到用户的修改。编辑器和编译器运行在用户态(User Mode)下。用户可以重新一个编译器,但是他无法自行编写一个时钟中断处理程序,因为这是操作系统的一部分,它通常由硬件保护,以防止用户试图对它进行修改。然而这一区分在嵌入式系统(没有核心态)和解释系统(基于Java的操作系统,它采用解释的方式而非硬件方式区分组件)中是模糊的,它只在传统模式的计算机系统中适用。(注:JNode是目前较为常见的一个Java操作系统)。最后,在系统程序的上层是应用程序。这些程序是用户买来或自行编写的,用于解决用户的问题。如文字处理,工程计算。
唐诗有云:”北斗七星高,哥舒夜带刀。至今
窥牧马,不敢过临洮。”这里的哥舒就是唐朝名将哥舒翰。安史之乱时,哥舒翰奉命接替封常清和高仙芝镇守潼关。据史料记载,封常清和高仙芝因为不肯贿赂监军边令诚,遭到边令诚的诬告“常清以贼摇众,而仙芝弃陜地数百里,又盗减军士粮赐。”最后两人被唐玄宗处死。封、高二人在唐军中战功赫赫,名望极高,玄宗如此之快的处决两人说明他又急又恨的心情已经到了极点,而封、高制定的扼守潼关坚守不出战略根本不合玄宗的心意。我不认为唐玄宗和他的大臣们都是愚笨无知之人,在斩杀两位大将后必然会暗暗后悔,对形势重新进行评估。姑且不论他们的分析结果如何,但是至少开始时急于反扑的心理已经开始发生了变化。哥舒翰带病去潼关上任,他是赞成前任防守待援的策略,我认为以他的经验,他在上任前势必会根据自己的经验向玄宗奏报一些自己对局势的分析和建议。此时玄宗也不可能拿着封高二人的事情来威胁帮助他守卫京师的哥舒翰,更可能是好言安慰和鼓励,所以,甚至很有可能哥舒翰从玄宗那里已经得到了某种授权和保证。后来,哥舒翰上任潼关后,据说受到杨国忠的屡屡催促,而“被迫”出兵进攻叛军。我觉得是不是“被迫”值得怀疑。杨国忠被认为是大大的奸臣,那么是不是奸臣所有的意见和建议都是错的呢?会不会有人故意把责任都推到杨国忠身上,而忽视作为三军主帅哥舒翰的责任呢?哥舒翰作为潼关守将,即便要调动大军进攻叛军,也必须做好各项准备和突然事件应对措施。当进攻不顺的情况下,守城部队还是有能力将地势险要的潼关保住的。据记载,哥舒翰在出征前料到此行必败,挥泪于军前;而出征后,哥舒翰在黄河船上看到对手崔乾佑人数较少,下令全军冒进追击,最后中埋伏被全歼于灵宝附近的山隘之中,哥舒翰本人也被俘虏。哥舒翰为什么要冒进?而且潼关到灵宝一线的地形十分复杂,四处是山,很容易设伏。久经战争的哥舒翰为什么要孤注一掷式用二十万大军追逐四千敌军?难道因为他要兑现出事前“必败”的诺言?结合哥舒翰被俘后立刻投降安禄山,这是不是哥本人的一种阵前投敌的预谋?哥舒翰如果真的是忠于唐玄宗,而且在万般无奈的情况下必须出征,也考虑到出征失败可能性较大,那为什么不能事先做好一些善后的措施,比如进攻保持缓慢的节奏,同时争取等待各处的援军,或者安排足够的兵力防守潼关?潼关是长安唯一的屏障,哥舒翰怎么可能不知道丢了潼关的后果是什么呢?即使被迫进攻叛军失败,只要能守住城等到援兵,局势就会有起色,这些哥舒翰应该都能想到。真相已不可考,大部分的失败责任都被认为是唐玄宗和杨国忠的急进,而哥舒翰的临场错误指挥和变节投敌却鲜有提及。我无意为杨国忠正名,而只是从另一个角度来看待题目中那位传说中的唐朝名将。
鲁庄公十年春,曹刿的指挥鲁国军队在
长勺(现山东的莱芜)击败了来犯的齐国军队,史称“长勺之战”。此役成为各国军事史上经常出现的分析案例。指挥官曹刿的“一鼓作气”理论普遍被后世认为比喻趁劲头大的时候鼓起干劲,一口气把事情做完。那么齐鲁长勺之战,鲁军获胜的原因是否就是鲁军只敲了一通鼓,所以劲头比齐军更大导致最后获得战役的胜利?如果真的是这样,那么古代打仗的时候,双方都死死憋着,就等着对方“二而衰,三而竭”的时候才敲自己的第一次战鼓?显然是不可能的。我认为,鲁军能获胜的首要原因是齐军的轻敌。当时正值齐桓公刚刚继位欲报鲁国支持公子纠之仇,齐国势力向来远远超过鲁国,所以讨伐鲁国并获取胜利被大多数齐国人认为是意料之中的事情。这样的心态就滋生了轻敌的心态。长勺对阵之时,齐军连续敲了三通鼓,而对手鲁军没有任何反应,这也会让本来就轻敌的齐军更加骄傲,认为鲁军心存胆怯。而鲁军看到齐军步步逼近,一次次的鼓声让心理更加紧张,在生死存亡之际,一种弱者求生反抗的本能被曹刿的第一通鼓给激发出来;齐军没有料想对手的心理的变化导致战斗力陡然增强,失败就成定局了。其次,春秋时代诸侯之间的战争地点多为平原(莱芜即属于平原地貌),通过战车和步兵的列队冲击进行较量。由于战车较为笨重,无法灵活的转向和调头,需要战车和步兵队形的整体配合才能减少上述的劣势,这就对阵型和纪律要求非常高。一般来说在战场上,战车和步兵走一段路后,指挥官会敲鼓来指示大队人马重新站好位置,然后再继续前行,继续敲鼓站位,直至与敌军接触。并不是如果我们在电影里看的,某位主帅把战鼓一敲,所有的战车拼命向前冲。实际上古代的战车和步兵配合前进是比较缓慢的。齐军数量超过鲁军,如果双方打混战对攻,齐军会以数量的优势战胜鲁军,这点曹刿肯定在事先料到了。那么当对方进攻时,鲁军保持一个防守的阵型,即无论面临多少齐军,只要不被合围,在单点上鲁军和齐军是一对一的,这样子就削弱了齐军在数量上的优势。最后,我认为鲁军取得胜利有很大侥幸的成分。“齐师败绩。公将驰之。刿曰:未可。下视其辙,登轼而望之,曰:可矣。遂逐齐师。”曹刿对实力明显较弱的鲁军很快打退齐军感觉有些意外,他甚至不敢相信齐军真败,“夫大国,难测也,惧有伏焉”。直到他看到齐军撤退混乱,才确信已经取得胜利。当时的情形,有可能是齐军前锋受挫,仍然还有机会以人数的优势歼灭鲁军,只不过齐军没有料到鲁军的反击如此坚决,全体都被打了一个措手不及以致后来整体溃败。所以鲁军能赢得此战,除了指挥得当,三军用命,还有一定的侥幸。说到这里,我对“一鼓作气”这个词有了新的理解。我认为这个词用来说明把握正确的时机,做出最佳的选择。无论是敲第一通鼓,还是第二通第三通,只要是在最有利的时候发出行动,那么就可以取得好的效果。人的干劲最大,可是做事情的时机如果不是最好,那么想把事情完成的成功率也不大。所以,现代意义的一鼓作气更像是一种误解,一种自信的,美好的主观愿望。
位于晋北的宁武关,在冷兵器时代的军事地理
位置非常重要。它背靠芦芽山,东南面是忻州盆地,北面是朔州盆地,西面是晋西高原。如果占领了宁武关,可通过朔州盆地直指重镇大同,或者东南而下占领忻州盆地攻击太原。如果讲防守,那就是说要守住太原或大同,宁武关是绝对不能丢的。这些是我通过谷歌地图的分析结果。据史料记载,宁武关于明朝成化三年建成,为万里长城上的重要关隘。《边防考》说:“以重兵驻此,东可以卫雁门,西可以援偏关,北可以应云朔,盖地利得世。”后来明朝历代皇帝均在此处囤积重兵并且逐年屡次加固城墙。山西地貌多山,可以耕作的土地较少,且集中于几个盆地地区。古代的游牧民族想要掠夺这几个相对富饶的地区,往往也要竭力先攻占领宁武。宁武重要的地理位置,也使得它具有异常悲壮的传奇色彩。
李自成在甲申年初的山西战场所向披靡,对手要么主动投降,要么是不堪一击。而在宁武关,李自成遭遇到守将周遇吉最顽强的抵抗,破关时李闯军队付出伤亡十万多人的代价。在俘虏周遇吉后,李自成命令将周挂在旗杆上乱箭射死,另外将周妻刘氏二十多位女眷一并烧死。最后李自成下达了屠城的命令,宁武关遭遇灭顶之灾。一向以收买民心为主的李闯部队,为什么执意要选择野蛮的屠城?难道只是因为李自成当时的愤怒吗?我认为有这样几个原因。首先,李自成的军事力量处于其巅峰时期,而突然遭受如此顽强的抵抗,还损失惨重,这些事情降低了军队的士气和心气。屠城可以作为一种在最短时间内使军队心态突然再次冲向高点的有效手段。杀人的快感可以让士兵们变得更加嗜血和凶暴。李自成这个时候已经决定要进攻北京,他需要保持战斗力不能下降。其次,屠城具有武力恫吓的作用,告诉其它的反抗势力,如果不合作,那么将得到毁灭性的下场。连宁武关这样的硬骨头都被毁灭了,说明李闯军队天下无敌,其它的明军必须得好好掂量自己。再次,据《明季北略》中记载“(闯)贼集头目计曰:宁武虽破,受创已深,自此达京,尚有大同兵十万,宣府兵十万,居庸兵二十万,阳和等镇兵合二十万,尽如宁武,讵有了遗哉?不若回陕休息,另走他途。”李自成军队内部一部分人担心其它各镇的明军倘若都像周遇吉部这样殊死力战,那么按原计划攻打北京将非常艰难。假设李自成听取撤回陕西休息的建议,那么会出现什么情形?各镇的明军马上会知道李自成攻打宁武关消耗巨大,可以集结发动反扑重新夺取宁武关。这个是李自成最不愿看到的。当时李闯军队如破似竹之时,已有部分的明朝兵将投降。这些人都是墙头草,唯有李闯不断胜利才能压住这些人,否则待到形式一变,这些人又会重新投降明朝攻击李自成军队。可以说,这是一群“欺软怕硬”的明朝军队。和明军作战多年,李自成非常了解这点。他没有退路,除了向外部表现得更为强硬,屠城就成了他方便的选择。客观的讲,效果还真的不错。后面的大同,宣城,居庸关各个军事明军重镇均不战而降。李自成部队到北京时人数不甚至足两万多人,据李天根在《爝火录》中记载:“贼破京城,兵不满二万,而孩子居其半”。因为太监和明朝官员的主动开门投降,才能这只“小股部队”占领了北京。作为一个军事将领,李自成在北上进攻的赌博可谓大获成功。为什么连宁武普通民众也不放过呢?李自成不怕在“迎闯王”的百姓中造成负面影响吗?我认为,宁武关从成化以来,屯军和住民的关系已经非常密切,甚至可能战时是兵,闲时是民那种双重身份。李自成无法逐一去识别,更担心这些人在李自成离开后再次聚集反叛,所以用了一劳永逸的法子,全都杀掉,不留后患。李自成和他农民军队,有积极和辉煌的一面,但是在宁武关的屠城是野蛮的,表现了当时他们思想中的劣根性。《罪唯录》中提到,李自成攻入北京时的两万军队中,还有很多缺胳膊少腿的士兵,据说就是在惨烈的宁武之战受伤的。虽然后续有其它部队陆续进驻北京,但是李自成的嫡系精锐部队由于在宁武之役消耗严重,在一片石战役中无法抵抗吴三桂和满清的联军。我认为李自成能占领北京是非常幸运的,而赌博不可用永远那么幸运,当李自成在占据优势时没有能审时度势,失去将优势转为胜势的机会,那么后面就难免为此付出极为惨痛的代价。
李自成后来在潼关兵败后,退走河南邓州时再次大开杀戒。邓州县志记载“自成败奔邓州,弥漫千里,老弱尽杀之,壮者驱而南下,留精兵三千平城、塞井灶。自武关至襄、汉间,千里无烟。”再后来,当李自成在通山县被杀后,他的军队打着“为皇帝报仇”的旗号“毁戮四境,人民如鸟兽散,死于锋镝者数千,蹂躏三月无宁宇”。李自成和他的军队的杀戮习性,确实更像是一群横蛮的土匪,而不是真正想“劫富济贫”的农民军队。试想,受尽明朝酷吏压迫,颠沛流离过着日子的流民,突然发现他和他加入的群体具有强毁灭性的能力,其间的巨大心理变化势必会使得以流民为主的李闯军队有时做出一些让人匪夷所思的,无法相信的野蛮行为。这是把双刃剑,李自成可以利用这种残暴去实现军事上的胜利。残暴一旦有了开头,再想收住和控制就变得非常难了。在北京的追账助饷,是这种残暴特性的另一种表现形式。这些都加剧了李自成的失败。
我很希望自己投身于冰冷的黑暗之中,索性
与黑暗融为一体。鲁迅说:“只有我被黑暗沉没,那世界全属于我自己”。写下这些文字的时候,感觉自己像一个蜷缩在黑暗角落的孩子,只有在这里才可以仔细自我咀嚼内心的悲哀,才可以用更加班驳的感觉去为自己寻找一个新梦。黑暗中,眼睛和耳朵无法获得更多的信息,它们不能再用那些思维定势来左右我的大脑。我所认知的宇宙,是写在教科书上的人们总结出来的经验和印象。我在获得这些历史经验的时候,正在丧失自己真正的思考。太多的思维定势或思维模式,造就了一批批社会化的人和所谓的习俗公义。这些外强中干的社会化产品,内心是浮躁的。我发现身边大多数人说话和沟通的时候,非常喜欢用肯定的定义语句。比如,如果不怎样,那么必定会怎样。很少想到事物的复杂性和多元性。或许很多人要反驳我,做事情就是要强势,要有“快刀斩乱麻”的魄力。我并不认为“快刀斩乱麻”就是一种值得提倡的普遍行为。如果有足够的时间去处理,为什么不能把麻理清楚了?缺乏精神的能源,人就容易浮躁和迷茫,就不会快乐。社会化的快乐绝大多数来自人与人的交往,这种交往需要的是彼此的理解。也只有彼此真正的去理解和体谅,才不至于被浮躁或者“脾气不好”所击倒。对我来说,快乐在哪里呢?它存在于黑暗中,一种去物质化的自由思想即是快乐。在现实生活中所谓的快乐,更像是社会思想传统和定势强加给我的某种幻觉和欺骗。我想上升,这些东西就愈发沉重,拼命的拽着我不放。我仿佛无法脱离社会化的定势和各种纷争,同时这种禁锢和不自由让我十分痛苦。身边有些人们认为我是“性情怪异”,可谁能真正理解我呢?社会化的种种压力,人世间的虚妄与苦难,人类的罪恶与绝境,使我充满了无边无际的迷茫和苦闷。从理想的幻梦中,浮沉着走向幻灭,又走进深渊般的噩梦之中。实质上,我仍然依恋着梦,更是希望企图借助梦境来完成对自身困惑灵魂的探索。
1644年三月,吴三桂被崇祯皇帝封为平西
伯,奉命进京勤王。三月十三日吴军已全部进关,驻扎在昌黎、滦州、乐亭、开平一带,其中位于先锋部队的开平距离北京仅有160公里。如果按照急行军速度(5.5公里/小时),每天行军8小时计算,那么先锋部队的每日步行的路程至少为50公里,需要三天半的时间即可达到北京战场,也就是在三月十七日晚到达。这还只是步兵,如果是骑兵,还会更快。三月十九日,北京城被李自成攻破,这里吴军还只是停留在现唐山附近。这只能说明吴三桂不是真心想去奉旨勤王,他在观望态势的发展。此时吴军总数不超过五万,指望靠这只部队去抵挡李自成士气正盛的十几万大军是不可能的。当时明朝在中国北方的精锐部队,只剩下吴军。即便吴军此次能守住京城,也面临着被李自成部队长年围城,且无任何外援部队的艰难战局。李闯破城已是定局了。既然料到是定局,那所谓的勤王就是形式。吴三桂是个颇有谋略的人,如果此时他派人主动向李自成乞降,首先他在李自成心中的政治资本就小了很多;其二在名声上也说不过去,毕竟吴氏是辽东“世受皇恩”的武将世家;最重要的是,吴三桂对李自成心存疑虑,自古以来“打天下容易,坐天下难”,必须得看看他进城后的执政方向是什么。
三月十九日,李自成攻陷北京,崇祯皇帝在景山自杀。大量的明朝官员纷纷投奔李自成,深受明朝官吏压迫的老百姓更是夹道欢迎。李自成俘虏了吴三桂的父亲吴襄,并派人携带圣旨和吴襄家书去招降吴三桂。吴三桂虽然每天行军缓慢,但是必定会派出多人去京城各处探听情况。此时,李自成刚进北京几天,城内各处一片欢腾,军队对老百姓也还是秋毫无犯。看起来,这又是中国古老王朝的一次正常更迭。吴三桂在接到李自成的诏书后,考虑到父亲和家人的安慰,决定先答应归顺。我认为他此刻没有任何其他的选择,皇帝都自杀了,勤王失去了意义;天时,地利均不占优势,去北京和李自成部队拼命那是自取灭亡;想投降满清,可目前吴军距离北京更近,如果李自成大军掩杀过来,那也是玩完。先答应李自成,暂且保住家人的性命,继续慢慢向北京进发,密切关注李自成发展的态势。三月二十二日,吴三桂答应归顺李自成,并在行营所在地方(今河北省卢龙县)贴出安民告示,做出进京“朝见新主”的架势。
三月二十六日,吴三桂到达距离北京大概120公里的河北省玉田县。从卢龙到玉田约100公里,而吴军却走了四天。如此缓慢的进行速度,再次说明吴三桂谨慎观望的心理。而就在玉田,事情发生了转折性的变化。李自成在进城的一周时间内,认为大势在手,对官僚豪绅的追账助饷银越演越烈。很多部队的军官和士兵以一种暴发户的心态强取豪夺,甚至发展到不受李自成的控制。李自成这个时候没有表现出任何长远的打算和过人的魄力,更加要命的是,他认为他的主要敌人是明朝在南方的残余势力,忽视了对满清的战备。要不,他把最熟悉对满作战的吴三桂及其部队调到北京,而只派唐通带区区八千人代替吴三桂镇守山海关。吴三桂何等聪明之人,短短数日,已将李自成看的清清楚楚。李自成对明朝官僚豪绅的强力逼迫,必然把他们推向对立面;对满战略上的失误,必然会让满清有机可趁;他连自己的部队都不能完全控制,那么他的种种承诺,吴三桂还能信吗?那么吴三桂该何去何从?
用这五万人马南下去南京,那得穿过李自成重兵驻守的河北或山东。长途跋涉,恶战连连,而部队没有任何后勤和补充,估计还没有到南京就被李自成各部合围歼灭了。兄长吴大凤,舅舅祖大寿都降了满清,从皇太极到多尔衮多次写信招降,表明满人对吴三桂和他镇守的山海关给予高度的重视。既然是重视,那么就是自己继续荣华富贵,高官厚禄的资本。至于名节,投降李自成是降,投降满清也是降,名节已经毁了,那么还不如在李自成和满清中间找一个对自己发展有利的主子。李自成是靠不住了,那就只剩下投降满清了。吴三桂此时心中唯一的想法就是,大军回师重取山海关,然后以此为向满清献降。山海关由吴三桂经营多年,且目前驻守人马不多,取下此城较为容易。最关键的是时间,既要迅速攻下山海关,同时还得尽量拖延李自成的追兵。四月初,吴三桂占领山海关。四月十三日,李自成率大军从北京出发前往山海关,四月十五日,吴三桂派人向多尔衮乞降求援,四月二十日李自成大军到达山海关,四月二十一日李自成与吴三桂血战,四月二十一日晚多尔衮大军到达山海关,吴三桂正式开关投降,吴满联军在一片石击溃李自成,四月二十六日,李自成被迫退军北京,杀吴三桂全家泄愤。
吴三桂的军队在跟随他进京勤王,回取山海关,和投降满清的各个时期,竟然没有发生大的哗变,说明吴三桂对这只军队的苦心经营和已经树立起巨大威望。吴三桂是个非常有能力的人。这种人往往自视甚高,野心勃勃。对于家庭,吴三桂肯定希望能尽量保全,但是对他来说,他个人的权势才是最重要的。所谓的流传在民间的陈圆圆传说,只要能分散大众的注意力,混淆事件的真相,“颇以风流自赏”的吴三桂想必也是不反对的。