热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

从编程语言的角度看中医的【藏像】理论

一、符号和名字在上一篇从程序员视角和编程语言角度看【中医】:一种生命健康编程语言,我们谈到了变量的命名问题,谈到了语言和文化霸权,这篇短文,将继续探讨名字问题的重要性。名字事关话语权,事关
一、符号和名字

在上一篇 从程序员视角和编程语言角度看【中医】:一种生命健康编程语言 ,我们谈到了变量的命名问题,谈到了语言和文化霸权,这篇短文,将继续探讨名字问题的重要性。

名字事关话语权,事关地位,甚至事关“霸权”,如果不信,你儿子的名字怎么取,跟你老婆姓还是跟你姓?假如你老婆说儿子必须跟她姓,这个名字问题是不是一下子就变成非常重要的问题了?

中医对于名字问题,看的很深入,叫做“藏像”。

变量的符号语义


前一篇同样的问题继续看:
vA="";
vB="";

请问这是一个意思吗?

如果从变量值的语义来看,是一个意思;

如果从变量的“符号”角度看,这是两个变量,不是一个意思。
有朋友问了,为什么用v开头?
我说,白马非马  ,一个符号而已,你用其它开头也可以,这里只是举例 。
如果单纯从这点代码 看不出什么东东。
 
如果用中医的“藏像”理论来解释,vA=""; 这里的空字符串,是vA这个变量的“像”,而这个“像”藏在变量vA里面在。
现在明白了老子的“ 道可道,非常道;名可名,莫可名”了吧?
 
如果难以理解,猪八戒打碎镜子的场景,能够理解吧?
碎在地上的一小块镜子,是不是也可以呈现猪八戒的头像?
不要小看这块碎镜子,它可是大名鼎鼎的“全息理论”要研究的问题!

回过头来看,那么多碎镜子,哪一块里面是猪八戒?
你可以说都是,也可以说都不是。
因为镜子里面的猪八戒,不是真正的猪八戒。
 
所以,镜子里面是猪八戒的“像”,通过这个像,猪八戒不管藏在哪里,我都知道它长什么样子了。
现在回来说,这些变量,就是打碎了的镜子,变量的值,就是猪八戒的真身。
 
镜子虽然是同一块镜子,但是这块镜子,里面可以是猪八戒的像,也可以是孙悟空的像。所以,我们也不可以执着于一块镜子而不放。
这样子看起来,说这块镜子就是一个变量,就很容易理解了吧?
 

变量的易变性与不变性

上面说了这么多,貌似我什么都没有说啊,废话连篇!
如果觉得用白话不太容易理解,我们来看程序是怎么来表述这个问题的:
var 镜子1=“”;
镜子1=“猪八戒”;
镜子1=“孙悟空”;

上面的伪代码说明,镜子这个变量的值,变了,所以我们说镜子是一个变量,名副其实啊!

 

但是,如果有人问,镜子里面到底是猪八戒,还是孙悟空?

这个问题不好回答,因为没有说是哪个时候的镜子,是一分钟前的,还是一分钟后的?

所以,变量易变这个特征,它带来好处的同时,却增加了更多的麻烦。

其实,要解决这麻烦,我们把镜子换成照片:

var 照片1=“猪八戒”;
var 照片2=“孙悟空”;

当然实际产生一张照片的过程还是比较复杂,我们这里将这个过程简化,认为一张照片就是胶卷上的一张底片生成的,底片用了就不能再使用了,也就是说,照片一旦拍了,就不能改变了,但是照片在使用之前,是可以用来拍摄任意照片内容的,所以,这里又引出了一个变量的“不变性”问题。

变量的不变性,使得变量的值变得稳定,追踪变量的值变得简单。很多函数式语言都支持这种“不可变变量”的,例如在F#中,可以使用下面的方式来证明:

let x = 10
let y = 5
let x = x + y // Compile Error

函数式语言变量的不变性,使得在高并发下程序运行的安全性得到了保证,不用担心某个线程把变量修改了,缺点就是需要更多的内存来复制变量值,程序运行效率降低。

符号推理

变量的这种不变性,有些函数式语言称之为“变量绑定”,变量和它的值一旦绑定后,就不能改变了。这样,我们讨论某个变量的时候,就可以等价的讨论它绑定的值。这是一个很有用的方式,比如汇编语言,我们用一些汇编指令符号,来代替具体的二进制机器指令,为编制复杂的计算机程序成为可能;之后,我们又进一步对汇编指令进行抽象,发明了计算机高级语言,为编制大规模复杂程序提供了可能。假如你不是搞计算机的,但你学习过中学数学吧,“代数”,解方程总知道吧?我们用代数来求解复杂的方程,化繁为简。在物理学中,符号在物理学公式中的作用更加重要了,比如爱因斯坦的质能方程:

E=mc²

方程中,E代表能量,m代表物质的质量,c代表光速常量,质能方程描述了质量与能量之间的当量关系的方程。

方程式的左边表示能量,方程式的右边,定义了质量和光速常量的计算关系,通过这种关系可以计算出物质质量转换为能量的大小。

由于这个方程式非常著名,没有它就没有原子弹,就没有二战后的和平,就没有人类取之不尽的核能能源,所以在这个方程式中,这几个符号的关系就规定好了,从这种符号的关系,可以得到非常重要的理论并且应用这种理论发明各种伟大的或者重要的技术,那么我们在讨论过程中进行的这些活动,站在符号的角度,它就是“符号推理”。换言之,我们在讨论能量和质量的关系的时候,符号E “隐藏”着这符号mc² 的关系,这个关系在其他人不能发现,但是爱因斯坦发现了,所以爱因斯坦能成为伟大的科学家,而我们不能。对我们普通人而言我们没有能力去揭示事务内部的本质的机制,但我们可以从事物之间外部的表象来总结分析,从而去假设事物内部的运行规律,然后再用这个假设来解释更多的外部现象。如果基于这种假设能够比较完善的解释事物之间浅显的容易证实的关系,那么这个假设就是“科学”的,这个研究方法就是科学的研究方法。

如果这些符号,不是英文字母,单词,而是中文词汇,比如阴,阳,金,木,水,火,土,天干地支,不可以吗?当然可以,中医的阴阳五行理论,正是这样一套符号推理体系。

二、【藏像】理论

【解剖学】的困境

在古代,受限于科学技术的条件,我们不能直接揭示出一些事物的内部机制,但能够用上面说的同样的方式,从事物外部的表象之间的关系,来推导事物的内部机制。在中医的语境中,这种方法理论,就是“藏像”理论。

百科词条这样解释“藏像”:

“藏象”二字,首见于《素问·六节藏象论》。藏指藏于体内的内脏,象指表现于外的生理、病理现象。藏象包括各个内脏实体及其生理活动和病理变化表现于外的各种征象。
藏象学说是研究人体各个脏腑的生理功能、病理变化及其相互关系的学说。它是在历代医家在医疗实践的基础上,在阴阳五行学说的指导下,概括总结而成的,是中医学理论体系中极其重要的组成部分。

为什么要用“藏像”理论去研究人体?

在西医中,解剖学是一门很重要的学科,它是外科学的基础,现在已经发展到了显微外科学,解剖学通过将人体的组织,器官进行深入的解剖,寻找出人体的详细构造结构。但是,这种对人体的研究方式,有一个先天的缺陷,人体是一部复杂的活的精密的“仪器”,不太可能对活的生命体进行解剖观察,因此现有解剖学得出结论不足于真实解释人体构造运行的规律。

黑盒测试与白盒测试

作为程序员,天天跟测试打交道,一定知道黑盒测试跟白盒测试的概念。大部分测试人员,都在做黑盒测试,即通过运行程序,在功能操作中发现你的bug,而不是反编译你的程序,然后一行行阅读代码,来分析寻找你的bug。作为开发人员的你,都不太可能通过仅阅读自己的代码就发现所有bug,怎么可能要求测试人员做到白盒测试呢?所以,黑盒测试,是一种被证明了的可行的测试方式,也是软件工程中必须做的一个工作环节,如果说软件工程是一种科学的工程学方法,你不能说黑盒测试不科学吧?

既然我们不能要求测试人员来做白盒测试,那么就不要要求古代的医生必须要会搞现在这样的解剖才算是医生了,他们通过对人体外表症状和相关关系的分析研究,一样能够找到人体健康运行的规律。这种方法,就是“藏像”理论的研究方法。我们不必去活体解剖一个病人,看他内脏有什么病变,我们通过中医基础理论的气血经络,观察发现同一类疾病相关的人体外在的表现,推导此时人体内部脏腑功能的运行情况,然后再从这些情况来推导出脏腑功能改变的关系,预测出疾病发展转变的路径,最后再通过人体外部表现出来的新的病症,来验证这个理论推导的正确性。

扁鹊见蔡桓公

有一个故事,能够很好的说明这个过程,这就是《扁鹊见蔡桓公》:

扁鹊见蔡桓公,立有间,扁鹊曰:“君有疾在腠理,不治将恐深。”桓侯曰:“寡人无疾。”扁鹊出,桓侯曰:“医之好治不病以为功!”
居十日,扁鹊复见,曰:“君之病在肌肤,不治将益深。”桓侯不应。扁鹊出,桓侯又不悦。
居十日,扁鹊复见,曰:“君之病在肠胃,不治将益深。”桓侯又不应。扁鹊出,桓侯又不悦。
居十日,扁鹊望桓侯而还走。桓侯故使人问之,扁鹊曰:“疾在腠理,汤熨之所及也;在肌肤,针石之所及也;在肠胃,火齐之所及也;在骨髓,司命之所属,无奈何也。今在骨髓,臣是以无请也。”
居五日,桓侯体痛,使人索扁鹊,已逃秦矣。桓侯遂死。

神医扁鹊通过观察蔡桓公外部的病症,就知道了蔡桓公此时所得何病,并且还能预知此病的演变发展,同时给出蔡桓公合适的治疗方案。无奈蔡桓公炜疾忌医,不治而亡。扁鹊的这个故事,他使用的方法正是中医的"藏像"理论的方法。

 

小结

这两篇文章是从程序员和软件编程角度,来观察解释中医理论的,本篇从变量的表象到变量的内部关系,探讨了变量的易变性和不变性,并且由变量的不变性讨论了符号推理的简单原理,由这种推理方式说明了对于复杂问题的解决模式,这就是由表及里问题分析解决模式,这种模式也是工程学中科学的工作方式,中医使用的“藏像”理论,正是使用的这种模式。  


推荐阅读
  • 本文探讨了Go语言(Golang)的学习价值及其在Web开发领域的应用潜力,包括其独特的语言特性和为什么它是现代软件开发的理想选择。 ... [详细]
  • 本文档提供了几个经典的Java编程示例,包括多线程处理、基本程序结构以及简单的逻辑运算,旨在帮助初学者更好地理解和掌握Java语言的核心特性。 ... [详细]
  • 深入浅出:Java面向对象编程
    本文详细介绍了Java语言的核心特性——面向对象编程。探讨了Java的基本概念、平台无关性、丰富的内置类库及安全性,同时深入解析了类加载器、垃圾回收机制以及基本数据类型和其包装类。 ... [详细]
  • 本文将探讨iOS开发过程中需要掌握的三种关键编程语言——C、Objective-C和Swift,并深入解析面向过程与面向对象编程的概念,同时对比iOS与Android两大移动平台的特点。 ... [详细]
  • java锁策略
    文章目录锁的分类一、乐观锁VS悲观锁二、读写锁三、可重入锁VS不可重入锁四、重量级锁VS轻量级锁五、公平锁VS非公平锁六、自旋锁VS挂起等待锁七、锁升级策略1、无锁: ... [详细]
  • 对于Java开发者而言,掌握JVM(Java虚拟机)的工作机制不仅能够提升编码效率,还能在遇到复杂问题时提供解决思路。本文旨在全面介绍JVM的基本概念、内部结构及其性能优化技巧。 ... [详细]
  • 探讨了一个关于Windows C++开发中遇到的乱码问题,特别是在处理宽字符时出现的情况。本文通过一个具体的示例——一个简单的窗口应用程序,展示了如何正确地使用宽字符以避免乱码。 ... [详细]
  • 本文档详细规划了从基础到高级的软件测试学习路径,包括但不限于测试基础、Linux和数据库、功能测试、Python编程、接口测试、性能测试、金融项目实战、UI自动化测试等内容,旨在为初学者和进阶者提供全面的学习指导。 ... [详细]
  • [TOC]Process的几个用法和守护进程一、Process的join用法话不多说,直接上代码二、Process的pid和ppid用法需要先导入os模块站在当前进程的角度:os. ... [详细]
  • 本文详细介绍了MySQL 5.5及以上版本中事务管理的全过程,包括事务的启动、设置、锁机制以及解锁方法,旨在为开发者提供一个清晰、全面的操作指南,避免因网络资料分散而导致的学习障碍。 ... [详细]
  • 历经两个月,他成功斩获阿里巴巴Offer
    经过两个月的努力,一位普通的双非本科毕业生最终成功获得了阿里巴巴的录用通知。 ... [详细]
  • 解决phpMyAdmin运行错误:mysqli_init(): 属性访问尚未允许
    本文探讨了在使用phpMyAdmin过程中遇到的mysqli_init()函数错误,并提供了有效的解决方案。 ... [详细]
  • 深入解析Java中的锁类型及其应用场景
    本文详细介绍了Java中常见的锁类型,包括乐观锁与悲观锁、独占锁与共享锁、互斥锁与读写锁、可重入锁、公平锁与非公平锁、分段锁、偏向锁、轻量级锁、重量级锁以及自旋锁。每种锁的特性、作用及适用场景均有所涉及。 ... [详细]
  • CyclicBarrier是一种同步辅助类,能够在多个线程到达某个屏障点时进行阻塞,直到所有参与的线程都达到这一屏障点后,所有线程才继续执行。本文将详细介绍CyclicBarrier的工作原理及应用场景。 ... [详细]
  • Kafka组件详解及工作原理
    本文介绍了Apache Kafka的核心组件及其工作方式,包括生产者(Producer)、消费者(Consumer)、主题(Topic)、代理(Broker)、分区(Partition)、消费者组(Consumer Group)和偏移量(Offset),并探讨了这些组件之间的交互机制。 ... [详细]
author-avatar
cryy5bl-1940
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有