netabare
2023-01-09 20:27:29 +08:00
可以从简单的库开始。
举个不恰当的例子,比如说 compiler ,要实现一个复杂语言的很复杂吧,但是简单的,LL(1)的文法解析,手写可能有点复杂,但用生成器的话基本上大家都会,一个只有 int 和最简单几个语言结构的,大概就是本科生大作业的程度。
那么,在这个基础上,就可以观察一下自己想要做什么方面的扩充,然后去针对性地学习和扩展功能,比如说,更多的基本数据类型、结构体、OOP 、类型检查、编译到特定的机器上,之类的。
像是数据库或者 pdf 库之类的,大概也是类似的内容吧。
而且如果把功能拆分开来然后逐个审视的话,op 也许会发现,其中有许多功能已经有别人做过了,比如说对命令行参数的解析,甚至连 pdf 解析这件事本身也是别人做过的。
那么就可以问一下自己,实现这个项目的目的是什么呢,如果是为了短平快,那么自然可以别的类库都用上,如果是为了学习,就可以自己去寻找各种材料,比如说 pdf 的 spec 或者一些简单的类似项目的代码,来参考学习。
这样的话,就可以从简单的开始,一点一点把项目往复杂里做,也可以先依赖第三方库,在自己写出了自己的版本后把这个库给替代了。
我觉得最重要的大概是两个能力吧,一个是「解决问题的能力」,看 op 的介绍,在这方面应该没有问题。那么第二个能力,就是,组合和拆分,也就是说,把一个复杂的问题拆分成许多小问题,再把小问题拆分成更具体的任务…之类的,把不同的知识点组合起来,然后形成一个可以去做的项目,这样的能力。