在数值算法开发的过程中,除了纯数学理论外,有很多工具与技术环节需要我们投入大量时间学习与练习。这包括:底层编程语言、数学编程语言、编译器、调试器、编译系统、测试系统、文本编辑器、集成开发环境、Linux命令、脚本语言、文档、绘图、版本管理,以及所有用到的开源软件库及其依赖库的文档。上述每项工具或技术都有数百页甚至上千页的文档,若逐一将它们都掌握牢固、使用娴熟后再启动开发工作,则不知要等到何年何月。更何况,在这个漫长的学习过程中,大体上是学得多练得少,所以根本无法避免前学后忘的问题。因此,我认为必须贯彻以下原则,才能在持续学习提高的同时将项目工作有效向前推进。

  • 绝不能等书全部读完、技术全部练会之后再动手编程。从一开始就要将学习与实际操作相结合。
  • 只需掌握每项技术最基础、最核心的部分,就可以将其应用到我们的项目中。这里所说的 掌握 既指通过多次练习、测试、实践,了解其基本的行为与特性,也包含我们对这些行为与特性所应持有的确信态度。没有这种十足的把握,后续工作都会在一种不确定的感觉与氛围中进行,最终会给上层代码的调试带来困扰与麻烦。
  • 理解每项技术得以运作的基本设计思想,掌握基于该技术的做事方法与思路。
  • 只要有了上述核心技术与核心思想,更多具体细节就可以在开发进程中以问题与需求为导向,通过查阅书籍与网络搜索来解决。解决问题的全过程,包括现象、分析、步骤、结论、经验都应详细记录下来。

Backlinks: 《莫要自毁学术生命》