导读:bug和可恢复错误是两个不同的概念。

程序员花在bug上的大量时间,实际上都被浪费了。面对bug,我们应该采用的方法叫做“快速失败”(Fail-fast)。

有时候你可能会遇到“面向铁路的编程”:一旦你踏上失败的轨道,你几乎永远不会回头。

5月18日,2018全球软件与运维技术峰会(WOT)在北京举行,大数据(ID:hzdashuju)的小编应主办方邀请到现场围观。本次WOT的一大亮点就是请到了Bruce Eckel这位神级人物,他在现场发表了题为"Failing at Failing: How and Why We've Been Moving Away From Exception Handling"(我们为什么、又该怎样告别异常处理)的演讲,并与粉丝互动,随后又进行签名售书活动。

▲大神的签名真是萌萌哒

Bruce Eckel是MindView公司的总裁,该公司向客户提供软件咨询和培训。他是C++标准委员会拥有表决权的成员之一,拥有应用物理学学士和计算机工程硕士学位。从1984年至今,他已经发表了超过150篇计算机技术文章,出版了6本书。他的《C++编程思想》一本书在1995年被评为“最佳软件开发图书”,《Java编程思想》被评为1999年Java World“最受读者欢迎图书”,并且赢得了编辑首选图书奖。这两本书的英文影印版及中文版均已由机械工业出版社引进出版。

▲Bruce Eckel在WOT

在演讲中,Bruce Eckel提出,当前编程面临的三大挑战是编程语言的设计和影响、并发性以及错误的处理和报告。

编程语言设计以及它所造成的影响是第一个也是最重要的一个挑战,它关系到程序员的效率和生产力;关于并发性,他仍在不断学习、加强这方面的知识;而这次演讲的重点就放在错误的处理这方面。

而重点中的重点是,bug和可恢复错误是两个不同的概念。

Bruce Eckel表示,很多时候我们是无法从错误当中进行恢复的,大部分的错误都是不可恢复的,他们都是bug。程序员花在bug上的大量时间,实际上都被浪费了。所以我们要一定要区分开bug和可恢复错误,如果出现了bug我们是没有办法处理的,不要在bug上浪费时间。

bug使得我们的代码可读性更低,使得整个程序运行速度更慢,消耗掉了大量的资源。面对bug,我们应该采用的方法叫做“快速失败”(Fail-fast),我们不会使用任何的恢复机制。所有的这些问题都是不可恢复的,比如说错误的函数,或者是内存不够,我们就需要去放弃他们,而不是说写代码去绕过他们。

可恢复的错误呢?一般来说都是来自于程序外部的一些东西,比如I/O的问题、数据的问题。可恢复错误一般比例很小,其数量是要远低于10%的。

编程语言是否需要异常处理?它可能有用也可能没用。不同语言的处理方式和效果也各自不同。在这方面,Java其实是有漏洞的。

最后,Bruce Eckel谈到了一些未来的趋势,并对本次演讲进行了简单的总结,再次强调了放弃的哲学。有时候你可能会遇到“面向铁路的编程”:一旦你踏上失败的轨道,你几乎永远不会回头。

本文内容整理自Bruce Eckel在WOT的演讲稿及PPT。

关注“大数据”(ID:hzdashuju)并在后台回复bug,可下载完整版PPT

关注“大数据”(ID:hzdashuju)并在后台回复20,可参与寻找"黑皮书"活动,领取当当购书券

点击阅读原文,可查看&购买Bruce Eckel著作《Java编程思想》

推荐阅读

用《复联3》的豆瓣评分教会你正确使用条形图、饼图、漏斗模型

入门干货:从《权力的游戏》战斗场景中搞懂数据抽样和过滤

别被数据带进沟里:这才是应用数据的正确姿势!

大数据没用?!张小龙:我们很少看统计数据!

Q: 想想你有多少时间浪费在bug上了?

欢迎留言与大家分享

觉得不错,请把这篇文章分享给你的朋友

转载 / 投稿请联系:baiyu@hzbook.com

更多精彩,请在后台点击“历史文章”查看

点击阅读原文,了解更多

Bruce Eckel最新演讲:调bug就是浪费生命!放弃吧!(附完整PPT)相关推荐

  1. ICCV2017 | 一文详解GAN之父Ian Goodfellow 演讲《生成对抗网络的原理与应用》(附完整PPT)

    当地时间 10月 22 日到10月29日,两年一度的计算机视觉国际顶级会议 International Conference on Computer Vision(ICCV 2017)在意大利威尼斯开 ...

  2. Bruce Eckel:我最喜欢Python,Kotlin或将取代Java(附演讲全文+PPT)

    导读:Java很难再做出更多的改变了,那么它会被替代吗?它的替代者是谁? Bruce Eckel为什么最喜欢Python,Python究竟好在哪? Kotlin是怎样为程序员提高效率的? 大龄程序员应 ...

  3. 编程不适合12小时工作制,“我有灵感才工作” | 专访《Java编程思想》作者Bruce Eckel...

    整理 | 蔡芳芳 采访 | 王一鹏.蔡芳芳 本文转载自公众号infoQ 编者按: 如果你是一个 Java 开发者,那你想必读过或至少听过<Java 编程思想>(Thinking in Ja ...

  4. 豆瓣评分 9.3 的 Java 巨著 | Bruce Eckel 重讲 Java 的编程思想

    硅谷创业之父 Paul Graham 曾在<黑客与画家>中写道:"判断一种语言是否流行的条件是,一种免费的实现,一本相关的书籍,以及语言所依附的计算机系统." 当然,J ...

  5. 译者招募 | 《Java编程思想》作者Bruce Eckel新作On Java 8

    硅谷创业之父Paul Graham曾在<黑客与画家>中写道,"判断一种语言是否流行的条件是,一种免费的实现,一本相关书籍,以及语言所依附的计算机系统." 当然,Java ...

  6. 为什么我会弃Java,选择了Kotlin——专访《Java编程思想》作者 Bruce Eckel

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 多少语言就是死在了取代Java的路上 Java:我活着的意义就是天天被取代 Java:我也不 ...

  7. Java:进化的尽头 by Bruce Eckel 以及Thinking in Java 5th edition 《On Java 8》

    在读Java编程思想之前,上网搜了一下Bruce Eckel的信息,发现了这篇文章和Java编程思想(4th edition)的课后题,仅做参考吧,CSDN上可下载.随后跟踪到了Bruce Eckel ...

  8. Java 之父:找Bug最浪费时间,现在不是开源的黄金时代,程序员如何自我学习和成长

    1996年1月,Sun公司发布了Java的第一个开发工具包: 1997年2月,JDK 1.1面世: 1998年12月8日,第二代Java平台的企业版J2EE发布: 2000年5月,JDK1.3.JDK ...

  9. Yann Lecun最新演讲:机器怎样进行有效学习?

    作者:岑大师 来源:AI科技评论 本文长度为3200字,建议阅读7分钟 本文为你分享Yann Lecun关于利用对抗网络进行无监督学习的研究. 本文为Yann Lecun在CoRL 2017大会上做的 ...

最新文章

  1. Let's do our own full blown HTTP server with Netty--转载
  2. 百度视频携手神策数据,引领基于 AI 的短视频推荐技术新潮流
  3. 【数据竞赛】Kaggle实战之单类别变量特征工程总结!
  4. 很少有人能把CDN说的这么有趣了
  5. 联想a850 android 5.0 lollipop,手机资讯导报:全新纯净款MotoX运行Android5.0Lollipop视频曝光...
  6. angular之性能优化
  7. Weblogic负载均衡/Session复制之集群架构续
  8. Scanner和BufferedReader从控制台读取输入数据
  9. 张季跃 201771010139《面向对象程序设计(java)》第十三周学习总结
  10. 【基础】深入浅出神经网络基础
  11. 在SQL Server中对视图进行增删改
  12. DevOps使用教程 华为云(5)迭代计划 进度管理
  13. cad立体图怎么旋转看图_教大家CAD迷你看图如何旋转图纸
  14. 2021年信息学部物联网工程学院学生科协第一次Office大培训
  15. java的图标及由来
  16. 腾讯撕开中国NFT的“遮羞布”
  17. MySQL Workbench建表时的PK,NN,UQ,B,UN,ZF,AI,G
  18. java excel文件损坏_SpringBoot下载Excel文件,解决文件损坏问题(示例代码)
  19. vue 重写element input限制字数
  20. Android系统中如何得到各种格式的文件正文(office文件,PDF,邮件,html,zip等)

热门文章

  1. HTML期末大作业-小米商城
  2. Cookiecutter
  3. 如何测试web服务器性能,如何执行Web服务器性能基准测试?
  4. ciaodvd数据集的简单介绍_COCO数据集的简单介绍
  5. 注意html的语言编码charset,HTML编码
  6. raid ahci模式哪个好_比群晖好用?威联通TR-004磁盘阵列外接盒使用详解
  7. php 加载redise_php环境篇:redis服务编译安装
  8. 高频面试题1:自增边量
  9. Loadrunner 接口测试的两种方法
  10. 计组之数据运算:8、c语言之强制类型转化、数据的存储与排序(大小端、字节对齐)