听课感受一:自组织系统神奇的涌现功能。
他组织系统可以理解为为了某种结果(功能)而人为地组织起来的系统。比如公司里为了某个目的而组织起来的一个小团队(研发软件的团队),或者为了某个功能把一些零件组合起来构成一个机器(汽车)。而自组织系统则可以理解为由于某个原因(共同的爱好、相同的属性)聚在一起形成一个系统,有一些简单的规则(定期聚会、生活在一起)维持整个系统,而在数量足够大的时候,这个自发组织起来的系统而外地表现出一种特殊的功能,有别于个体的功能,是简单的把个体添加起来所不具有的功能。比如读书会这样的自发组织小组,一开始大家并不是为了某个具体的结果而聚到一起的,只是因为大家都喜欢读书或对某本书某个话题感兴趣,聚到一起来讨论,定期聚会和讨论的方式就是一些简单规则,这足以维持系统的存在,但是同时这样简单的讨论形式,在最终却迸发出不一样的结果来。
从这个角度的理解,可以从另一个侧面解释为什么我们不要总在结果上努力,总是想着要得到什么东西,其实如果你要的东西很美好,别人也会这样觉得,他们也想要得到,那么这么多人都想要,但是所有人都能得到吗?从资源有限的角度来看是不可能的,再从概率分布的角度来考虑也是不可能的,因为最好的资源只有少数人才能得到。所以把自己当做一个系统,系统的元素是你的能力,系统的功能是获得你一些资源。那么自组织的涌现功能告诉我们,我们不要总想着那个结果,而是要聚焦在能力上,怎么让你的能力提升、增加能力、甚至于让你的不同能力产生关系,组合成新的能力,等到你在这方面的训练足够多,你这个自组织系统就能够涌现出不一样的功能来,那是你自己都想象不到的功能。
这也正好印证了因上努力,果上随缘这个佛家用语,这也是系统思维的价值之一,如果你能用系统的思维来思考问题,那么你就不要执着于果上努力,因为这是输出是不可控的,而可控的是你的输入。通过在输入努力,以期待输出上能得到好的结果。
听课感受二:通过升维思考,解决复杂问题。
升维是解决问题的一个很好的思路。它借用了物理里的概念,一个很好的例子是:生活在二维面的蚂蚁,它只能在二维面里爬行,可以是平面,比如地面,也可以是曲面,比如树皮表面。如果不巧它被限制在一个球体表面(想象飘在空中的一个气球,气球表面有一只蚂蚁),那不管它怎么走,它都只能在这个球面,到不了球面外的地方,就像人类生活在地球表面一样。这时候如果借助升维的手段,到了第三维,那么很简单,它不要局限在球面走就行啦,飞起来,或者由于重力的关系从球面掉到地面上,那它就脱离了球面了。同样的,人类有了飞行技术,航天技术,现在也不只是局限在地球表面生活,还可以上天呢,到外太空去。
这给予我们,至少给了我一个客观的例子,告诉我们当我们在遇到解决不了的问题的时候,就要想想,我们是不是像蚂蚁一样被困在了球面上,我们是不是可以升维,飞起来,脱离那个困住你的球面。
听课感受三:提升自己的维度的方法:信息熵减。
熵增原理,对于一直孤立封闭的系统,系统的熵是不断增加的,直到熵达到最大值,总之在这样的系统里熵是不可能减少的。从微观的角度来解释,或者说用热力学统计物理的角度来解释,热力学系统是有大量微观粒子构成,大量微观粒子在宏观表现出来的整体性质就是传统热力学的概念,比如说温度、热量和熵之类的概念。而热力学系统里的微观粒子被认为是大量相同的粒子,它们根据根据各向同性或各向异性具有不同的自由度,而自由度才是微观粒子真正重要的性质。为了简单起见,我们只考虑各向同性的简单粒子,而且每个粒子就只要一个自由度。那么我们可以把我们获得的信息当做热力学系统的微观粒子,它具有一个自由度,如果这些粒子都是一样的,就是说你获得的信息都是一样的,那么在这个系统里,这些大量粒子满足的统计学规律,就是熵增原理。而熵增原理告诉我们的是,这个系统会越来越无序。如果你接收到新的信息,那么相当于说这个粒子和你原来的粒子不一样,它也有一个自由度,但是它的自由度和你原有粒子的自由度不同,它们会产生相互作用,这样的系统,会出现不同的结构,如果你源源不断的增加不同的粒子,这个系统就不在是孤立和封闭的,相当于外界在不断和它相互作用,在这种作用下,系统就可以实现熵减的发展方向,使得系统产生特定的结构,而特定的结构有获得了特定的功能。我理解的学习或者刻意练习就是这样发展方式。而这种方式中,新的信息进入系统也就是给你带来了新的自由度,而新的自由度,其实就是在为你的系统升维。
用书中的方法解决一个自己无法解决的问题。
我在读《Head First Java》这本书时,总是陷入一种,我该不该接着读下去的问题。我总是觉得这是一本Java的入门书,我有C++语言的基础,读这本书应该会很容易,然后就拿起书来从头开始看,看着看着,就觉得这本书罗里吧嗦的,总是说一大堆废话,然后这时候我就想算了,Java和C++语法差不多,我不看也可以,自己今后遇到了不同,在查阅或者网上查就行了。如果停留在这个维度里面,我到底要不要为了了解Java而读这本书,这完全是一个无解的问题。应用升维的方法,把C++和Java,以及其它一些编程语言看做一个多层级的系统,C++是一门更基础的语言,学会了这个相当于学会了编程语言这个多层系统的基础,其它的语言都是在这个基础之上为了具体的目标发展起来的。相当于我搭建了另一个维度,编程语言发展这一维度,相当于在三维空间上再加上一个时间维度,看到事物的发展过程。从这个角度考虑,我完全可以从C++出发,来构建我对Java的理解,从C++的语法结构到Java的语法结构,从C++的编译链接运行方式到Java的编译链接运行方式等等。采用这样的方式来学习,这就完全可以摆脱从头到尾读这本书的弊病和要不要读这本书的问题。