编程序,是程序员的一个基本技能,也是计算机算法实践与验证的基本手段。有句话说的好,巧妇难为无米之炊,这里的米是指我们要具备的领域的基本知识,才能在对应领域的平台上发挥自己的能力。
我认为编程序包括三个层面,一个层面是理论知识,一个层面是动手环节,还有一个层面的就是前两个层次的结合处,即如何把理论知识转化成动手环节。
对于理论知识层面而言,主要是数学模型、体系架构等方面。举个例子来说,比如数值积分的计算方法理论,需要对应的数学基础进行支撑,我们就需要去学习对应的理论,就需要从数值分析等书籍去寻找答案。找答案的过程也是一个不断理解,不断探索的过程,要把每一项数学公式都理解清楚,才能对整体过程有更深刻的认识。
对于动手环节而言,主要是编程方法、编程技巧的方面。我们以c语言为例,基本的语法、基础库中的常用函数都应当熟练掌握。如果实在linux环境下编程,那么linux环境的各个方面都应当有所了解,比如linux的数据类型、文件系统等等。
从理论到实践,是需要一个不断反馈的过程的。我们需要根据某一个特定理论进行实现,而实现过程中我们将会发现,理论与实践的方面差异,我们需要再去寻找如何实现方面的答案,而这个寻找的过程将是困难和长期的,或许还充满着谬误与曲折。
对于理论和实践相结合的环节而言,有一种可行的办法是,使用已有的成果来指导我们的实践过程。例如数值积分库的编写需要依赖于已有数值编写库的算法结果进行验证,这样我们就能不断纠正自己的程序设计过程,进而实现我们自己对应的积分库。
第三个层次的建立,是要经过一个不断实践和总结的过程。因而我们不能畏惧困难,应该不断寻找突破点,让自己的编程能力不断的迈上新的台阶。