再谈计算机的无上心法

以前说过这个话题,现在看看当时真是肤浅了,首先这个问题挺空的,而且只有当时所诉说的技能很难称之为计算机的无上心法。单说代码实现的无上心法都差强人意,这里面需要的能力不仅仅是抽象,还包括设计。而设计恰恰又是很容易被忽略的,怎样定义一个好的设计我觉得这是因需求和领域而异的。参考艺术界,不同时代所流行的元素和主义在变化,比如最近备受推崇的极简主义。

我看到过的一个描述设计最简明扼要的文章就是王垠写的谈创新(现在看不到了)。文中所说的创新其实是归结到设计层面的,我们不需要重复「造轮子」,搞出一些诡异的不能称之为创新的创新(造了一个方轮子,然后用在家用汽车上)。记得当时算法竞赛时知道的神牛胡伟栋也说过,所谓的创新是在充分了解前人已经做出的成果上出现的,而不是前人的东西看都不看就去凭空创造(原话记不清了)。记得高中的物理老师也说过:对以往知识的熟知和对新鲜事物及其发展前景的敏感,是一个人创造力的源泉。这里能举出的例子有很多,王垠专门拿出一些日常生活用品举例子,还推荐了一本书:The Design of Everyday Things。而有关于设计的书,那就太多了,可以看看讲复杂系统与架构的。

也可以看看编程珠玑,书中第一章就提出了作者所认可的好的设计。对于抽象与设计的理解上升到哲学高度自然就有了所谓的无上心法,「看似很多很难的问题,其中的道理其实很简单」,这种直觉不正是一种所谓的心法吗。而能够领悟这种直觉的过程和方式姑且可以称之为「无上」吧。