来自新智元

【导读】当程序员谈论开发设计时,常常会聊到非常多的定律,而Github上的一个名为「hacker-laws」的仓库收录了一些最常见的定律、原则等,获得了16.3k的Star。

还记得所有AI教程必提的「奥卡姆剃刀原则」吗?即:如无必要,勿增实体。这条原则也被收藏,还有一些不太常见的费茨法则、盖尔定律、康威定律等,都被一一收入囊中。

写代码累了困了?这些法则让工作事半功倍

90-9-1法则(1%法则)

90-9-1 法则表明,在诸如维基这样的互联网社区中,90% 的用户只看内容并不参与互动,9% 的用户会参与讨论,而只有 1% 的用户会创造内容。

现实世界的例子:2014 年,对四个健康的数字社交网络进行的一项研究发现,排名前 1% 的人创造了 73% 的帖子,紧随其后的 9% 平均占 25%,其余的 90% 的人平均占 2%。

类似的,帕累托法则也指出:生活中大多数事情不是均匀分布的。这个原则也被称为二八法则,重要的少数法则和因素稀疏原则。

技术成熟度曲线法则

技术成熟度曲线是高德纳咨询公司对技术最初兴起和发展的视觉展现。一图胜千言:

简而言之,这个曲线表明,新技术及其潜在影响通常会引发一轮浪潮。团队快速使用这些新技术,但有时会对结果感到失望,这可能是因为该技术还不够成熟,或者现实应用还没有完全实现。

经过一段时间后,技术的能力提高了,使用它的实际机会会增加,最终团队也可以提高工作效率。

罗伊·阿马拉简洁地总结了这一点:我们倾向于高估技术短期内的影响,并低估其长期效应。

破窗效应

在破窗理论中认为,一些明显的犯罪迹象(或缺乏环保意识)会导致进一步的、更严重的犯罪(或环境的进一步恶化)。

破窗理论已应用于软件开发中,它表明劣质代码可能会影响后续优化的效率,从而进一步造成代码劣化;随着时间的推移,这种效应将会导致代码质量大幅下降。

没那么常见的法则,但也暗藏工作秘诀

阿姆达尔定律

阿姆达尔定律是一个显示计算任务潜在加速能力的公式。这种能力可以通过增加系统资源来实现,通常用于并行计算中。

它可以预测增加处理器数量的实际好处,然而增加处理器数量会受到程序并行性的限制。

举例说明:如果程序由两部分组成,A部分必须由单个处理器执行,B部分可以并行运行。那么向执行程序的系统添加多个处理器只能获得有限的好处。

它可以极大地提升部分 B 的运行速度,但部分 A 的运行速度将保持不变。

下图展示了一些运行速度的提升潜能的例子:

可以看出,50% 并行化的程序在使用大于 10 个处理单元之后的速度提升收效甚微,而 95% 并行化的程序在使用超过一千个处理单元之后仍然可以显著提升速度。

随着摩尔定律逐渐失效,单个处理器的速度增加缓慢,并行化是提高性能的关键。

图形编程是一个极好的例子,现代着色器可以并行渲染单个像素或片段。这也是现代显卡通常具有数千个处理核心(GPU 单元)的原因。

德墨忒尔定律

得墨忒耳定律又称最少知识原则,是一条与面向对象语言有关的软件设计原则。

该定律表明,软件的一个单元应该只与其直接合作者交谈。

比如对象 A 引用了对象 B,对象 B 引用了对象 C,则 A 可以直接调用 B 的方法,但不应直接调用 C 的方法。所以如果 C 有一个 dothing() 的方法,A 不应该直接调用,而是用 B.getC().doThis()。

遵循这一定律可以限制代码更改的范围,使其以后更容易维护、更安全。

坎宁汉姆定律

在网络上想得到正确答案的最好方法不是提问题,而是发布一个错误的答案。

除了以上的这些法则,该仓库还给出了很多的原则。

职场相关原则

死海效应原则:在任何一个组织中,工程师的技能、才华和效能往往与他们在公司的时间呈反比。

能力强的人更有可能离开,能力差的人反而会留下。

呆伯特原则:公司会倾向于系统地将工作能力差的员工提升到管理层,以使他们脱离工作流程。

技术相关的原则:

单一功能原则:每个模块或者类只应该有一项功能。

开闭原则:实体应开放扩展并关闭修改。

里氏替换原则:可以在不破坏系统的情况下,用子类型替换类型。

接口隔离原则:不应强制任何客户端依赖于它不使用的方法。

依赖翻转原则:高级模块不应该依赖于低级实现。

还有一些具有哲学意味的原则:

鲁棒性原则:在自己所做的事情上要保守, 在接受别人的事情上要自由。

你不需要它法则:只有当你需要某些东西的时候,才去实现它们,而不是在你预见的时候。

KISS原则:保持简单和直白。

还有很多的法则和原则没有一一指出,需要的小伙伴请点击下面的链接打开查看。

参考链接:

https://github.com/nusr/hacker-laws-zh

- END -

长按进入小程序,进行30天打卡打卡第15期,20本新书,快来看看!(更多精彩值得期待……)

最近热文:搜狗用这个骚技术,把百度气的吐血了!
那个割肾换iPhone的男生,现在怎么样了?
世界上最难的5种编程语言教你打造一款高逼格的Vim神器
Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!
LeetCode1-50题汇总,速度收藏!2T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,人工智能,考研,软考,英语,等等。在公众号内回复「资源」,即可免费获取!回复「社群」,可以邀请你加入读者群!

点个在看少个 bug ????

GitHub 热榜:标星 1.6w,黑客必看的黑魔法开发指南!相关推荐

  1. GitHub 热榜:一款让黑客们都爱不释手的开源工具!

    点击上方"Github爱好者社区",选择星标 回复"资料",获取小编整理的一份资料 来自量子位 明明下载的是一张图片,只需修改后缀名,图片就变成了一首歌,一串 ...

  2. faker.js 登 GitHub 趋势榜标星 27.1k,可大批量生成假数据!

    整理 | 夕颜 图源 | 视觉中国 出品 | CSDN(ID:CSDNnews) 近日,GitHub上一个生成假数据的项目faker.js火了,攀升Trendinging榜单第二,标星目前已超过27. ...

  3. 牛逼了!DeepFake变脸再次来袭,强势霸屏GitHub热榜!偏门应用“美女脱衣”还会再出现么?...

    点击上方"Github爱好者社区",选择星标 回复"资料",获取小编整理的一份资料 作者:GG哥,来源:GitHub爱好者社区 这是GitHub爱好者社区第 2 ...

  4. 腾讯最新开源IoT操作系统登上GitHub热榜,最小体积仅1.8 KB,标星1200+

    乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI 鹅厂又开源,这次是一个操作系统,面向物联网场景,名为TencentOS-tiny. 项目如其名,核心亮点就是tiny--最小体积仅1.8 ...

  5. 真香...全网最牛12306抢票神器,GitHub热榜第一,标星1.3W!

    文/北妈 阅读本文需要 2.0分钟 这是北妈第 225篇 原创文章 一 先说一句我们的口号:周五不加班,周五不加班!(虽说最近北妈总加班) 周五,我们老规矩,唠唠嗑.说几件事 最近zhu肉涨价,北妈我 ...

  6. PyTorch实现的李沐《动手学深度学习》,登上GitHub热榜,获得1000+星

    点击我爱计算机视觉标星,更快获取CVML新技术 晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 李沐老师的<动手学深度学习>是一本入门深度学习的优秀教材,也是各大在线书店的计 ...

  7. 用PyTorch实现的李沐《动手学深度学习》,登上GitHub热榜,获得700+星

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 李沐老师的<动手学深度学习>是一本入门深度学习的优秀教材,也是各大在线书店的计算机类畅销书. 作为MXNet的作者之一,李沐老 ...

  8. GitHub 标星 1.6w+,我发现了一个宝藏项目,推荐大家学习

    GitHub 标星 1.6w+,我发现了一个宝藏项目,推荐大家学习 本文链接:https://blog.csdn.net/u013486414/article/details/103274892 大家 ...

  9. GitHub 热榜:天才黑客开源新项目,不到 1000 行代码,1400 Star!

    点击上方"Github爱好者社区",选择星标 回复"资料",获取小编整理的一份资料 来自机器之心 在深度学习时代,谷歌.Facebook.百度等科技巨头开源了多 ...

最新文章

  1. [SCM]源码管理 - perforce的集中授权+分布式团队+负载均衡+可扩展性+高可用性+灾难恢复...
  2. linux设置新硬盘权限,Linux 下挂载新硬盘以及更改为普通权限
  3. Nat Genet | 杨俊/岳峰团队合作揭示GATA3的遗传性非编码变异增加儿童急性淋巴细胞白血病风险的新机制...
  4. jquery mobile pc上可以滚动 手机上不能上下滚动_胶天下 | 胶粘剂在手机镜片粘接中的应用...
  5. 【QT】QT从零入门教程(一):图像处理自编软件
  6. 解决vmware“二进制转换与此平台长模式不兼容.....”的问题
  7. ACM程序设计选修课——1024: 末位零(求末尾0的方法+可有可无的快速幂)
  8. java.lang.UnsatisfiedLinkError: JNA support (com/sun/jna/android-arm/libjnidispatch.so) not found
  9. 阿里云HPC--人工智能加速利器
  10. ISO 2768-1 标准
  11. 模电实验报告:单级共射放大电路
  12. 在php中插入表格,word怎么插入表格
  13. 生活照的尺寸是多少?如何将照片裁剪为生活照?
  14. scratch编程打字机
  15. minio 图片存储服务器的部署和使用
  16. 王者苹果服务器转安卓系统,王者荣耀苹果用户可以转?王者荣耀苹果用户转安卓的方法教程...
  17. ESXi修改网卡名称
  18. 工商银行顾欣:分布式全链路灰度发布的探索与实践
  19. 散装食品的经营之道,从哪方面入手?
  20. 将浏览器分段缓存视频合并的操作

热门文章

  1. 创客教育中的三大空间分解论
  2. ground truth解释
  3. Veryzhou编码转换1.02正式版
  4. vue中的插槽--slot和v-slot
  5. 【深度】韦东山:一文看看尽linux对中断处理的前世今生
  6. 产品经理如何来优化CSDN手机短信验证的功能
  7. 超级强大的网格grid布局
  8. Python零基础入门(五)
  9. 算法系列10—基数排序
  10. 华为鸿蒙六月更新机型,华为鸿蒙OS带来好消息,这8款机型6月2日升级,有你的手机吗?...