镜子虽然是同一块镜子,但是这块镜子,里面可以是猪八戒的像,也可以是孙悟空的像。所以,我们也不可以执着于一块镜子而不放。
var 镜子1=“”;
镜子1=“猪八戒”;
镜子1=“孙悟空”;
上面的伪代码说明,镜子这个变量的值,变了,所以我们说镜子是一个变量,名副其实啊!
但是,如果有人问,镜子里面到底是猪八戒,还是孙悟空?
这个问题不好回答,因为没有说是哪个时候的镜子,是一分钟前的,还是一分钟后的?
所以,变量易变这个特征,它带来好处的同时,却增加了更多的麻烦。
其实,要解决这麻烦,我们把镜子换成照片:
var 照片1=“猪八戒”;
var 照片2=“孙悟空”;
当然实际产生一张照片的过程还是比较复杂,我们这里将这个过程简化,认为一张照片就是胶卷上的一张底片生成的,底片用了就不能再使用了,也就是说,照片一旦拍了,就不能改变了,但是照片在使用之前,是可以用来拍摄任意照片内容的,所以,这里又引出了一个变量的“不变性”问题。
变量的不变性,使得变量的值变得稳定,追踪变量的值变得简单。很多函数式语言都支持这种“不可变变量”的,例如在F#中,可以使用下面的方式来证明:
let x = 10
let y = 5
let x = x + y // Compile Error
函数式语言变量的不变性,使得在高并发下程序运行的安全性得到了保证,不用担心某个线程把变量修改了,缺点就是需要更多的内存来复制变量值,程序运行效率降低。
符号推理
变量的这种不变性,有些函数式语言称之为“变量绑定”,变量和它的值一旦绑定后,就不能改变了。这样,我们讨论某个变量的时候,就可以等价的讨论它绑定的值。这是一个很有用的方式,比如汇编语言,我们用一些汇编指令符号,来代替具体的二进制机器指令,为编制复杂的计算机程序成为可能;之后,我们又进一步对汇编指令进行抽象,发明了计算机高级语言,为编制大规模复杂程序提供了可能。假如你不是搞计算机的,但你学习过中学数学吧,“代数”,解方程总知道吧?我们用代数来求解复杂的方程,化繁为简。在物理学中,符号在物理学公式中的作用更加重要了,比如爱因斯坦的质能方程:
方程中,E代表能量,m代表物质的质量,c代表光速常量,质能方程描述了质量与能量之间的当量关系的方程。
方程式的左边表示能量,方程式的右边,定义了质量和光速常量的计算关系,通过这种关系可以计算出物质质量转换为能量的大小。
由于这个方程式非常著名,没有它就没有原子弹,就没有二战后的和平,就没有人类取之不尽的核能能源,所以在这个方程式中,这几个符号的关系就规定好了,从这种符号的关系,可以得到非常重要的理论并且应用这种理论发明各种伟大的或者重要的技术,那么我们在讨论过程中进行的这些活动,站在符号的角度,它就是“符号推理”。换言之,我们在讨论能量和质量的关系的时候,符号E “隐藏”着这符号mc² 的关系,这个关系在其他人不能发现,但是爱因斯坦发现了,所以爱因斯坦能成为伟大的科学家,而我们不能。对我们普通人而言我们没有能力去揭示事务内部的本质的机制,但我们可以从事物之间外部的表象来总结分析,从而去假设事物内部的运行规律,然后再用这个假设来解释更多的外部现象。如果基于这种假设能够比较完善的解释事物之间浅显的容易证实的关系,那么这个假设就是“科学”的,这个研究方法就是科学的研究方法。
如果这些符号,不是英文字母,单词,而是中文词汇,比如阴,阳,金,木,水,火,土,天干地支,不可以吗?当然可以,中医的阴阳五行理论,正是这样一套符号推理体系。
二、【藏像】理论
【解剖学】的困境
在古代,受限于科学技术的条件,我们不能直接揭示出一些事物的内部机制,但能够用上面说的同样的方式,从事物外部的表象之间的关系,来推导事物的内部机制。在中医的语境中,这种方法理论,就是“藏像”理论。
百科词条这样解释“藏像”:
“藏象”二字,首见于《素问·六节藏象论》。藏指藏于体内的内脏,象指表现于外的生理、病理现象。藏象包括各个内脏实体及其生理活动和病理变化表现于外的各种征象。
藏象学说是研究人体各个脏腑的生理功能、病理变化及其相互关系的学说。它是在历代医家在医疗实践的基础上,在阴阳五行学说的指导下,概括总结而成的,是中医学理论体系中极其重要的组成部分。
为什么要用“藏像”理论去研究人体?
在西医中,解剖学是一门很重要的学科,它是外科学的基础,现在已经发展到了显微外科学,解剖学通过将人体的组织,器官进行深入的解剖,寻找出人体的详细构造结构。但是,这种对人体的研究方式,有一个先天的缺陷,人体是一部复杂的活的精密的“仪器”,不太可能对活的生命体进行解剖观察,因此现有解剖学得出结论不足于真实解释人体构造运行的规律。
黑盒测试与白盒测试
作为程序员,天天跟测试打交道,一定知道黑盒测试跟白盒测试的概念。大部分测试人员,都在做黑盒测试,即通过运行程序,在功能操作中发现你的bug,而不是反编译你的程序,然后一行行阅读代码,来分析寻找你的bug。作为开发人员的你,都不太可能通过仅阅读自己的代码就发现所有bug,怎么可能要求测试人员做到白盒测试呢?所以,黑盒测试,是一种被证明了的可行的测试方式,也是软件工程中必须做的一个工作环节,如果说软件工程是一种科学的工程学方法,你不能说黑盒测试不科学吧?
既然我们不能要求测试人员来做白盒测试,那么就不要要求古代的医生必须要会搞现在这样的解剖才算是医生了,他们通过对人体外表症状和相关关系的分析研究,一样能够找到人体健康运行的规律。这种方法,就是“藏像”理论的研究方法。我们不必去活体解剖一个病人,看他内脏有什么病变,我们通过中医基础理论的气血经络,观察发现同一类疾病相关的人体外在的表现,推导此时人体内部脏腑功能的运行情况,然后再从这些情况来推导出脏腑功能改变的关系,预测出疾病发展转变的路径,最后再通过人体外部表现出来的新的病症,来验证这个理论推导的正确性。
扁鹊见蔡桓公
有一个故事,能够很好的说明这个过程,这就是《扁鹊见蔡桓公》:
扁鹊见蔡桓公,立有间,扁鹊曰:“君有疾在腠理,不治将恐深。”桓侯曰:“寡人无疾。”扁鹊出,桓侯曰:“医之好治不病以为功!”
居十日,扁鹊复见,曰:“君之病在肌肤,不治将益深。”桓侯不应。扁鹊出,桓侯又不悦。
居十日,扁鹊复见,曰:“君之病在肠胃,不治将益深。”桓侯又不应。扁鹊出,桓侯又不悦。
居十日,扁鹊望桓侯而还走。桓侯故使人问之,扁鹊曰:“疾在腠理,汤熨之所及也;在肌肤,针石之所及也;在肠胃,火齐之所及也;在骨髓,司命之所属,无奈何也。今在骨髓,臣是以无请也。”
居五日,桓侯体痛,使人索扁鹊,已逃秦矣。桓侯遂死。
神医扁鹊通过观察蔡桓公外部的病症,就知道了蔡桓公此时所得何病,并且还能预知此病的演变发展,同时给出蔡桓公合适的治疗方案。无奈蔡桓公炜疾忌医,不治而亡。扁鹊的这个故事,他使用的方法正是中医的"藏像"理论的方法。
小结
这两篇文章是从程序员和软件编程角度,来观察解释中医理论的,本篇从变量的表象到变量的内部关系,探讨了变量的易变性和不变性,并且由变量的不变性讨论了符号推理的简单原理,由这种推理方式说明了对于复杂问题的解决模式,这就是由表及里问题分析解决模式,这种模式也是工程学中科学的工作方式,中医使用的“藏像”理论,正是使用的这种模式。