为什么要写思想篇呢,这一篇从人的“思考”层面来看待学习,一个人如果不会思考问题,那么直接干脆点什么都别做了,这个世界不合适你。
简单借用一个其他群里有人提问的小例子:说是要如何交换俩个变量的内容?
单纯讲这个提问没多大意思,这并不是一个高深的问题,换个样子一碗可乐和一碗雪碧让你互换一下,很自然就想到用第三个碗倒换一下,这其实就是一个生活中常见的应用,为什么生活上知道怎么做而挪到编程学习里换成变量就不会了呢?是没有理论联系实际吗?这个问题既然是如此的简单,那提问者为什么不自己去思考一下要怎么去做才能完成呢? 自己的方案是否合理呢?
借用这个例子就是说明一下,人 要学会自己主动去思考问题,会思考才能解决问题。
如何思考问题
学习编程语言,最好是把自己放在语言设计者角度去思考问题,正应了那句话 身在其位要谋其政,处在什么位置就要考虑什么问题。好比教师既然是教学生就要做好备课准备,各种知识、细节都尽可能了解知道以便更好的传授知识和应对处理学生的提问等等,这需要更全面的做好准备;作为学生则不管这些,老师讲什么就听什么 听什么就去吸收些什么 比较安逸有局限性,这基本也丧失了自己主动探索思考的能力,因为所有内容都依赖老师。
1. 思考问题,首先要逻辑合理
很多很多人,自己都不去想自己的想法/观点是不是合乎逻辑就顺嘴跑火车,这是学习上最致命的,没有一个正确的逻辑意识寸步难行。
2. 思考问题,要契合现实实际问题
满足了第1点要求,还要理论和实际相关联,寻找最合适的解。单理论本身可能有多种方式适合这个问题,但问题往往与现实环境相关联受其制约影响(约束关系),所以要把眼界放宽通盘考虑(把问题与周围环境作为一个整体),最终选择合适的方案就好。
如何判断自己是否会思考问题?
非常简单,随便找一本自己想学习的编程语言,随便看一些内容,在看的过程中是否会有疑问产生,是否会对疑问做一些合理的分析、推测。
思考的深入程度则说明一个人是不是懂得思考,善于思考,这将影响到学习编程的成就。
使用一个例子来作说明,假设你已经知道C语言指针和数组的概念,以下两种形式:
char a[]=”hello world”;①
char *a=”hello world”;②
1.无思考
这种在学习上直接表现为记住形式就行了,什么都不想。
2 有疑惑:这两种写法很常见,形式看着很像。右侧都一样只有左侧不同,感觉可能会有区别但是拿不准不晓得是不是这样,算了不去想了能运行就行。
这种在学习上有那么一瞬间的停顿,停下想一想。但也只看到表面程度,从外观上进行观察,虽相似但具体有没有区别就不清楚了,自己没有更多的想法或者无从去思考判断。
3 解读语法:①右侧是字符串,属于字符数组,左侧a[]也是数组形式,左右类型一样没毛病;②左侧a是字符型指针可以指向任意内存位置,它指向右侧字符数组逻辑没毛病完全OK。虽然写法有点区别,但是感觉应该没什么区别,要说区别也只是一个用了数组a[],一个用了指针a形式
这种在学习上已经会解读语法细节了,能对各种语法的写法表现有一个比较清晰的认知,能在此基础上做一步步连续性分析,开始有一定的思考条理了。
4 思索分析:这两种写法,字符串会怎么存放呢? 是放在栈里还是堆里呢?①是a[]形式,数组也是同类型元素的顺序排列,据此推测应该是放在栈里跟普通变量一样对待;至于②指向的字符串应该是作为常量看待不能随便修改,如果这么看来跟①还是有些不同的。
这种在学习上已经从逻辑层面的语法解读上升到更为深入计算机内部存储表现层面,开始对二者做关联性思考,也就是理论开始与实际相接轨了。
5 深入探寻:字符串放在可执行程序的哪个节区位置?是在什么时间点被谁初始化的?①②的汇编代码形式是什么样子的是否有不同?如果②的字符串是只读的,那么加载到内存里如何保证它是只读的,我可以去改写它吗 效果是什么样的?….等等
6 终极升华:在第5点基础上知识掌握程度更加完善细腻,这种在学习上已经为返璞归真型,无招胜有招,思想认知站在了设计者高度考虑问题、处理问题,所以就算遇到不会的内容也有一定的自主分析能力。通过一步步学习走来,对计算机知识已经有了一个比较全面的、系统的理解和掌握,这些知识已经可以支撑起对问题从多角度分析判断,且得到的结果具有一定的客观正确性。
到了这种程度,才算有了纵情四海放飞不羁的资本,小伙伴们有学到了咩,喜欢它的打赏一个或是收藏点个赞 😃
“认知篇”主要从学习入门角度来跟大家分享如何学习,“棒喝篇”使用当头一棒,振聋发聩,耳提面命等手段,让小伙伴能更快速认清自己、认清学习态度和调整学习方式,喜欢的朋友可以阅读三哥哥写的这两篇文章
在此感谢所有光临的小伙伴们,如果喜欢它可以点赞收藏小小的支持一下,讨论可以进群QQ:317720826