
学习本质上是一件反人性的事,因为需要接触到大量的陌生概念,而大脑在试图理解陌生概念时需要重新组织神经元之间的连接方式,特别耗费脑细胞。
学习的过程如果是在已知的基础上去理解未知概念,那么学习的痛苦程度就会大大降低,学习效果是事半功倍的;但是如果学习内容大部分都是未知概念,并且很少能和已有知识储备建立关联,那么学习效果就是事倍功半。
要想高效快乐学习,一定要有意识地控制学习过程,给自己安排适合自己的学习内容,否则很容易因为学习内容晦涩难懂而放弃学习。学有所成的关键就在于“选择适合自己的学习内容”。
那么,对于编程学习来说,如何选择适合自己的学习内容呢?
对于一个编程知识很少的小白来说,学习编程如果一头扎进某种编程语言和某种编程框架中去,很容易沦陷在数不清的类库和方法中去,长期下来也许能够对某种语言和框架使用得很熟练,但是对于解决问题的能力可能提升并不高。
计算机和编程语言未发明之前,人们是可以解决现在用计算机去解决的问题的。原来人们通过创造数学概念和数学运算来解释和认知世界,然后通过创造出来的新知识解释和改造世界。
计算机的发明是为了更好地储存信息和处理信息,而处理信息的目的是为了服务和改造现实世界。所以编程语言中的两个核心是“数据”和“运算”。使用编程语言解决问题的关键是“把现实中的要解决的问题抽象成数据和算法,通过计算机运算得到结果来支持解决现实问题”。
把现实业务需求中的信息点抽象为数据,并根据“现实中使用信息和处理信息的方式”来选择合适的数据结构和算法,通过计算机处理得到的结果服务于现实需求。
所以,学习编程的要关注数据结构和算法,思考现实中的信息可以抽象为何种数据结构,思考现实中处理事情的方法如何抽象为算法。
每学习一个编程语言时,可以问自己:
1、这个编程语言抽象出了哪些的数据结构,是用来解决什么现实问题的?
2、作用于这些数据结构之上的算法,对应了现实中的哪些信息处理方法?这样处理信息的目的是什么?
每学习一个软件应用,可以问自己:
1、这个应用的现实应用场景是什么?
2、应用场景中的信息(数据结构)特点是什么?
3、需要如何进行信息处理(算法)?
