Reload Original PagePrint PageEmail Page

图灵社区 : 阅读 : Rob Pike谈“我收到的最佳编程建议”

Rob Pike现在是Google的杰出工程师,曾是贝尔实验室(Bell Labs)Unix团队成员之一,此外他还参与开发了Plan 9Inferno两款分布式操作系统。他是创建Go及Limbo两款编程语言的中流砥柱。Rob分享了在贝尔实验室工作时的一段往事,从此改变了他的调试方法。

姓名:

Rob Pike

Rob Pike Avatar

工作经验:

我曾在贝尔实验室(Bell Labs)工作多年。我就职于计算科学研究中心,正是该(规模小得惊人的)实验室创建了Unix,不过直到Unix第7版发布(1979年)以后我都不在那里。自2002年以来,我一直在Google,从事与各种零散的基础设施、以及基础设施之基础设施相关的工作。

最显着的成就:

在我的著作中,或许最为人所知的就是与Brian Kernighan合著的《UNIX编程环境》(The Unix Programming Environment,于1983年11月01日出版,至今将近30年了仍在重印)、以及《程序设计实践》(The Practice of Programming)。我做过的应用最为广泛的成果就是与Ken Thompson一起研发的UTF-8编码。不过我在以下方面也完成了重要工作:计算机图形学、操作系统、软件工具,并在最近帮助研发了Go编程语言

最常用的编程语言:

由于使用了太久,在这里不得不承认C语言是我最常用的编程语言,不过在我的职业生涯中我曾使用过许多不同的语言。如今,几乎我所编写的一切都是用Go语言完成的;Go语言是我使用过的最具生产力的语言,而且它已经彻底取代了C语言在我工具箱中的位置。

建议:

那是在我加入该实验室一两年后,当时我正在与Ken Thompson结对编程开发一款即时编译器,该编译器用于一种由Gerard Holzmann设计的小的交互式图形语言。由于我打字速度更快,因此当我们编程时,由我执掌键盘,而Ken则站在我的背后。当我们紧张工作时,一旦哪里出了问题通常都是看得见的——毕竟那是一种图形语言。每当某些地方出错时,我会本能地开始探究那个问题,如检查堆栈跟踪、添加打印语句、调用调试器等等。不过Ken却只是站在那里思考,无视我以及我们刚刚写下的那些代码。经过一段时间,我注意到一种模式:Ken经常会先于我理解问题所在,还会突然宣布,“我知道是什么错了。”他一般都是正确的。我意识到,Ken为那些代码构建了心智模型,一旦哪里出了问题必定是该模型中出现了错误。通过思考怎样有可能发生那个问题,他会凭直觉知道此模型在哪里出了错,或是我们的代码在哪里必定没有满足此模型。

Ken Thompson Avatar

Ken Thompson

Ken教导我,调试前的思考十分重要(thinking before debugging is extremely important)。要是你一头钻进错误,你就会倾向于修复位于代码中的片面问题,但是如果你首先琢磨该错误,考虑该错误是怎么来的,你通常会发现并修正代码中更高层次的问题,那将会改善设计并防止进一步的错误发生。

我承认这很大程度上是风格问题。有些人坚持以逐行工具驱动的调试方法来处理一切错误。但是,现在我相信,思考——不看代码——是最好的调试工具,因为它会导致更好的软件。


查看英文原文:"The Best Programming Advice I Ever Got" with Rob Pike

来自更多程序员的建议参见“我收到的最佳编程建议”(The Best Programming Advice I Ever Got)系列文章

“我收到的最佳编程建议”系列译文

  1. 千万别碰其他人的代码!——Russ Olsen
  2. 在你让代码可重用之前,应该先让代码可用。——Bill Wagner
  3. 在着手对代码进行额外修改之前,应该花点儿时间去理解位于异常/堆栈跟踪顶部的错误消息。——Obie Fernandez
  4. 调试前的思考十分重要——Rob Pike
  5. 翻译中……
  6. ::...
    免责声明:
    当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
    内容版权归原作者所有;
    本人对内容的有效性/合法性不承担任何强制性责任.
    若有不妥, 欢迎评注提醒:

    或是邮件反馈可也:
    askdama[AT]googlegroups.com


    点击注册~> 获得 100$ 体验券: DigitalOcean Referral Badge

    订阅 substack 体验古早写作:


    关注公众号, 持续获得相关各种嗯哼:
    zoomquiet


    自怼圈/年度番新

    DU22.4
    关于 ~ DebugUself with DAMA ;-)
    粤ICP备18025058号-1
    公安备案号: 44049002000656 ...::