从编程看出道家思想

最近小弟一直在想啊,强类型语言好那,还是弱类型语言好,从个人感情上而 言,小弟最初学的是JAVA(其实应该是C,没学好不敢说自己学过呵呵~),后来又学了C#,都是强类型语言,后来工作了,因为需要,“被逼”学了js。  

小弟有想,强类型语言就像石头,它是什么样子就是什么样子的,你要改变它必须花点力气,例如:我们把一个学生实体强转成老师实体是肯定不行的,但小弟有在想啊,我以前有个兄弟读大学的时候是学生,毕业了后留校当了老师了,那我们用程序怎么实现那?按强类型方式:

老师类.姓名 = 学生类.姓名

老师类.性别 = 学生类.性别

。。。。。。

对它们一一的装箱拆箱,这样很严谨。

后来啊,我们发现如果属性一多,这样搞不是办法啊,微软给了我们一个扩展方法CopyFrom,在Java里也给我们了一个方法BeanUtils,真的方便不少。但我们不难看出啊,CopyFrom是Object的一个扩展,它接受的参数也是Object,而Beanutils的二个参数也是Object。要是有人说Object是强类型,恐怕太牵强了吧。那为什么要用Object那?为什么所有的类,最终的基类都是Object那?

突然想起有人说, CopyFrom或者Beanutils消耗性能,是啊,明显类型之间的参数复制是用反射机制。哎~,然后小弟做了下测试,发现这样的上万的转换也在毫秒级之间,但好处多多啊,难怪很多流行框架都想放设法模糊类型,有强化类型。在程序里弱化类型,在配置文件里强化类型。真是刚柔并济啊。如此的弱化类型是不是类似于道家的无为(我不去做任何类型的强转或者控制,以及装箱拆箱,我只是告诉他你只要这样放就行了,但在这样做之前可能有人为你做了很多)——说明下道家的无为不是真的什么都不做,而是顺其自然,合乎规律的做,不搞吓折腾,什么是吓折腾那?(例如:现实开发中,产品部的老大们告诉你现在有点小的属性要改下,或扩展几个属性,然后你把数据库里添上字段,然后那,我们在实体里添加字段,随后我们在N多代码里在添加上装箱和拆箱的工作,或者告诉你在这类功能前我们要添加一个功能,我们写完这个功能,很辛苦的在每个类似的功能里把调用的代码加上,突然产品部说,客户不需要这些了,很郁闷的一个个把代码去掉,当然有版本控制器可以帮你)。

同时我们可以看出,Object其实是一种”自然规律“的外在表现,对象总是存储在内存里的,CopyFrom也好Beanutils也罢,它们的巧妙实现,都是在附和这个"自然规律",只是在“无为”的中建立了一定的有为。

在谈下什么叫“顺其自然,合乎规律”

人的吃喝拉撒是顺其自然,生老病死是顺其自然。违背自然也行,例如:我们把男人变成女人,行啊,这种“类型转换”现在的医学技术能够做到,也就是割了小JJ吗?隆个胸吗?操作步骤多麻烦啊?而且医生经常还可能发生错误,或者达不到顾客需求而反复做手术。但自然选择你发育成男胚胎则生男,发育成女胚胎则生女何其简单,何其自然,但这简单和自然之间,有无穷的复杂(CopyFrom中要写比装箱拆箱可能更多的代码,何况它本身也是一种装箱拆箱)。同时我们还能够看到,做变性手术后的“类型强转”未必完美(变性人有生育能力吗?好比装箱拆箱总是无法做到不动代码而实现),而自然人那(基本上完美无缺,有缺陷的可能是因为老天爷有遗漏的Exception未处理。好比CopyFrom总是能够在不断的扩展中满足需要,而无需动手术)。从程序角度看,我们手动的装箱和拆箱是不是一种强制的变性手术那?而CopyFrom是一种合乎自然的规律。这样的说法可能有点牵强,你可以把它看成原本就存在的规律,它好比女人的子宫,二个Object是精子和卵子,谁获得父亲的基因更多,或者母亲的基因更多,取决于你这个上帝把Object放置的位置,至于是“男”是女吗?看你怎么定义实体的。在做装箱拆箱的时候,你充其量是个蹩脚的变性手术大夫,而且怎么整可能还不取决于你,可能你要多次动手术,才能够满足客户的需求,而你用CopyFrom那你就是上帝,你想让“他”或“她”像母亲一样的女人,或者想父亲一样的男人,都取决于你,无论“他”父母是谁,你只需要运用你制定的“自然规律”就行。你愿意当上帝还是蹩脚的变性手术大夫那?

道家还说:"刚者折,而柔者存"

在刚入行前,小弟公司的产品部把设计完的需求直接发给我们编码,小公司没有系统分析师,需求吗肯定有纰漏,小弟还没写代码,就告诉小弟这个有点变化,然后小弟很爽气的和他说,不要紧你说吧。后来,我在编码过程中有和我说,有变化,小弟略带无奈的说,你说吧。最后,等小弟完成了该工作项后,有和小弟说有变化,小弟极度无奈的说,说吧。大家可以看出小弟何其”痛苦“啊(相比大家都会有这样的遭遇),小弟过去写代码很严谨,该怎么样就怎么样,结果还是玩不过产品部的老大们,只能向天长叹,无尽的需求啊!~,然后,小弟冥思苦想,Spring给小弟一个启蒙,小弟的JSON进阶六-自动组装 中的JsonSerializer也是为了对付产品部的老大们而搞的,类似的编码,在C#里和JAVA里估计完成需要更多的代码,而JS可能很少。

例如我们写个JS的CopyFrom或Beanutils

function Beanutils(obj1,obj2){

     for(var key in obj1){

        obj1[key] = obj2[key];

     }

}

简单的几句代码,这个就是弱类型语言的好处,从微软的var到Ruby的出现可见,弱类型语言更有生命力,是不是很合乎 "刚者折,而柔者存"的道理,但也可以看出强类型语言中弱化类型的写法,性能上降低了,但可重用性,可维护性提高了,当然我们也需要明确一些东西,刚柔并济,才能屹立不倒啊!

水的特性是置于方则方,置于圆则圆(你让我成为啥就是啥),弱化类型是不是像水?程序里用这样的“水",正合乎了:“上善若水,水利万物”啊!

 小弟拙见(只当娱乐大众哈哈~),望众高人多多指教啊~

转载于:https://www.cnblogs.com/KangC/archive/2009/03/03/1401895.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在道家传统中,修真过程被划分为几个不同的境界。这些境界是逐渐提高的,并且每个境界都有其特定的修行目标和要求。 以下是道家修真的几个境界: 1. 出家境界:这是修真的初始阶段,在这个阶段,修行者学习道家基本原理,并开始修炼内心。 2. 入门境界:在这个阶段,修行者开始学习道家具体修行方法,并开始修炼身体。 3. 初步境界:在这个阶段,修行者开始真正深入修行,并开始学习如何控制自己的感觉和感情。 4. 中步境界:在这个阶段,修行者开始学习如何控制自己的思想和行为,并开始修炼精神。 5. 高步境界:在这个阶段,修行者开始学习如何将自己与宇宙联系起来,并开始修炼灵魂。 6. 成就境界:在这个阶段,修行者已经完成了修真的过程,并达到了道家修真的最高境界。 ### 回答2: 道家修真的境界可以分为内观修炼、悟道境界和炼神境界三个阶段。 首先是内观修炼阶段,这个阶段主要是通过内心的观照和修身养性来实现身心的净化。道家修真者需要通过冥想、打坐和自我反省等方法,学会与自己的内在世界对话,认识到自己的欲望和执着,并逐渐放下外界的杂念和妄念,使心灵逐渐平静下来。 接下来是悟道境界,这个阶段主要是通过对道的理解和领悟,来达到超越人世间种种束缚的境地。道家强调的是顺应自然,追求自我的无为而治,修真者需要通过自省和思考,认识到自己是宇宙的一部分,与宇宙万物相通。在悟道境界中,修真者能够超越凡俗的冲突与烦恼,静心观察万物的流转与变化,实现与道的合一。 最后是炼神境界,这个阶段是道家修真者最高的境界,也是对道的最高领悟和实践。在炼神境界中,修真者通过炼制自身的心神,使之达到超脱凡尘的境地。通过精神的修炼,修真者能够超脱时间和空间的限制,进入到无我无物的境界,彻底与自我和世界相融合。 总的来说,道家修真境界的划分是一个逐渐递进的过程,从内观修炼到悟道境界再到炼神境界,修真者通过不断的实践和领悟,最终达到与道的完全融合。 ### 回答3: 道家修真分为三个境界:人、地、天。 在人境界,修炼者注重内心修行,修炼自身的德行和道德修养。他们通过炼心、炼性、炼身的修炼方法,逐渐净化心灵,提升自己的修为。在人境界中,修炼者学习虚静无为,追求内心的平和、内省和善良。 地境界是修炼者向外界扩展修行的境界。在地境界,修炼者通过修炼身体,增强自己的生命力和身体的康复能力。他们练习各种身体功法,如气功、太极拳等,以增加自己的神经系统的灵敏度和身体的协调性。地境界的修炼者追求身体的健康和长寿。 天境界是修炼的最高境界,也是修炼者追求的最终境界。在天境界,修炼者已经突破了人体的限制,融入了宇宙的力量,可以自由穿梭于天地之间。他们修炼超凡的神通和仙术,具有超卓的智慧和洞察力。天境界的修炼者可以达到长生不老、超脱生死的境地。 道家修真的境界是一个渐次递进的过程,修炼者需要通过勤奋修行和体悟,逐渐提升自己的修为。每个境界都有其独特的修炼方法和目标,但最终都是追求心灵的平静和与宇宙的融合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值