第一次阅读lua源码从2019元旦,哪一年阅读计划失败,去年又心血来潮,尝试阅读,结果又是失败,今年再次重拾这个计划。
作为本系列文章的开篇,这里回顾下上两次阅读的经历和本次的一些想法,所谓前事不忘后事之师。
19年阅读lua的动机,一方面是当时的工作都是用lua来解决,工作中难免会有想搞明白lua背后运行机制的冲突,另外考虑到lua是用c编写的,感觉自己的c基础还算可以,所以就开始了阅读lua,阅读起来才发现不是知道些c就能通读lua源码的,还得学习编译原理,虚拟机等知识。第一次阅读失败。
20年又一次尝试阅读lua源码,这次目的很明确,就是为了接下来的换工作增加亮点,阅读了《编译原理》,看了相关视频,原计划5,6,7三个月读完,结果还是失败了,现在反思,发现自己当时心太急,有了点编译原理之类的知识,就以为可以一口气搞定。。。
总结前两次的经历,发现问题所在:直接照着《源码阅读顺序推荐表》,就一头扎进源代码里面,事先没有做整理的阅读计划,没有对整个代码进行评估以便预测需要补漏的相关知识(eg编译原理),自己的相关知识储备又有限,也没有找市面上已有的相关知识阅读,所以空有一腔热情,最后还是失败。
失败不可怕,可怕的是失败后不总结经验教训,一次又一次的重复失败,这才是可怕的,毕竟每个人的精力是有限的,不能从失败中吸取教训,就不能提高自己。
这次计划6月结束lua源码,吸取了前两次的教训后,这次做一个整体的安排,如下:
- 阅读市面上已有的相关blog,书籍等(按照从简到难)
- 选择一个功能精简但齐全的版本(5.15),而不是一上来就选择最新版本,避免犯一上来就要读通最新linux版本源码的错,等到读完5.15有相关基础后,再读最新版本也不迟。
- 遵循阅读推荐顺序从外围到核心再到边角料,一个一个文件的阅读,只要是能读懂的就要读完,要冷静下来思考代码背后的相关设计原理,阅读要保持冷静的心态,切记,要保持冷静的心态和思考的状态去阅读代码。中途做好代码注释
- 遇到不懂的部分,停下来,找步骤一里面的相关知识,搞懂后再读
- 不要贪全,源码里一个函数可能各个功能模块的代码均有涉及,遇到还未读的模块代码时,做好备注,暂时放下,等后面阅读相关模块时再回头来读
- 最后一点,整个过程要有耐心,要保持思考的心态,要冷静
再次启航,保持航向!祝各位也在阅读lua的小伙伴,GoodLuck to you