最近的这些日子变得淡了,天气冷了就经常点外卖,作业来不及交了就抄同班同学的。不过我还是会么没搞懂那些抄的作业的,经常是在下一节课上思考上一节课的作业,周而复始。在不听老师讲课独立思考的过程中,我也有了一些感悟。

  首先作业是每一个小节学完之后布置一次,我看书的时候就都是带着作业的内容去看书,一般是直接看例题,发现作业的解题方法和例题一模一样。但随后尝试独立思考就很难了,因为我并没有系统的学习过对应的小节的内容,等过了一段时间之后或者题目的出题方式发生了改变,我就不会写了。简单来说,不经过系统的学习就只能套用例题那样的模板。我还用 c 语言实际做了一些应用,发现算法和数据结构是其中的基础,而代码组织是另一个维度的东西,现在所学的东西都是基础的部分,而我却执念于应用这些知识,造成应用过程中遇到很多困难。比如学习 rust 的过程中,我想解析一个 json 文件,但看网上的例子看不懂,被迫去学习 Option、Result。tokio 例子看不懂,被迫去学习 lifetime、async/await、mod/package。久而久之自信心就被打击了,无论要开始写怎样的代码,都要去网上搜索例子,而且频频报错,举步维艰。这就是不打好基础就直接开干的恶果。

  虽然基础这么重要,但是现在还是流行这一种叫做敏捷开发的方法,先把需要的功能实现,后续再慢慢地优化调整。这一种开发方法被广泛应用于互联网公司内部的开发,所以部分应用,比如淘宝、微信、支付宝,在某一次更新之后就变得快了很多。当然这也不能全相等,公司招聘的人才都有相关方面的基础,而我在 rust 上的基础很少。只是单纯地觉得很多这样对立的事情能相处得如此融洽真是美妙。

  在学习上,还是老老实实打基础,看完一章的内容再做题比较好一点。而编程上,可能 rust 是一个特例,毕竟很多人都说它难学,c 开发的时候还是以目标为重,不要总想着这样性能不好、这样还能优化、这样要检查错误。互联网的这个时代,节奏太快了,我这个学期学习的概率论就是一个典型的例子,其中充斥着大量模糊的概念。虽然《算法与数据结构》也有很多概念,但是理解起来还是挺简单的。