| 关键词: 维基 定律 nbsp 英文 百科 原则 Principle Law 中文 |
对开发人员有用的定律、理论、原则和模式。(Laws, Theories, Principles and Patterns that developers will find useful.) 为了方便阅读,维基百科增加了中文链接。英文链接表示 hacker-laws 项目尚未完成的主题。 喜欢点 star 、关注点 watch 、贡献点 fork 。翻译错漏之处,欢迎指正!
介绍当人们谈论开发时,会聊到许多定律。这个仓库收录了一些最常见的定律。 定律现在我们开始吧! 90-9-1 法则 (90–9–1 Principle or 1% Rule)90-9-1 法则表明,在诸如维基这样的互联网社区中,90% 的用户只看内容并不参与互动,9% 的用户会参与讨论,而只有 1% 的用户会创造内容。 现实世界的例子:
参见: 阿姆达尔定律 (Amdahl's Law)
举例说明:如果程序由两部分组成,部分 A 必须由单个处理器执行,部分 B 可以并行运行。那么向执行程序的系统添加多个处理器只能获得有限的好处。它可以极大地提升部分 B 的运行速度,但部分 A 的运行速度将保持不变。 下图展示了一些运行速度的提升潜能的例子: (图片来源:By Daniels220 at English Wikipedia, Creative Commons Attribution-Share Alike 3.0 Unported, https://en.wikipedia.org/wiki/File:AmdahlsLaw.svg) 可以看出,50% 并行化的程序在使用大于 10 个处理单元之后的速度提升收效甚微,而 95% 并行化的程序在使用超过一千个处理单元之后仍然可以显著提升速度。 随着摩尔定律减慢,单个处理器的速度增加缓慢,并行化是提高性能的关键。图形编程是一个极好的例子,现代着色器可以并行渲染单个像素或片段。这也是现代显卡通常具有数千个处理核心(GPU 或着色器单元)的原因。 参见: 破窗效应 (The Broken Windows Theory)在破窗理论中认为,一些明显的犯罪迹象(或缺乏环保意识)会导致进一步的、更严重的犯罪(或环境的进一步恶化)。 破窗理论已应用于软件开发中,它表明劣质代码(或 Technical Debt)可能会影响后续优化的效率,从而进一步造成代码劣化;随着时间的推移,这种效应将会导致代码质量大幅下降。 参见: 例子:
布鲁克斯法则 (Brooks's Law)
这个定律表明,在许多情况下,试图通过增加人力来加速已延期项目的交付,将会使项目交付得更晚。布鲁克斯也明白,这是一种过度简化。但一般的论据是,新资源的时间增加和通信开销,会在短期内使开发速度减慢。而且,许多任务是密不可分的,换句话说,这样可以使更多的资源之间能轻易分配,这也意味着潜在的速度增长也更低。 谚语 九个女人不能在一个月内生一个孩子 与布鲁克斯法则同出一辙,特别是某些不可分割或者并行的工作。 这是《人月神话》的中心主题。 参见: CAP 定理 (CAP Theorem or Brewer's Theorem)CAP 定理由 Eric Brewer 所定义,它指出对于分布式数据存储来说,不可能同时满足以下三点:
核心论证如下:因为无法保证不会存在网络分区(参见分布式计算的谬论 (The Fallacies of Distributed Computing)),所以在分区的情况下,我们可以选择取消当前操作(增加一致性并降低可用性),或者选择继续进行该操作(增加可用性降低一致性)。 该定理的名字来源于一致性 (Consistency)、可用性 (Availability)、分区容错性 (Partition Tolerance) 的首字母。请注意,这与 ACID 没有任何关系,因为其对一致性有另一种定义。最近发展出来的 PACELC 定理与 CAP 定理相比,增加了对网络 未 分区时(即系统按预期操作时)的延迟和一致性的约束。 大多数的现代数据库平台会通过向数据库用户提供选项的方式,来选择是需要高度可用的操作(比如“脏读 (dirty read)”),还是高度一致的操作(比如“法定确认写写入 (quorum acknowledged write)”)——这间接地承认了这一定理。 现实世界的例子:
参见: 康威定律 (Conway's Law)这个定律说明了系统的技术边界可以反应一个组织的结构,它通常会在改进组织时被提及。康威定律表明,如果一个组织被分散成许多小而无联系的单元,那么它开发的软件也是小而分散的。如果组织是更多地围绕以功能或服务为导向的垂直结构,那么软件系统也会反映这一点。 参见: 坎宁汉姆定律 (Cunningham's Law)
据史蒂芬·麦克基迪说,沃德·坎宁汉姆早在 20 世纪 80 年代早期的时候建议他,在互联网上获得正确答案的最好方法不是提问题,而是发布一个错误的答案。麦克基迪称这为坎宁汉姆定律,而坎宁汉姆不以为然,并觉得这是“错误的引用”。最初这条定律只是用于描述 Usenet 上的社交行为,但后来也渐渐用于其他的在线社区(如 Wikipedia、Reddit、Twitter、Facebook 等)。 参见: 邓巴数字 (Dunbar's Number) |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|