技术学习感悟(一)

2022-09-05  本文已影响0人  东方胖

学习技术,或者更宽泛地,学习所有的知识,理论,本质上是学习什么?

计算机编程的基础是算法数据结构和编程语言。
学习算法和数据结构,我们一般会从基本的算法性能评估方法论学起,让我们能够对算法的好坏有一个直观和量化,符号化的认知,其次是学习蛮力算法,一般会接触几种经典的排序算法,冒泡排序,选择排序,插入排序,然后再进入到分治算法。

从蛮力到分治,试一次较大的思维的飞跃。到归并排序和快速排序为止,会插入一些数据结构。如数组,映射或字典,哈希表。
数据结构和算法是绑在一起不可分割的孪生兄弟,数据结构因算法而产生价值,算法因数据结构而更加丰富多样。
五花八门的数据结构常常又是因解决特定问题而建立其结构和语义的。

整个学习算法和数据结构的过程,我们逐渐建立的是一种心智模型,一个数据结构的实现细节我们可能不会记得特别清楚,但是我们有了其心智模型之后,我们能够在一定的时间内建构出它大致的模样。

比如栈,我们掌握它的话,我们知道它最重要的作用就是存取顺序的控制,取出的是最晚存入的对象。抓住这个核心点的话,我们可以用数组,链表多种底层实现来做到这一点,然后将功能接口化,就能构造一个栈数据结构;如果我们要让他更健壮一点,可以通过做更多的异常处理和错误控制来加强,总的指导思想不会变化。

有如哈希表,它的本质是什么?这是一种用内存换取访问时间的数据结构,核心在于快速访问,我们知道数组的直接索引的访问方式是最快的,因此我们渴望用数组的方式存放数据。因而核心的问题的就是存放和取出的时候,索引下标的分配问题了,如果能够建立一个映射关系,将关键字映射成一个整数,并且不同的关键字对应的整数很大可能是不同的,在整个集合上也比较均匀,就可以很大程度上做到我们渴望的效果。
所以哈希表的实现主要就是围绕这些问题来展开,怎么建立对象和整数的映射啦(哈希函数),怎么保证映射的下标尽可能的均匀啦(装载因子) , 怎么处理特例,两个对象映射到同一个整数上了啦(哈希冲突处理)等等。

知识的学习首先是建立一个完整的心智模型,至于学习的细节我们可以通过推理和文档,搜索引擎来弥补。我觉得这个方法可以延拓到其它的领域的学习。

为什么学过C和C++ 的人学习其他语言会更加快捷,根本原因在于编程语言之间存在一些公共的心智模型,这些模型是通用的

上一篇 下一篇

猜你喜欢

热点阅读