摘自:http://users.ece.utexas.edu/~adnan/pike.html
Rob Pike's 5 Rules of Programming
- Rule 1. You can't tell where a program is going to spend its time. Bottlenecks occur in surprising places, so don't try to second guess and put in a speed hack until you've proven that's where the bottleneck is.
- Rule 2. Measure. Don't tune for speed until you've measured, and even then don't unless one part of the code overwhelms the rest.
- Rule 3. Fancy algorithms are slow when n is small, and n is usually small. Fancy algorithms have big constants. Until you know that n is frequently going to be big, don't get fancy. (Even if n does get big, use Rule 2 first.)
- Rule 4. Fancy algorithms are buggier than simple ones, and they're much harder to implement. Use simple algorithms as well as simple data structures.
- Rule 5. Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming.
Pike's rules 1 and 2 restate Tony Hoare's famous maxim "Premature optimization is the root of all evil." Ken Thompson rephrased Pike's rules 3 and 4 as "When in doubt, use brute force.". Rules 3 and 4 are instances of the design philosophy KISS. Rule 5 was previously stated by Fred Brooks in The Mythical Man-Month. Rule 5 is often shortened to "write stupid code that uses smart objects".
===============================================================================
Rob Pike关于编程的五个原则
规则1: 你没法预测程序会将时间花费在哪儿。瓶颈会发生在意想不到的地方,除非你已经测试并定位了瓶颈,否则不要尝试去猜测和优化它。
规则2:测量。在测量之前不要为了提升速度优化代码。即使是在测量之后,也不要随意优化除非其中的一部分代码已经压倒其余代码。
规则3:当n很小的时候好的代码是很慢的,并且n通常都很小。好的算法都有一个很大的常量,除非你知道n很快就会变得很大,否则还是不要使用好的代码(即使n变大了,也先使用 规则2)。
规则4:好的算法比简单的算法更容易产生bug,并且它也更难去实现。尽可能使用简单的算法和简单的数据结构。
规则5:数据主导。如果你选择了正确的数据结构并且组织得很好,算法几乎总是不言而喻的。 数据结构,而不是算法,是编程的核心。
简要:
派克的规则1和2重申了托尼·霍尔(Tony Hoare)着名的“过早优化是万恶之源”的格言。
肯·汤普森(Ken Thompson)将派克(Pike)的规则3和4改写为:“如果有疑问,请使用暴力”。 规则3和4是KISS设计理念的实例。
规则5以前由弗雷德·布鲁克斯在“人月神话”中说过。 规则5通常缩写为“编写使用智能对象的愚蠢代码”。