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

Rob Pike

Job的主要工作经历:

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

最主要的成就:

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

使用最多的编程语言:

长久以来,C语言是我编程的选择,但在我的编程生涯里,我使用过很多种语言。而目前我开发的东西基本上都是用Go语言,这是我见过的最高效的一种编程语言,它在我的工具箱里已经完全取代了C语言的位置。

忠告:

在我加入贝尔实验室一年多后,我开始和Ken Thompson一起在开发一个针对由Gerard Holzmann设计的很小的图形化交换语言的即时编译器上做结对编程。我打字比较快,所以我坐在电脑前,Ken站在我身后看我编程。我们开发的很快,但经常会遇到问题,而且可以看出来出错了——毕竟这是一个图形化的编程语言。当程序出错时,我本能的一头扎进问题,检查报错跟踪信息,添加调试打印语句,启动调试器,等等,但Ken只是站在那思考,完全不理会我也不查看我们写的出问题的代码。一段时间后我发现一个规律,Ken经常会比我先找到问题出在什么地方,而且会突然的喊一嗓子,“我知道什么地方的问题了。”每次他的判断都很准确。我认识到,Ken已经在脑海里构建了代码的模型,当有问题出现时,那是他脑子里的模型出了问题。在思考为什么会发生这些错误时,他能凭直觉找到模型中什么地方不对或发现写的代码跟这个模式什么地方有出入。

Ken教会了我一个极其重要的习惯:纠错前先思考。如果你一头扎进问题中,你可能只解决了当前出现问题的代码,但如果你先思考这个错误,这个bug是怎么引入的?你通常发现和纠正一个更高层次的问题,进而改进了系统设计,防止了更多bug的出现。

我认识到这种编程思考模式非常的重要。有些人痴迷于一行行的、使用各种工具来调试所有的东西。但我现在相信,思考——不看代码的思考——是最好的调试途径,因为它能让你开发出更好的软件。

转载于:https://www.cnblogs.com/ddlzq/archive/2012/08/21/2648983.html

最有价值的编程忠告[转CSDN]相关推荐

  1. hadoop编程:分析CSDN注册邮箱分布情况

    hadoop编程:分析CSDN注册邮箱分布情况 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:Ubuntu10.04 hadoop版本: ...

  2. 视频教程-Python创意编程视频课CSDN版-Python

    Python创意编程视频课CSDN版 20多年的编程磨砺,对编程技术有着执着的追求,开发有大量Python课程资源,如<哪吒学Python启蒙篇>.<哪吒学Python初级篇> ...

  3. 给 Python 开发者的四条忠告!| CSDN 博文精选

    作者 | 天元浪子 责编 | 屠敏 出品 | CSDN博客 不要纠结于开发工具的选择,简单直接就是最好的 学习一种编程语言,首先要找一款合用的集成开发工具,似乎是自然而然的想法.为什么不呢?IDE可以 ...

  4. {初始c语言 }05年学生党编程小菜加入CSDN大家庭,还请各位多多指教。

    hello,大家好,我叫潘大庸 ,今年17,自学编程有20天了,通过某种机会,我发现CSDN这个大家庭!希望以后我也可以加入这个大家庭!和大家说一些本人的学习目标吧!本人还是学生党,所以希望在高中三年 ...

  5. 体验在线云编程,就来CSDN最新产品【云IDE】

    文章目录

  6. 2012年每周推荐阅读汇总

    2012年下半年,我开始了一项名为"每周推荐阅读"的计划,也就是每周给部门里的同事推荐些文章,拓展一下大家的阅读面,不知不觉已经年底了,因为每次的推荐阅读都不太有反馈,所以本打算在 ...

  7. 外刊IT网站经典计算机开发,评论,总结文章汇总共享

    全部文章 ·        2013年十二月 (19) ·        25: 辞掉你的工作,去开发一个应用:我的创业故事 (5) ·        24: 你是一个努力工作的程序员吗?还是一个懒惰 ...

  8. CSDN(编程的开始)

    1:自我介绍 我是一名来自大二的学生,家住在河南省周口市淮阳区,本科学习的工业设计专业.在大二不经意间接触到了编程,深深地被编程的趣味性打动了.自此,打算本科学习期间以及以后生活认真学习编程知识.CS ...

  9. CSDN编程挑战赛第六期—题解(另附:最长上升子序列分析题解)

    CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 (请不要删掉此地址) "路漫漫其修远兮,吾将上下而求索" 前言 笔者属于刚入 ...

  10. CSDN创始人蒋涛:开源吞噬世界,得开发者得天下

    7 月 15 日,由中国开源软件推进联盟(COPU)主办,赛迪传媒.<软件和集成电路>杂志社联合承办,CSDN 独家直播的 2020 第十五届"开源中国开源世界"高峰论 ...

最新文章

  1. 华为手机升级回退_华为鸿蒙OS 2.0手机开发者Beta版支持Mate 30/P40系列OTA升级
  2. Word中查找和替换功能详细介绍
  3. jquery 设置checkbox的checked属性 总是出问题
  4. c语言创建线程函数怎么使用方法,如何用C语言实现多线程
  5. 文本挖掘(part6)--共现矩阵
  6. 可疑文件_特制的ZIP文件能够绕过电子邮件安全网关
  7. CGContextAddLines和CGContextAddLineToPoint在线条半透明时候的区别
  8. 循序渐进 OSPF的详细剖析(四)
  9. mysql修改启动command_MySQL Command Line[mysql命令行常用命令]
  10. RMAN 总括 组成 配置 检测
  11. ORA-01045: user lacks CREATE SESSION privilege
  12. 让Excel窗口保持在所有窗口前面
  13. 推荐几款流行的开源报表工具
  14. 【Chrome扩展程序】利用 background 实现跨域 fetch 访问
  15. OBS Classic经典版已经不再支持
  16. “仅三天可见” 的朋友圈有方法破解啦!
  17. 删除桌面上文件,提示此文件位置不在当前位置?
  18. SLIC 简单线性迭代聚类
  19. 职业 行业 2 博客
  20. 键盘分类 红黑青茶轴

热门文章

  1. 如何恢复Mac上已删除的文件?
  2. 中国水稻大省创新大米销售模式 启动2019首场拍卖
  3. Who am I:最烧脑的社会工程学电影
  4. Part2--排序算法类模板
  5. JavaWeb之HTTP协议
  6. 利用Github探测发现特斯拉API请求漏洞
  7. 来我们公司面试必问的41道 SpringBoot 面试题,不看亏大了!
  8. 老板说,我请你来,不是叫你无脑拷贝的,竟然在线上搞出这么大的一个BUG......
  9. Spring Cloud 2020 年路线图
  10. IntelliJ IDEA 的项目配置和Web部署,终于搞懂了!