谷歌大牛 Rob Pike 的 5 个编程原则

简介: 谷歌大牛 Rob Pike 的 5 个编程原则 简介: Rob Pike,目前谷歌公司最著名的软件工程师之一,曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作系统开发的主要领导人。

谷歌大牛 Rob Pike 的 5 个编程原则

简介:

Rob Pike,目前谷歌公司最著名的软件工程师之一,曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作系统开发的主要领导人。他是缔造Go语言和Limbo语言的核心人物。下面是他分享给大家他在贝尔实验室工作的一段经历,这段经历改变了他对bug调试的思想认识。

主要工作经历:

我在贝尔实验室工作了很多年。我在计算机科学研究中心,你会很诧异,这是个很小的实验室,但这里却创造了Unix,我来到这里工作的时候Unix已经发布了第七版。从2002年起我来到谷歌工作,主要开发一些系统基础架构。

最主要的成就:

我最为人所知的应该是我和Brian Kernighan(Unix开发组的重要成员)合著的两本书:《The Unix Programming Environment》 和 《程序设计实践(The Practice of Programming)》 (30年后的今天仍在印刷出版!),影响范围最广的一件事应该是我和Ken Thompson共同开发完成了UTF-8编码格式。在其它方面,诸如计算机图形,操作系统,软件开发工具等上也做了大量的工作,最近在给谷歌开发Go编程语言。

下面是 Rob Pike 的 5 个编程原则

原则 1. 你没有办法预测每个程序的运行时间,瓶颈会出现在出乎意料的地方,所以在分析瓶颈原因之前,先不要盲目猜测。

原则 2. 测试(measure)。在测试之前不要优化程序,即使在测试之后也要慎重,除非一部分代码占据绝对比重的运行时间。

原则 3. 花哨的算法在 n 比较小时效率通常比较糟糕,而 n 通常是比较小的,并且这些算法有一个很大的常数。除非你确定 n 在变大,否则不要用花哨的算法。(即便 n 不变大,也要先遵循第 2 个原则。)

原则 4. 相对于朴素的算法来说,花哨的算法更容易出现Bug,更难调试。尽量使用朴素的算法和数据结构。

原则 5. 数据占主导地位(Data dominates)。如果你选择了正确的数据结构,并且已把事情组织好,那么算法的效率显而易见。编程的核心是数据结构是,不是算法。

Pike的第 1 条和第 2 条原则实际上重新强调了Tony Hoare那句名言,“过早的优化是万恶的根源”。Ken Thompson将Pike的第 3 条和第 4 条原则改写为“当遇到麻烦时,试试最简单粗暴的办法”,原则 3 和原则 4 也是 KISS 哲学的体现。Fred Brooks在《人月神话》中首先阐述了原则 5 ,原则 5 常常会被概括为“用最佳结构,写简单代码”。

倾城之链 | NICE LINKS DJI Mavic Air
目录
相关文章
探索编程之道:从代码到哲学的启示之旅
【9月更文挑战第35天】在编程的世界里,每一行代码都蕴含着深刻的意义。本文通过深入浅出的方式,带领读者从基础的编程概念出发,逐步探索编程背后的哲理。我们将一起发现,编程不仅仅是技术操作,它更像是一场思维和逻辑的训练,一次对世界本质的洞察。文章将通过具体示例,展示如何将编程技能与日常生活相结合,以及如何通过编程来提升个人的思维能力和解决问题的能力。让我们开始这段充满启发的旅程吧!
|
3月前
|
敏捷开发 设计模式 测试技术
代码之禅:从技术实践中领悟软件开发的本质
【7月更文挑战第41天】 在数字世界的浪潮中,软件开发已成为一门艺术与科学交织的领域。本文将探讨从实际技术实践中提炼出的软件构建哲学,揭示编程背后隐藏的智慧与策略。我们将通过一系列真实案例分析,探索如何提升代码质量、优化开发流程,并讨论持续学习的重要性。文章旨在为开发者提供深入洞见,帮助他们在不断变化的技术环境中保持竞争力和创新精神。
|
6月前
|
人工智能 算法 数据处理
代码之禅:从技术实践中领悟软件开发的艺术
【5月更文挑战第27天】 在数字世界的迷宫中,每一行代码都如同艺术家的笔触,描绘出千变万化的技术图景。本文将探讨软件开发的艺术性和技术性如何交织在一起,通过个人的技术实践和感悟,阐述如何在编码的过程中寻找到创造力与逻辑力的平衡点。我们将一起走进那些看似平凡却蕴含深意的编程实践,探索它们背后隐藏的智慧与哲学。
|
6月前
|
算法 程序员
代码与哲学:从技术实践中汲取智慧
【2月更文挑战第18天】 在数字世界的构建过程中,代码不仅仅是一种实现功能的工具,它更是连接现实与理想的桥梁。本文将探讨编程实践如何映射出深刻的哲学思考,揭示通过技术探索所能领悟的人生智慧。我们将透过代码的表象,深入其背后的逻辑结构,从而理解编程不仅是一种职业技能,更是一种对世界认知和自我修炼的方式。
54 7
|
设计模式 架构师 Java
白活了!谷歌架构师10年心血汇成的《24种设计模式》,这才是正解
设计模式 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。一看代码一团糟,那这人肯定不怎么样。 现在各种开源框架里满满都是设计模式,所以可以不用但是最好要懂,除非一辈子CRUD,不看框架。
|
SQL JavaScript 程序员
编程中有没有遇到被自己蠢哭的BUG;想学go,有未来吗;如何保持持续学习的热情 |极客观点
编程中有没有遇到被自己蠢哭的BUG;想学go,有未来吗;如何保持持续学习的热情 |极客观点
104 0
|
消息中间件 运维 NoSQL
非著名产品经理亲授:如何与程序员对线
非著名产品经理亲授:如何与程序员对线
非著名产品经理亲授:如何与程序员对线
|
边缘计算 运维 安全
不会三种编程语言的不算程序员 走近阿里云 MVP烁淼吐槽大佬
为将阿里云 MVP打造成为技术顶尖人群的社群,建立成员之间连接,促进相互交流和业务影响,迸发各行各业技术人的无限价值。2020年2月初,运营团队与阿里云MVP们共同推出“走近阿里云MVP”新栏目,从技术人性格、开发经验、行业知识积累等方面进行深入分享和交流,了解彼此,产生化学反应,发现不同连接相同!
1635 0
不会三种编程语言的不算程序员 走近阿里云 MVP烁淼吐槽大佬
微软资深软件工程师:阅读代码真的很难
导读:原文作者Eric Lippert是一名资深软件设计工程师,从1996年起一直在微软开发部门任职,协助设计并实现VBScript、JScript、JScript .NET、Windows Script Host、Visual Studio Tools for Office和C#。
1163 0