五个编程原则:Rob Pike‘s 5 Rules of Programming

这篇具有很好参考价值的文章主要介绍了五个编程原则:Rob Pike‘s 5 Rules of Programming。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文

https://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. 复杂算法比简单算法更容易出错,而且实现起来更困难。使用简单算法以及简单数据结构。
规则5. 数据至关重要。如果你选择了正确的数据结构并组织得当,算法几乎总是不言自明的。数据结构而不是算法是编程的核心。
Pike的第1和第2条规则重新阐述了Tony Hoare的著名格言“过早优化是万恶之源”。Ken Thompson将Pike的第3和第4条规则重新表述为“怀疑时,使用暴力法”。规则3和规则4是KISS设计哲学的实例。规则5以前由Fred Brooks在《人月神话》中提出。规则5通常缩写为“编写使用智能对象的愚蠢代码”。

笔记

规则5倒是没想到的,但我不是很认同。
反例如Dijkstra最短路径算法,或者经典算法都是反例。
似乎没有经典数据结构这个说法。

个人一直觉得是相辅相成的,都很重要,很难分先后。
当然,以数据为中心,大部分事务实际都是基础算法的组合,将数据描述清楚了,问题都已经解决80%了。
从这个角度(以数据为中心)来讲,数据结构的确优先于算法。文章来源地址https://www.toymoban.com/news/detail-829739.html

到了这里,关于五个编程原则:Rob Pike‘s 5 Rules of Programming的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 编程入门:五个你必须知道的编程常识

    常识1:编程不仅仅是写代码 当我们谈论编程时,大多数人首先想到的是写代码。这是正确的,但并不完整。编程不仅仅是写代码,而是解决问题的一种方式。编程是一种工具,我们使用它来创建能够解决特定问题的产品和服务。 比如,你想开发一个手机应用来帮助人们更有

    2024年01月23日
    浏览(65)
  • 【C# Programming】编程入门:方法和参数

    1、方法的定义         由一系列以执行特定的操作或计算结果语句组成。方法总是和类关联,类型将相关的方法分为一组。 方法名称   形参和实参(parameter argument) 返回值 2、命名空间         一种分类机制,用于组合功能相关的所有类型。命名空间是分级的,级数可

    2024年02月09日
    浏览(37)
  • 【C# Programming】编程入门:数组、操作符、控制流

    目录 一、数组 1、数组的声明 1.1 一维数组声明:       1.2 多维数组声明:        2、数组的实例化和赋值 2.1 数组在声明时通过在花括号中使用以逗号分隔的数据项对数组赋值, 例如: 2.2 如果在声明后赋值,则需要使用new 2.3 C# 也支持将new 作为声明语句的一部分, 例如

    2024年02月11日
    浏览(50)
  • The fifth parameter of the qt slot function(qt Connect函数的第五个参数)

    在Qt中,信号槽机制是允许对象之间通信的核心特性。 在处理线程时,非常必要了解信号和插槽在多线程环境中的工作方式。 关于connect函数的“第五个参数”,指的是 connect() 方法中的 Qt::ConnectionType 参数。此参数确定连接的类型,这在多线程应用程序中非常重要。 现在让我

    2024年01月21日
    浏览(56)
  • 什么是函数式编程(functional programming)?在JavaScript中如何实现函数式编程的概念?

    前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一

    2024年02月07日
    浏览(57)
  • 数据结构与算法 | 动态规划算法(Dynamic Programming)

    上一篇文末已经提到了记忆化搜索是动态规划(Dynamic Programming)的一种形式,是一种自顶向下(Top-Down)的思考方式,通常采用递归的编码形式;既然动态规划有自顶向下(Top-Down)的递归形式,自然想到对应的另外一种思考方式 自底向上( Bottom-Up ) ,也就是本篇要写的内

    2024年02月05日
    浏览(46)
  • 算法——动态规划(DP,Dynamic Programming)

    动态规划常用于解决优化问题。 动态规划通常以自底向上或自顶向下的方式进行求解。 自底向上的动态规划从最简单的子问题开始,逐步解决更复杂的问题,直到达到原始问题。 自顶向下的动态规划则从原始问题出发,分解成子问题,并逐步求解这些子问题。 动态规划算法

    2024年02月02日
    浏览(53)
  • 数据结构与算法:动态规划(Dynamic Programming)详解

    动态规划(Dynamic Programming,简称DP) 是一种在数学、管理科学、计算机科学、经济学和生物信息学等领域中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划经常被用于求解优化问题。 动态规划的核心思想是将复杂问题分解为更小的子问

    2024年04月25日
    浏览(48)
  • 算法设计与分析-Dynamic Programming「国科大」卜东波老师

    A robber is planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security system connected and it will automatically contact the police if two adjacent houses were broken into on the same night. (a) Given a list of non-negative integers

    2024年02月22日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包