Coding

算法的设计与实现同等重要——前者更倾向于在“数学”层面给出抽象的想法,后者则是将想法切实地转换成一行行的代码。拔尖班课程体系中没有一门“程序设计基础”课,课程设计者的想法是“编程这种简单的工程任务不需要教”。这个说法即正确又有失偏颇:简单的语法规则自然没有赘述的必要,各种教程和手册已经一应俱全;但如何写出高质量的代码,合理地设计程序布局却是一门很大的学问。很多大学的程序设计课都停留在了语法介绍层面而忽略了这点。

需要承认的是,在 OJ 程序这种几十几百行的“玩具代码”中大谈“面向对象编程”、“面向切口编程”等各种概念多少有些不妥。但即使在这样小规模的程序中仍然有很多值得注意的设计细节。本系列文章将尽可能展示一些这样的经验。事实上,这些小经验在真正大规模的软件工程中也有以小见大的启示作用。

System is art, not science.