西方思想史谱系图
古希腊罗马哲学
古希腊罗马哲学包括自然哲学、形而上学和伦理哲学三个阶段,为西方哲学的理性思辨和形而上学打下了传统根基。它提出了逻各斯、存在、实体等成为西方哲学的经典命题,而柏拉图和亚里士多德关于共相性质的争论开启了中世纪基督教哲学关于唯名论和实在论的争论。
中世纪基督教哲学
西罗马帝国崩溃后,基督教成为西欧不可侵犯的绝对意识形态,哲学成为“神学的婢女”,被基督教信仰的浓重阴影所笼罩。从教父哲学(柏拉图-奥古斯丁体系)到经院哲学(亚里士多德-阿奎那体系)的过渡反应了希腊罗马理性精神的复苏,而唯名论和实在论的对立为近代理性主义和经验论的兴起开辟了道路。
近代早期西欧哲学
近代早期西欧哲学从文艺复兴和宗教改革运动开始,演化出欧陆唯理论同不列颠经验论的对立,其核心是理性反思和对经验(外在或内在)的重视。唯理论演变成莱布尼茨-沃尔夫体系中的独断论,而经验论则在休谟那里成为彻底的怀疑主义,这为法兰西启蒙思想和德意志古典哲学的出现埋下了伏笔。
法兰西启蒙思想和唯物主义
18世纪法国哲学包括法国自然神论和唯物主义两块,探讨的核心问题是人与自然的关系,理论上则表现为思维和存在的关系。法国自然神论奠定了西方政治学的基础,而激进的卢梭则引导了后世批判哲学(马克思和尼采)的出现。法国唯物主义者否定自由意志,但推崇人的理性,使理性主义成为法国哲学鲜明的特点。
德意志古典哲学
18C末19C初,德意志古典哲学体系的出现标志着传统西方哲学的最高成就。它将考察重点转向主体与客体的关系,实现了西方哲学继亚里士多德形而上学体系之后的第二次飞跃。康德通过对自在之物和现象的严格区分,发展出认识论的先验自我意识统摄机能和道德实践领域的纯粹理性,以及沟通两者的判断力批判。黑格尔通过辩证法三段论将整个世界容纳在绝对精神从自在状态过渡到自为状态,最终达成绝对理性自我意识的宏大历史过程。因此,黑格尔成为最后一个形而上学大体系,并引发费尔巴哈和马克思对其的反思。
过渡时期
19C中后期,形而上学和理性主义的传统西方哲学走向终结,导致了向现代西哲的过渡时期。
编程思想的理解(POP,OOP,SOA,AOP)
1)POP--面向过程编程(Process-oriented programming ):
面向过程编程是以功能为中心来进行思考和组织的一种编程方法,它强调的是系统的数据被加工和处理的过程,在程序设计中主要以函数或者过程为程序的基本组织方式,系统功能是由一组相关的过程和函数序列构成。面向过程强调的是功能(加工),数据仅仅作为输入和输出存在。这种过程化的思想是一种很朴素和普遍的思想和方法,人类很多活动都是这种组织模式,比如工厂生产,企业服务等。面向过程以数据的加工处理过程为主线,忽略了过程的所属、边界和环境,混淆了服务功能和自我功能(比如人可以砍树,这就是一种服务功能,有输入也有输出;它可以提供给外部,而行走,则是自我功能,没有输入也没有输出),外部环境和内部组织,以及环境数据和原料性数据之间的区别。从思维上来讲,面向过程更强调细节,忽视了整体性和边界性,但这与现实世界有很大的出入,因为现实世界中,这种过程都不是孤立存在的,而是从属于某个对象,因此,面向过程虽然反映了现实世界的而一个方面(功能),但无法更加形象的模拟或者表示现实世界。
2)OOP--面向对象编程(Object Oriented Programming):
世界是由一个个对象组成的,因此面向对象的思维方式更加接近现实世界,面向对象编程的组织方式也更加贴近现实世界。面向对象以对象为中心,将对象的内部组织与外部环境区分开来,将表征对象的内部属性数据与外部隔离开来,其行为与属性构成一个整体,而系统功能则表现为一系列对象之间的相互作用的序列,能更加形象的模拟或表达现实世界。在编程组织中,对象的属性与方法不再像面向过程那样分开存放,而是视为一个整体(程序的最终实现其实还是分离的,但这仅仅是物理实现上的,不影响将对象的这两个部分视为一个整体),因此具有更好的封装性和安全性(表征内部的属性数据需要通过对象的提供的方法来访问)。面向对象强调的是整体性,因此面向对象与面向过程在很多方面是可以互补的。同时由于对象继承和多态技术的引入,使得面向对象具有更强、更简洁的对现实世界的表达能力。从而增强了编程的组织性,重用性和灵活性。
面向对象依然保留着面向过程的特性,面向过程中的功能变成了对象的方法,加工处理功能变成了对象的服务性方法,而这部分方法依然需要外界的输入,同时也对外界进行输出,只是输入和输出也变成了对象。在面向对象编程中,大多时候,我们并不需要关心一个对象对象的方方面面,有些对象在整个系统中都是充当“原料”和“成品”的角色,其本身的行为并不在我们关心的范围,而另外有些对象处于一种加工厂地位,我们也仅关心这些对象的服务性功能,不需要太多关注对象内部属性和自我行为,针对这些对象关注点的不同会对对象进行分类,比如前面提到的两类对象,就是从在系统中所处的角色不同而分类,前者叫实体对象,后者称为操作对象。
从方法论来讲,我们可以将面向过程与面向对象看做是事物的两个方面--局部与整体(注意:局部与整体是相对的),在实际应用中,两者方法都同样重要。
面向过程和面向对象是编程方法中最基本的两种方法,处于编程方法体系的底层。
3)SOA--面向服务架构
面向服务以服务为出发点,组织和协调相关的对象来提供目标服务,对外提供必要的参数输入接口,将服务的结果作为输出,而“服务”本身的计算过程和组织则被封装在一起,对用户透明。其实面向服务也是以功能(服务)为中心,但其强调的是功能的整体性,封装性、自包性,而不是过程性和协作性,整体性指的是服务对外是作为一整体来体现的;封装性指的是服务完成的计算和处理过程、自有属性都不直接暴露给外部,除了通过公共的服务接口进行交互外,用户无法也不用知道内部的具体组织和协调的;自包性指的是服务的完成不依赖于服务的调用方,服务系统的本身就可以完成服务所需的功能;因此面向服务在程序组织上处于更高的层次,是一种粗粒度的组织方法。面向服务与面向过程、面向对象本质上没有什么不同,区别就在于考虑问题的层面不同。面向对象和面向过程多用于系统内部的组织和管理,而面向服务主要用于系统间的组织和管理。面向服务是更大的对象或者过程。
面向服务设计的三大原则是无状态、单一实例和明确的服务接口。明确的服务接口是强制和必须的,但无状态和单一实例则不属于强制性原则,虽然说服务提供状态管理会增加服务的复杂性,多实例也一样会增加服务的复杂性(需要增加同步并发处理等,而且会导致访问不确定性),但很多情况下这又是无法避免的。
现在的面向服务架构,主要用于系统间的交互和集成,有一系列的标准(XML,SOAP,WSDL,XSD,WS-policy,WS-BPEL等)。
4)AOP--面向方面.
面向方面应该属于面向对象的范畴,从对象组织角度来讲,我们一般采用的分类方法都是使用类似生物学分类的方法,以“继承”关系为主线,我们称之为纵向。但事实上,对象之间除了这种纵向分类之外,我们同样可以从横向的角度去观察这些对象,这就是面向方面(切面)编程的基本出发点。原来要解决这类问题,我们一般是采用接口来完成,但这有两个问题,一是对象设计的时候一般都是纵向思维,如果这个时候需要就需要考虑这些不同类的对象的这些共性,不仅会增加设计的难度和复杂性,还会造成类的接口过多而难以维护,二是需要对现有的对象动态增加这种行为或者责任的时候非常困难。现在很多程序的都是以中间语言存在,执行的时候是解释执行或者即时编译执行,这也为增加这种切面行为或者责任提供了比较好的切入口。面向方面跟Api hook很类似。面向方面编程的具体一些原理和做法,可以参考我前面的博文。
史上最著名的10个思想实验
思想实验是一种精神上的观念或假想,通常和谜语相似,是哲学家和科学家用以了解什么是大众思想的一种简单方法。他们的运用在如哲学和理论物理(理论物理无需做实验)等抽象领域是最为广泛的。他们像是为思想准备的一份大餐,最终给出复杂的答案。即使思想实验本身也会有无法理解的时候,这并不奇怪。下面是10个著名的思想实验,还有他们所要表达的哲学、科学和伦理意义。
10.电车难题(The Trolley Problem)
“电车难题”是伦理学领域最为知名的思想实验之一,其内容大致是:一个疯子把五个无辜的人绑在电车轨道上。一辆失控的电车朝他们驶来,并且片刻后就要碾压到他们。幸运的是,你可以拉一个拉杆,让电车开到另一条轨道上。但是还有一个问题,那个疯子在那另一条轨道上也绑了一个人。考虑以上状况,你应该拉拉杆吗?
解读:
电车难题最早是由哲学家Philippa Foot提出的,用来批判伦理哲学中的主要理论,特别是功利主义。功利主义提出的观点是,大部分道德决策都是根据“为最多的人提供最大的利益”的原则做出的。从一个功利主义者的观点来看,明显的选择应该是拉拉杆,拯救五个人只杀死一个人。但是功利主义的批判者认为,一旦拉了拉杆,你就成为一个不道德行为的同谋——你要为另一条轨道上单独的一个人的死负部分责任。然而,其他人认为,你身处这种状况下就要求你要有所作为,你的不作为将会是同等的不道德。总之,不存在完全的道德行为,这就是重点所在。许多哲学家都用电车难题作为例子来表示现实生活中的状况经常强迫一个人违背他自己的道德准则,并且还存在着没有完全道德做法的情况。
9.空地上的奶牛(The Cow in the field)
认知论领域的一个最重要的思想实验就是“空地上的奶牛”。它描述的是,一个农民担心自己的获奖的奶牛走丢了。这时送奶工到了农场,他告诉农民不要担心,因为他看到那头奶牛在附件的一块空地上。虽然农民很相信送奶工,但他还是亲自看了看,他看到了熟悉的黑白相间的形状并感到很满意。过了一会,送奶工到那块空地上再次确认。那头奶牛确实在那,但它躲在树林里,而且空地上还有一大张黑白相间的纸缠在树上,很明显,农民把这张纸错当成自己的奶牛了。问题是出现了,虽然奶牛一直都在空地上,但农民说自己知道奶牛在空地上时是否正确?
解读:
空地上的奶牛最初是被 Edmund Gettier用来批判主流上作为知识的定义的JTB(justified true belief)理论,即当人们相信一件事时,它就成为了知识;这件事在事实上是真的,并且人们有可以验证的理由相信它。在这个实验中,农民相信奶牛在空地上,且被送奶工的证词和他自己对于空地上的黑白相间物的观察所证实。而且经过送奶工后来的证实,这件事也是真实的。尽管如此,农民并没有真正的知道奶牛在那儿,因为他认为奶牛在那儿的推导是建立在错误的前提上的。Gettier利用这个实验和其他一些例子,解释了将知识定义为JTB的理论需要修正。
8.定时炸弹(The Ticking Time Bomb)
如果你关注近几年的政治时事,或者看过动作电影,那么你对于“定时炸弹”思想实验肯定很熟悉。它要求你想象一个炸弹或其他大规模杀伤性武器藏在你的城市中,并且爆炸的倒计时马上就到零了。在羁押中有一个知情者,他知道炸弹的埋藏点。你是否会使用酷刑来获取情报?
解读:
与电车难题类似,定时炸弹情景也是强迫一个人从两个不道德行径中选择的伦理问题。它一般被用作对那些说在任何情况下都不能使用酷刑的反驳。它也被用作在极端形势下法律——就像美国的严禁虐囚的法律——可以被放在第二位的例子。归功于像《24小时》的电视节目和各种政治辩论,定时炸弹情景已成为最常引用的思想实验之一。今年早些时候,一份英国报纸提出了更为极端的看法。这份报纸提议说,如果那个恐怖分子对酷刑毫无反应,那么当局者是否愿意拷打他的妻子儿女来获取情报。
7.爱因斯坦的光线(Einstein’s Light Beam)
爱因斯坦著名的狭义相对论是受启于他16岁做的思想实验。在他的自传中,爱因斯坦回忆道他当时幻想在宇宙中追寻一道光线。他推理说,如果他能够以光速在光线旁边运动,那么他应该能够看到光线成为“在空间上不断振荡但停滞不前的电磁场”。对于爱因斯坦,这个思想实验证明了对于这个虚拟的观察者,所有的物理定律应该和一个相对于地球静止的观察者观察到的一样。
解读:
事实上,没人确切知道这意味着什么。科学家一直都在争论一个如此简单的思想实验是如此帮助爱因斯坦完成到狭义相对论这如此巨大的飞跃的。在当时,这个实验中的想法与现在已被抛弃的“以太”理论相违背。但他经过了好多年才证明了自己是正确的。
6.特修斯之船(The Ship of Theseus)
最为古老的思想实验之一。最早出自普鲁塔克的记载。它描述的是一艘可以在海上航行几百年的船,归功于不间断的维修和替换部件。只要一块木板腐烂了,它就会被替换掉,以此类推,直到所有的功能部件都不是最开始的那些了。问题是,最终产生的这艘船是否还是原来的那艘特修斯之船,还是一艘完全不同的船?如果不是原来的船,那么在什么时候它不再是原来的船了?哲学家Thomas Hobbes后来对此进来了延伸,如果用特修斯之船上取下来的老部件来重新建造一艘新的船,那么两艘船中哪艘才是真正的特修斯之船?
解读:
对于哲学家,特修斯之船被用来研究身份的本质。特别是讨论一个物体是否仅仅等于其组成部件之和。一个更现代的例子就是一个不断发展的乐队,直到某一阶段乐队成员中没有任何一个原始成员。这个问题可以应用于各个领域。对于企业,在不断并购和更换东家后仍然保持原来的名字。对于人体,人体不间断的进行着新陈代谢和自我修复。这个实验的核心思想在于强迫人们去反思身份仅仅局限在实际物体和现象中这一常识。
5.伽利略的重力实验(Galileo’s Gravity Experiment)
为了反驳亚里士多德的自由落体速度取决于物体的质量的理论,伽利略构造了一个简单的思想实验。根据亚里士多德的说法,如果一个轻的物体和一个重的物体绑在一起然后从塔上丢下来,那么重的物体下落的速度快,两个物体之间的绳子会被拉直。这时轻的物体对重物会产生一个阻力,使得下落速度变慢。但是,从另一方面来看,两个物体绑在一起以后的质量应该比任意一个单独的物体都大,那么整个系统下落的速度应该最快。这个矛盾证明了亚里士多德的理论是错误的。
解读:
这个思想实验帮助证明了一个很重要的理论:无论物体的质量,不考虑阻力的情况下,所有物体自由落体的速率都是一样的。
4.猴子和打字机(Monkeys and Typewriters)
另一个在流行文化中占了很大分量的思想实验是“无限猴子定理”,也叫做“猴子和打字机”实验。定理的内容是,如果无数多的猴子在无数多的打字机上随机打字,并持续无限久的时间,那么在某个时候,它们必然会打出莎士比亚的全部著作。猴子和打字机的设想在20世纪初被法国数学家Emile Borel推广,但其基本思想(无数多的人员和无数多的时间能产生任何/所有东西)可以追溯至亚里士多德。
解读:
简单来说,“猴子和打字机”定理是用来描述无限的本质的最好方法之一。人的大脑很难想象无限的空间和无限的时间,无限猴子定理可以帮助理解这些概念可以达到的宽度。猴子能碰巧写出《哈姆雷特》这看上去似乎是违反直觉,但实际上在数学上是可以证明的。这个定理本身在现实生活中是不可能重现的,但这并没有阻止某些人的尝试:2003年,一家英国动物园的科学家们“试验”了无限猴子定理,他们把一台电脑和一个键盘放进灵长类园区。可惜的是,猴子们并没有打出什么十四行诗。根据研究者,它们只打出了5页几乎完全是字母“s”的纸。
3.中文房间(The Chinese Room)
“中文房间”最早由美国哲学家John Searle于20世纪80年代初提出。这个实验要求你想象一位只说英语的人身处一个房间之中,这间房间除了门上有一个小窗口以外,全部都是封闭的。他随身带着一本写有中文翻译程序的书。房间里还有足够的稿纸、铅笔和橱柜。写着中文的纸片通过小窗口被送入房间中。根据Searle的理论,房间中的人可以使用他的书来翻译这些文字并用中文回复。虽然他完全不会中文,Searle认为通过这个过程,房间里的人可以让任何房间外的人以为他会说流利的中文。
解读:
Searle 创造了“中文房间”思想实验来反驳电脑和其他人工智能能够真正思考的观点。房间里的人不会说中文;他不能够用中文思考。但因为他拥有某些特定的工具,他甚至可以让以中文为母语的人以为他能流利的说中文。根据Searle,电脑就是这样工作的。它们无法真正的理解接收到的信息,但它们可以运行一个程序,处理信息,然后给出一个智能的印象。
2.薛定锷的猫(Schrodinger’s Cat)
薛定锷的猫最早由物理学家薛定锷提出,是量子力学领域中的一个悖论。其内容是:一只猫、一些放射性元素和一瓶毒气一起被封闭在一个盒子里一个小时。在一个小时内,放射性元素衰变的几率为50%。如果衰变,那么一个连接在盖革计数器上的锤子就会被触发,并打碎瓶子,释放毒气,杀死猫。因为这件事会否发生的概率相等,薛定锷认为在盒子被打开前,盒子中的猫被认为是既死又活的。
解读:
简而言之,这个实验的核心思想是因为事件发生时不存在观察者,盒子里的猫同时存在在其所有可能的状态中(既死又活)。薛定锷最早提出这个实验是在回复一篇讨论量子态叠加的文章时。薛定锷的猫同时也说明了量子力学的理论是多么令人无法理解。这个思想实验因其复杂性而臭名昭著,同时也启发了各种各样的解释。其中最奇异的就属 “多重世界”假说,这个假说表示有一只死猫和一只活猫,两只猫存在在不同的宇宙之中,并且永远不会有交集。
1.缸中的大脑(Brain in a Vat)
没有比所谓的“缸中的大脑”假说更有影响力的思想实验了。这个思想实验涵盖了从认知学到哲学到流行文化等各个领域。这个实验的内容是:想象有一个疯狂科学家把你的大脑从你的体内取出,放在某种生命维持液体中。大脑上插着电极,电极连到一台能产生图像和感官信号的电脑上。因为你获取的所有关于这个世界的信息都是通过你的大脑来处理的,这台电脑就有能力模拟你的日常体验。如果这确实可能的话,你要如何来证明你周围的世界是真实的,而不是由一台电脑产生的某种模拟环境?
解读:
如果你觉得这听起来很像《黑客帝国》,那么你说对了。这部电影以及其他一些科幻作品,都是在这个思想实验的影响下创作出来的。这个实验的核心思想是让人们质疑自身经历的本质,并思考作为一个人的真正意义是什么。这个实验的最初原型可以一直追溯至笛卡尔。在他的《Meditations on the First Philosophy》一书中,笛卡尔提出了能否证明他所有的感官体验都是他自己的,而不是由某个“邪恶的魔鬼”产生的这样的疑问。笛卡尔用他的经典名言 “我思故我在”来回答这个问题。不幸的是,“缸中的大脑”实验更为复杂,因为连接着电极的大脑仍然可以思考。这个实验被广泛的讨论着,有许多对于此实验前提的反驳,但仍没有人能有力的回应其核心问题:你究竟如何才能知道什么是真实?