引子:
今天是10月24日,由于“1024”是计算机二进制的基本单位,故被广大程序员“私定”为程序员节,哈哈,这个貌似比光棍节更有技术含量首先祝广大程序“猿”节日快乐~!!!
另外,借此机会,我想从两个方面来谈谈我对计算机思维的理解。
一. 计算机思维的特点
二. 计算机思维的应用
———————————————————————
一. 计算机思维的特点
跟吴军老师学习谷歌方法论有快一年时间了,我在吴老师的课程中领略到了计算机的魅力,感受到了计算机思维的巨大优势。计算机思维与人脑思维是很不同的,前者是靠逻辑主导的,逻辑性较强;而人类大脑的思维则是跳跃的,往往是感性居主要位置,这使得我们的创造力较强。相比之下,计算机思维是擅长高效地解决已有的问题,而人脑思维则更适合去提出问题和设计方案。
结合自身的理解,我认为计算机思维有如下几个主要特点:
1. 逻辑性。计算机的底层逻辑构造实际上是0 和 1,是二进制,它的底层构造就决定了它的逻辑性,任何一个算法的设计和程序的设计都必须符合逻辑,否则在计算机上无法运行;学习计算机也要有很强的逻辑思维,否则也很难理解计算机的本质。
2. 模块化。计算机思维中很重要的一个要素是模块化。所谓模块化,就是分类的一种形式。计算机会把相同类别的东西归结在一起,打包成一个模块,这样既节约了储存空间,还提高了计算机的运行效率。
3. 效率性。计算机本身是无法思考的,至少到现在为止是如此。计算机需要我们人类对其进行编程才能运行起来。一旦我们设计出一套不错的算法,并编出了一个对应程序应用在计算机上,计算机就能执行这套程序,而且速度十分之快,这比人脑处理快多了,大大提高了我们学习、工作的效率。
4. 迭代性。计算机思维是可以迭代调整的,是可以不断升级进步的。这是为什么呢?在我看来,这与算法、程序与计算机构造的属性所决定的。我们人类在设计一套算法时往往是完美的,但落地到程序上却难免会有bug,制造计算机的过程亦同理,为了不断地减少bug,提升计算机性能,我们不得不进行迭代、调整,这会让其变得越来越好。
5. 整体性。计算机处理问题,往往采用“递归”的方式,而人类则相反,是“递推”。前者是从整体到部分再到整体,而后者是从部分到部分再到整体。在一般情况下,人类采用“递推”法就OK了,但涉及到复杂一点的问题这种思维模式就玩不转了,这时候就要用到“递归”。所谓“递归”,可以理解为:把问题视为一个整体,从问题本身出发,将问题的要素进行拆解成一个个基本的模块,然后基于一定的分析去一一解决这些模块,然后再用合理的框架将其串成一个整体,问题得解。计算机中叫这“自顶向下”,说白了,这就是我们常说的“化繁为简”、“大事化小,小事化了”。
这一部分我简单谈了谈我对计算机思维的理解,并给出了计算机思维的5点特征。
下面谈谈计算机思维的应用。
二. 计算机思维的应用
以“学习”为例,计算机思维在学习中的应用很广泛。
学习是什么?从思维的角度来看,你可以把它理解为人类通过认知行为使思维从无序走向某种有序状态的过程。为什么很多人学习又苦又累又不好?关键就在于他们没有懂得学习的本质,没有找到适合自己的方法。
用计算机思维来作为指导,有助于我们理解学习的本质,找到适合自己的科学高效的学习方法,并最终取得良好的学习效果。
在我看来,计算机思维是从以下几个方面来改善我们的学习效果的。
1. 理念上:
整体性思维。计算机思维中的“递归”方法是从整体出发的,我们在学习过程中也可以这么做。读过斯科特•杨写的《如何高效学习》的朋友应该对“整体性学习”有所印象,没错,这种学习方式就是对计算机思维的很好的应用。把一门学科视为一个整体,并通过联想、建构、笔记流等方式去拆分、组合该学科内的知识,刚开始践行这套方法不很容易,但习惯以后,你会发现自己越学越快,越学越好,你也可以像斯科特•杨一样10天搞定线性代数~
2. 方法上:
算法思维。程序是我们给计算机下达的指令,而算法则是程序的设计方案。算法思维告诉我们,学习一门知识,要善于总结,善于寻找知识内的规律和知识间的关系,并能提炼出一套方法以指导自己的行动,这是学习高效的重要保证。
3. 行动上:
成长思维。计算机思维是可以迭代、升级的,这就告诉我们,学习这件事是急不来的,是要慢慢提升的。不要焦虑,刚开始学习不好没关系,沉下心来,好好分析自己的问题,并一一解决之,每隔一段时间做一下反思,让自身不断调整,不断完善,这样的话你就是在真正地成长进步,以上所说,就是成长思维的一种表现。
只要你能建立正确的学习理念、掌握科学的学习方法、切实践行这些理念和方法,不断迭代升级,我相信,我们成为一个学习高手指日可待。
———————————————————————
小结:
以上是我对计算机思维的两点思考,仅供大家参考~
心定且安
2018.10.24(程序员节)~