当前位置: 首页 > news >正文

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

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

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

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

5月18日,2018全球软件与运维技术峰会(WOT)在北京举行。本次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:hzbook_jsj)

并在后台回复bug,可下载完整版PPT

关注“华章计算机”(ID:hzbook_jsj)

并在后台回复20,可参与寻找"黑皮书"活动,领取当当购书券

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

相关文章:

  • Bruce Eckel 中国行之京东技术公开课
  • 如何成为一个优秀的数据从业者?
  • 不止V神,全球最懂以太坊的人都来齐了,还差你
  • 这是第一部中国人写的关于RxJS的书
  • 只有真正的程序员看得懂的16个幽默
  • 这里有你最想掌握的区块链技术
  • 百度吹过的牛将要实现,你的AI梦呢?
  • 升级转型“三新战略”之新制造
  • 会议邀请〡第六届全国高校电子信息类课程教学研讨会邀请函
  • 福利丨好书申请免费送【7.27】
  • 大数据不背“杀熟”的锅!高科技公司掌握了你的个人信息,都干了些啥?
  • 我们需要什么样的区块链
  • 中国 Python 开发者大会 PyCon China 2018
  • 【深度】Python程序员经常踩得那些坑(1)
  • 【活动】《机·智:从数字化车间走向智能制造》读者沙龙
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • javascript从右向左截取指定位数字符的3种方法
  • Javascript设计模式学习之Observer(观察者)模式
  • js面向对象
  • supervisor 永不挂掉的进程 安装以及使用
  • 编写高质量JavaScript代码之并发
  • 浮动相关
  • 规范化安全开发 KOA 手脚架
  • 警报:线上事故之CountDownLatch的威力
  • 你真的知道 == 和 equals 的区别吗?
  • 盘点那些不知名却常用的 Git 操作
  • 微信小程序设置上一页数据
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 译自由幺半群
  • 用Python写一份独特的元宵节祝福
  • 用简单代码看卷积组块发展
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 选择阿里云数据库HBase版十大理由
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​什么是bug?bug的源头在哪里?
  • #控制台大学课堂点名问题_课堂随机点名
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (万字长文)Spring的核心知识尽揽其中
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • ***原理与防范
  • .Mobi域名介绍
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net wcf memory gates checking failed
  • .Net 高效开发之不可错过的实用工具
  • .NET构架之我见
  • ::什么意思
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [.NET]桃源网络硬盘 v7.4
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [C++]——带你学习类和对象