Rob Pike 的 5 个编程原则】的更多相关文章

谷歌大牛 Rob Pike 的 5 个编程原则 简介: Rob Pike,目前谷歌公司最著名的软件工程师之一,曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作系统开发的主要领导人.他是缔造Go语言和Limbo语言的核心人物.下面是他分享给大家他在贝尔实验室工作的一段经历,这段经历改变了他对bug调试的思想认识. 主要工作经历: 我在贝尔实验室工作了很多年.我在计算机科学研究中心,你会很诧异,这是个很小的实验室,但这里却创造了Unix,我来到这里工作的时候…
原则 1. 你没有办法预测每个程序的运行时间,瓶颈会出现在出乎意料的地方,所以在分析瓶颈原因之前,先不要盲目猜测. 原则 2. 测试(measure).在测试之前不要优化程序,即使在测试之后也要慎重,除非一部分代码占据绝对比重的运行时间. 原则 3. 花哨的算法在 n 比较小时效率通常比较糟糕,而 n 通常是比较小的,并且这些算法有一个很大的常数.除非你确定 n 在变大,否则不要用花哨的算法.(即便 n 不变大,也要先遵循第 2 个原则.) 原则 4. 相对于朴素的算法来说,花哨的算法更容易出现…
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…
Rob Pike:我得到的最佳编程建议 Rob Pike,目前谷歌公司最著名的软件工程师之一,曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作系统开发的主要领导人.他是缔造Go语言和Limbo语言的核心人物.下面是他分享给大家他在贝尔实验室工作的一段经历,这段经历改变了他对bug调试的思想认识. Job的主要工作经历: 我在贝尔实验室工作了很多年.我在计算机科学研究中心,你会很诧异,这是个很小的实验室,但这里却创造了Unix,我来到这里工作的时候Unix…
Talk 3: Rob Pike on Upspin Upspin is an experimental project to build a framework for naming and sharing files and other data securely, uniformly, and globally: a global name system of sorts. It is not a file system, but a set of protocols and refere…
Rob pike发表过一个有名的演讲<Concurrency is not parallelism>(https://blog.golang.org/concurrency-is-not-parallelism), 演讲胶片在talks.golang.org中可以找到(https://talks.golang.org/2012/waza.slide#1), 演讲视频地址 :https://vimeo.com/49718712 以下是根据视频转换的文本信息. if you looked at t…
1.你无法断定程序会在什么地方耗费运行时间.瓶颈经常出现在想不到的地方,所以别急于胡乱找个地方改代码,除非你已经证实那儿就是瓶颈所在. 2.估量.在你没对代码进行估量,特别是没找到最耗时的那部分之前,别去优化速度. 3.花哨的算法在n很小时通常很慢,而n通常很小.花哨算法的常数复杂度很大.除非你确定n总是很大,否则不要用花哨算法(即使n很大,也优先考虑原则2).比如,解决常见问题时,最简单的树——二叉树(binarytree),总是比那些复杂的树(AVL树,伸展树(splaytree)和红黑树.…
罗布·派克_百度百科 https://baike.baidu.com/item/罗布·派克   1. 你无法断定程序会在什么地方耗费运行时间.瓶颈经常出现在想不到的地方,所以别急于胡乱找个地方改代码,除非你已经证实那儿就是瓶颈所在. 2. 估量.在你没对代码进行估量,特别是没找到最耗时的那部分之前,别去优化速度. 3. 花哨的算法在 n 很小时通常很慢,而 n 通常很小.花哨算法的常数复杂度很大.除非你确定 n 总是很大,否则不要用花哨算法(即使 n 很大,也优先考虑原则 2 ).比如,解决常见…
1.单一职责原则:每个类只负责完成一个职责,当它需要完成多个职责时就需要将它拆分开来. 2.开放封闭原则:对扩展开放,对修改封闭. 3.里氏替换原则:子类对象可以替换(代替)它的所有父类(超类)对象. 4.接口隔离原则:用多个专门的接口比使用单一的接口更好,类与类之间的依赖应该建立在最小的接口上.避免接口臃肿,污染. 5.依赖倒置原则:抽象不能依赖于具体(实现),具体应该依赖于抽象,对抽象进行编程,降低客户与具体实现模块间的耦合.高层模块不应该依赖于底层模块,都应该依赖于抽象.…
第1章 风格 1.1 名字 1.2 表达式和语句 1.3 一致性和习惯用法 1.4 函数宏 1.5 神秘的数 1.6 注释 1.7 为何如此费心 第2章 算法与数据结构 2.1 检索 2.2 排序 2.3 库 2.4 一个Java 快速排序 2.5 大O记法 2.6 可增长数组 2.7 表 2.8 树 2.9 散列表 2.10 小结 第3章 设计与实现 3.1 马尔可夫链算法 3.2 数据结构的选择 3.3 在C中构造数据结构 3.4 生成输出 3.5 Java 3.6 C++ 3.7 Awk和…
摘自:https://kb.cnblogs.com/page/654057/ 作者: 贺卓凡  来源: ImportSource  发布时间: 2020-01-23 19:52  阅读: 2324 次  推荐: 20   原文链接   [收藏] 大约在60年前,美国军方的软件开发开始遵循一个原则,叫KISS原则.他们希望武器系统中所用的每个指令都是极其简单和傻瓜式的.这个原则后来在编程领域中被广泛采用,如今好多著名的开源框架都是遵循这一原则来开发,并最终取得了巨大的成功. 在上一文中<Apach…
(1)大括号的匹配原则(就近原则){} (2)html标签有截断c#代码的功能 @*服务器端的注释*@    <!--客户端注释-->…
1.合理的使用注释 注释为:/*…………*/ 注释有以下几种情况: 1) 版本.版权声明. 2) 函数接口说明. 3) 重要的代码或者段落显示. 注释注意: 1) 注释是对代码的解释,不是对文档.注释不可喧宾夺主,注释不宜太多,花样也要少. 2) 如果代码本身很清楚,就不比加注释. 3) 边写代码边注释,在修改代码的同时修改注释,保证注释的一致性. 4) 没用的注释要及时删除. 5) 注释应该准确.易懂,防止出现二义性. 6) 尽量避免在注释中使用不常用的缩写. 7) 注释的位置要与所描述的代码…
本文学习来源于<javascriptDOM编程艺术>仅作笔记 学会怎样才能利用DOM脚本编程技术以一种既方便自己更体贴用户的方式去充实和完善你们的网页. 循序渐进:从最核心的内容开始,逐步添加额外的功能. 预留退路:为内容添加的样式和行为要留有足够的退路,以保证用户能访问到核心内容. 以用户为中心的设计: DHTML(动态HTML):是dynamic HTML 的简称.它不是一项单一的新技术,而是HTML.CSS.javascript这三种技术相结合的产物.现在的DHTML已经成为了一种简单.…
1基本原则    质量是关键.没有人会对很差的工作感到满足.当完成高质量的工作时,你会为此而感到骄傲.不管你是否知道,你都会因为你的高质量工作而得到信誉.因此,要想为自己所做的事感到骄傲,就需要建立个人标准,并为达到这一标准而努力奋斗.在达到这些标准时,再提高标准并继续努力.挑战自己去完成更优良的工作,你将会为自己的成就而感到惊讶. 1.1 了解单片机的能力[规则1]设计满足要求的最精简的系统.    正确估计单片机的能力,知道单片机能做什么,最大程度的挖掘单片机的潜力对一个单片机系统设计者来说…
数据压倒一切.如果选择了正确的数据结构并把一切组织的井井有条,正确的算法就不言自明.编程的核心是数据结构,而不是算法. ——Rob Pike  说明 本文基于这样的认识:数据是易变的,逻辑是稳定的. 本文例举的编程实现多为代码片段,但不影响描述的完整性. 本文例举的编程虽然基于C语言,但其编程思想也适用于其他语言. 此外,本文不涉及语言相关的运行效率讨论. 1 概念提出 所谓表驱动法(Table-Driven Approach)简而言之就是用查表的方法获取数据.此处的“表”通常为数组,但可视为数…
这是一个简短的文档,描述了linux内核的首选代码风格.代码风格是因人而异的,而且我 不愿意把我的观点强加给任何人,不过这里所讲述的是我必须要维护的代码所遵守的风格, 并且我也希望绝大多数其他代码也能遵守这个风格.请在写代码时至少考虑一下本文所述的 风格. 首先,我建议你打印一份GNU代码规范,然后不要读它.烧了它,这是一个具有重大象征性 意义的动作. 不管怎样,现在我们开始: 第一章:缩进 制表符是8个字符,所以缩进也是8个字符.有些异端运动试图将缩进变为4(乃至2)个字符 深,这几乎相当于尝…
source: https://www.kernel.org/doc/html/latest/process/coding-style.html translated by trav, travmymail@gmail.com 这是一篇阐述Linux内核编程代码风格的文档,译者以学习为目的进行翻译. 1 缩进 Tab的宽度是八个字符,因此缩进的宽度也是八个字符.有些异教徒想让缩进变成四个字符,甚至是两个字符的宽度,这些人和那些把 PI 定义为 3 的人是一个路子的. 注意:缩进的全部意义在于清晰…
源码地址: https://github.com/mikeygithub/GoCode 第1章 1Golang 的学习方向 Go 语言,我们可以简单的写成 Golang 1.2Golang 的应用领域 1.2.1区块链的应用开发 1.2.2后台的服务应用 1.2.3云计算/云服务后台应用 1.3学习方法的介绍 1) 努力做到通俗易懂2) 注重 Go 语言体系,同时也兼顾技术细节3) 在实际工作中,如何快速的掌握一个技术的分享,同时也是我们授课的思路(怎么讲解或者学习一个技术).(很多学员反馈非常…
作者:HelloGitHub-小鱼干&卤蛋 故事要从 2007 年说起.因为受够了 C++ 煎熬的 Google 首席软件工程师 Rob Pike 召集 Robert Griesemer 和 Ken Thompson 两位牛人,决定创造一种新语言来取代 C++,这就是 Go 的由来. 在 2009 年 11 月 10 日 Google 正式发行 Go 这一编程语言.Go 从 C 语言继承了相似的表达式语法.控制流结构.基础数据类型.调用参数传值.指针等很多思想,还有 C 语言一直所看中的编译后机…
MATLAB编程风格指南Richard Johnson 著Genial 译MATLAB 编程风格指南Richard JohnsonVersion 1.5,Oct. 2002版权: Datatool 所有翻译:Genial @ USTC“Language is like a cracked kettle on which we beat tuned to dance to, while allthe time we long to move the stars to pity.”- Gustave…
从Rob Pike 的 Google+上的一个推看到了一篇叫<Understanding Object Oriented Programming>的文章,我先把这篇文章简述一下,然后再说说老牌黑客Rob Pike的评论. 先看这篇教程是怎么来讲述OOP的.它先给了下面这个问题,这个问题需要输出一段关于操作系统的文字:假设Unix很不错,Windows很差. 这个把下面这段代码描述成是Hacker Solution.(这帮人觉得下面这叫黑客?我估计这帮人真是没看过C语言的代码) 1 2 3 4…
本文译自Steve Francia在OSCON 2014的一个PPT,原作请前往:https://spf13.com/presentation/go-for-object-oriented-programmers/ 对我来说,最吸引我的不是Go拥有的特征,而是那些被故意遗漏的特征. -- txxxxd 为什么你要创造一种从理论上来说,并不令人兴奋的语言? 因为它非常有用. -- Rob Pike Go中的"对象" 要探讨Go语言中的对象,我们先搞清楚一个问题: Go语言有对象吗? 从语…
并行和并发 并发编程是指在一台处理器上"同时"处理多个任务. 宏观并发:在一段时间内,有多个程序在同时运行. 微观并发:在同一时刻只能有一条指令执行,但多个程序指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个程序快速交替的执行. 并行 parallel:同一时刻,多条指令在多个处理器上同时执行. 并发 concurrency:在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执…
SOLID 原则基本概念: 程序设计领域, SOLID (单一功能.开闭原则.里氏替换.接口隔离以及依赖反转)是由罗伯特·C·马丁在21世纪早期 引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则.当这些原则被一起应用时,它们使得一个程序员开发一个容易进行软件维护和扩展的系统变得更加可能SOLID被典型的应用在测试驱动开发上,并且是敏捷开发以及自适应软件开发的基本原则的重要组成部分. [S] Single Responsibility Principle (单一功能原则)…
1.前言 2.开宗明义 3.开发原则和要点 (1)并发编程概述 (2)异步编程基础 (3)并行开发的基础 (4)测试技巧 (5)集合 (6)函数式OOP (7)同步 1.前言 最近趁着项目的一段平稳期研读了不少书籍,其中<C#并发编程经典实例>给我的印象还是比较深刻的.当然,这可能是由于近段日子看的书大多嘴炮大于实际,如<Head First设计模式><Cracking the coding interview>等,所以陡然见到一本打着"实例"旗号的…
1. S  The Single Responsibility Principle  单一责任原则 当需要修改某个类的时候原因有且只有一个(THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE).换句话说就是让一个类只做一种类型责任,当这个类需要承当其他类型的责任 的时候,就需要分解这个类. 2. O The Open Closed Principle  开放封闭原则 软件实体应该是可扩展,而不可修改的.也就是说,对扩展…
JAVA编程规范(下) 2016-03-27 6. 代码的格式化 6.1 对代码进行格式化时,要达到的目的 1.     通过代码分割成功能块和便于理解的代码段,使代码更容易阅读和理解: 2.     使用空行和注释行,将程序中逻辑上不相关的代码块分开.比如:变量声明部分和代码语句间的分隔:较长的方法中,完成不同功能的代码块间的分隔.要避免出现逻辑上混乱的分隔,如:某一逻辑功能代码块中间用空行进行了分隔,但是在相邻功能代码块之间却没有分隔,这样会给程序阅读者造成错觉. 3.     减少为理解代…
2016-03-20 J120-CHARLIEPAN JAVA 编程规范(上) 1.      应用范围 本规范应用于采用J2EE规范的项目中,所有项目中的JAVA代码(含JSP,SERVLET,JAVABEAN,EJB)均应遵守这个规范.同时,也可作为其它项目的参考. 2.   设计类和方法 2.1 创建具有很强内聚力的类 方法的重要性往往比类的重要性更容易理解,方法是指执行一个统一函数的一段代码.类常被错误的视为是一个仅仅用于存放方法的容器.有些开发人员甚至把这种思路作了进一步的发挥,将他们…
SOLID是面向对象设计和编程(OOD&OOP)中几个重要编码原则 即:SRP单一责任原则: OCP开放封闭原则: LSP里氏替换原则: ISP接口分离原则: DIP依赖倒置原则. 1. 单一责任原则(SRP)      当需要修改某个类的时候原因有且只有一个.换句话说就是让一个类只做一种类型责任,当这个类需要承当其他类型的责任的时候,就需要分解这个类. 类被修改的几率很大,因此应该专注于单一的功能.如果你把多个功能放在同一个类中,功能之间就形成了关联,改变其中一个功能,有可能中止另一个功能,这…