ycombinator最近的一篇文章列出了一个具有伟大程序员的原则的评论。
#7.优秀的程序员:我优化了代码。更好的程序员:我构造数据。最好的程序员:有什么区别吗?
承认主观和有争议的概念--是否有人对这意味着什么有立场?我知道,但我想稍后用我的想法编辑这个问题,以免让答案变得容易。
发布于 2012-10-08 14:39:07
十有八九,当您很好地构造代码/模型时,优化将变得非常明显。有多少次你看到了一个马蜂窝,发现它完全不是最优的,当你重组它的时候,大量的冗余变得非常明显。
设计师知道自己已经达到了完美,不是在没有什么可补充的时候,而是在没有什么东西可以带走的时候。-安托万·德圣-埃斯伯里
一个结构良好的系统在本质上将是最小的,并且由于它的最小性质,它将被优化,因为它是多么的少,直接关系到它为实现它的目标所做的事情。
编辑:为了阐明其他人从这一点上拿走的观点,把语句看作是识别代码和数据之间的关系也是完全准确的。这种关系就是这样的:如果您更改了数据的结构,则需要更改代码以尊重已更改的结构。如果希望优化代码,则可能需要更改数据结构,以使代码能够更好地处理数据。
尽管如此,这里还有一种完全不同的可能性,那就是这位与YCombinator有关系的人可能会把代码作为同象性的LISP传统中的数据。在我看来,猜测这是一个很大的意义,但这是YCombinator,所以我不排除这句话只是说LISPers是“最佳程序员”S。
发布于 2012-10-08 14:50:46
我认为作者是在暗示数据的任何重组都会导致代码重组。因此,以优化系统为目标的数据重组也会迫使您优化代码,从而引发“有什么不同吗?”回应。
请注意,“超级优秀的程序员”可能会回答“有什么不同吗?”这里还有一些不同之处:一旦您尝试优化以改进CPU缓存的使用,您可能会保持数据结构的布局不变,但是更改访问它们的顺序会产生很大的不同。
发布于 2012-10-08 15:05:50
考虑一下最明显的例子--“搜索用户数据太慢了!”
如果您的用户数据没有索引或至少排序,那么重构您的数据将很快产生更高的代码性能。如果数据结构正确,并且只是迭代集合(而不是使用索引或执行二进制搜索),那么修改代码就会产生更高的代码性能。
程序员是问题解决者。虽然区分算法和数据结构是有用的,但它们并不是孤立存在的。最好的程序员知道这一点,不要不必要地孤立自己。
https://softwareengineering.stackexchange.com/questions/167964
复制相似问题