Rob Pike 编程五原则
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 1: 你无法说出程序运行所花费的时间。 意外之处出现瓶颈,因此不要去尝试猜测和加快速度直到你已证明这就是瓶颈所在。
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 2: 测量。 不要调整速度直到你已进行测量,即使这样也不能,除非代码的一部分能够覆盖其余部分。
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 3: 当n小时,花哨的算法很慢,n通常很小。花哨的算法有很大的常量。不要幻想除非你确切知道n在频繁的变的很大。(即使n确实变大,首先使用Rule 2)
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 4: 花式算法比简单算法笨拙,并且他们实现更加困难。 使用简单的算法以及简单的数据结构。
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.
Rule 5: 数据占主导地位。 如果你已选择正确的数据结构且正确组织他们,那么算法几乎总是不言而喻的。数据结构而非算法,是编程的核心。
Brief Notes
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".
Who is Rob Pike?
Rob Pike, is now a Distinguished Engineer at Google co-authoring Go programming language, apart from other things. Prior to this stint, he worked at Bell Labs as a core member of the Unix Team.
Author of popular books like The Practice of Programming and Unix Programming Environment
Rob Pike,一个卓越的工程师,除其他工作外,在Google合作开发Go编程语言。在此之前,在贝尔实验室作为Unix团队核心成员。
The Practice of Programming and Unix Programming Environment等畅销书作者。
References
Content is shamelessly copy-pasted from http://users.ece.utexas.edu/~adnan/pike.html
Posted by Karthik Sirasanagandla at Sunday, September 17, 2017
Email ThisBlogThis!Share to TwitterShare to FacebookShare to Pinterest
Labels: clean code, Performance, programming, ProTips
http://blog.codonomics.com/2017/09/rob-pikes-5-rules-of-programming.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 1: 你无法说出程序运行所花费的时间。 意外之处出现瓶颈,因此不要去尝试猜测和加快速度直到你已证明这就是瓶颈所在。
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 2: 测量。 不要调整速度直到你已进行测量,即使这样也不能,除非代码的一部分能够覆盖其余部分。
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 3: 当n小时,花哨的算法很慢,n通常很小。花哨的算法有很大的常量。不要幻想除非你确切知道n在频繁的变的很大。(即使n确实变大,首先使用Rule 2)
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 4: 花式算法比简单算法笨拙,并且他们实现更加困难。 使用简单的算法以及简单的数据结构。
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.
Rule 5: 数据占主导地位。 如果你已选择正确的数据结构且正确组织他们,那么算法几乎总是不言而喻的。数据结构而非算法,是编程的核心。
Brief Notes
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".
Who is Rob Pike?
Rob Pike, is now a Distinguished Engineer at Google co-authoring Go programming language, apart from other things. Prior to this stint, he worked at Bell Labs as a core member of the Unix Team.
Author of popular books like The Practice of Programming and Unix Programming Environment
Rob Pike,一个卓越的工程师,除其他工作外,在Google合作开发Go编程语言。在此之前,在贝尔实验室作为Unix团队核心成员。
The Practice of Programming and Unix Programming Environment等畅销书作者。
References
Content is shamelessly copy-pasted from http://users.ece.utexas.edu/~adnan/pike.html
Posted by Karthik Sirasanagandla at Sunday, September 17, 2017
Email ThisBlogThis!Share to TwitterShare to FacebookShare to Pinterest
Labels: clean code, Performance, programming, ProTips
http://blog.codonomics.com/2017/09/rob-pikes-5-rules-of-programming.html
Rob Pike 编程五原则的更多相关文章
- 谷歌大牛 Rob Pike 的 5 个编程原则
谷歌大牛 Rob Pike 的 5 个编程原则 简介: Rob Pike,目前谷歌公司最著名的软件工程师之一,曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作 ...
- Rob Pike:我得到的最佳编程建议
Rob Pike:我得到的最佳编程建议 Rob Pike,目前谷歌公司最著名的软件工程师之一,曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作系统开发的主要领 ...
- Linux网络编程(五)
/*Linux网络编程(五)——多路IO复用之select() 网络编程中,使用IO复用的典型场合: 1.当客户处理多个描述字时(交互式输入以及网络接口),必须使用IO复用. 2.一个客户同时处理多个 ...
- Talk 3: Rob Pike on Upspin (Gopherfest 2017)
Talk 3: Rob Pike on Upspin Upspin is an experimental project to build a framework for naming and sha ...
- Concurrency Is Not Parallelism (Rob pike)
Rob pike发表过一个有名的演讲<Concurrency is not parallelism>(https://blog.golang.org/concurrency-is-not- ...
- Rob Pike 的 5 个编程原则
原则 1. 你没有办法预测每个程序的运行时间,瓶颈会出现在出乎意料的地方,所以在分析瓶颈原因之前,先不要盲目猜测. 原则 2. 测试(measure).在测试之前不要优化程序,即使在测试之后也要慎重, ...
- 【转】编程之道 之 Rob Pike
1.你无法断定程序会在什么地方耗费运行时间.瓶颈经常出现在想不到的地方,所以别急于胡乱找个地方改代码,除非你已经证实那儿就是瓶颈所在. 2.估量.在你没对代码进行估量,特别是没找到最耗时的那部分之前, ...
- Rob Pike
罗布·派克_百度百科 https://baike.baidu.com/item/罗布·派克 1. 你无法断定程序会在什么地方耗费运行时间.瓶颈经常出现在想不到的地方,所以别急于胡乱找个地方改代码, ...
- socket编程五种模型
客户端:创建套接字,连接服务器,然后不停的发送和接收数据. 比较容易想到的一种服务器模型就是采用一个主线程,负责监听客户端的连接请求,当接收到某个客户端的连接请求后,创建一个专门用于和该客户端通信的套 ...
随机推荐
- zabbix4.0安装和配置
以下为master端安装,开始 内核$ cat /etc/centos-release CentOS Linux release 7.4.1708 (Core) $ uname -r 3.10.0-6 ...
- 洛谷 P1525 关押罪犯
题目链接 https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1−N.他们之间的关系自然也极不和谐.很多罪 ...
- ASP.NET Core 防止跨站请求伪造(XSRF/CSRF)攻击 (转载)
什么是反伪造攻击? 跨站点请求伪造(也称为XSRF或CSRF,发音为see-surf)是对Web托管应用程序的攻击,因为恶意网站可能会影响客户端浏览器和浏览器信任网站之间的交互.这种攻击是完全有可能的 ...
- 生成、查看文件的MD5、SHA、SHA256值
生成文件的MD5.SHA.SHA256 Linux系统生成MD5.SHA.SHA256 md5sum file1.zip >> MD5.txt sha1sum file1.zip > ...
- 11.11 开课二个月零七天(ajax和bootstrp做弹窗)
1.用ajax做弹窗显示信息详情 nation.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...
- Java 基础之一对象导论
对象导论 1.1 抽象过程 所有编程语言都提供抽象机制.人们所能解决的问题的复杂性直接取决于抽象的类型和质量. 汇编语言是对底层机器的轻微抽象. 我们将问题空间中的元素及其再解空间中的表示称为对象.这 ...
- Mysql读写分离方案-Amoeba环境部署记录
Mysql的读写分离可以使用MySQL Proxy,也可以使用Amoeba.Amoeba(变形虫)项目是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项 ...
- springboot整合curator实现分布式锁
理论篇: Curator是Netflix开源的一套ZooKeeper客户端框架. Netflix在使用ZooKeeper的过程中发现ZooKeeper自带的客户端太底层, 应用方在使用的时候需要自己处 ...
- CF 1047 C. Enlarge GCD
传送门 [http://codeforces.com/contest/1047/problem/C] 题意 给你n个数,移除最少的数字使剩下的数字GCD大于初始GCD 思路 需要一点暴力的技巧,先求出 ...
- VS2013安装和单元测试
1. VC2013安装过程及使用感受 刚上大一的时候老师推荐我们用VC++6.0.当时也就听了老师的话用VC++6.0编程了一段时间.后来上了大二买了电脑VC++6.0支持不了WIN8.1所以我就开始 ...