Maison > Article > développement back-end > 关于程序员:无BUG不生活
我决定谈一谈世界上最著名的虫子:BUG !
BUG 困扰了一代又代的程序员,不论是杰出的计算机科学家,还是像 Linus Torvalds(Linux内核创始人) 、Bill Joy(传说三天写出BSD的前身,vi和csh的作者)等神一样的传说,抑或你我芸芸程序猿,都是 BUG 骚扰的对象。 BUG 是绝对狂热的好战分子,具有永不停歇的战斗欲望,它潜伏在程序员的周围,一双小眼贼亮贼亮,在你百密一疏时出其不意一击奏效。而无论你是钢筋铁骨,还是羊脂玉体,只要被这只虫子袭击(看过《木乃伊》的话,对圣甲虫一定印象深刻),就得褪上三层皮,更有甚者,很可能锒铛入狱、命丧黄泉或者烟消玉损。
软件界致命的BUG事件
其实,BUG造成的悲剧天天都在上演,这里我们先举几个比较著名的例子。
作为程序员,我认为开发 ATM 机的公司应当负有责任,他们应当赔偿客户(即银行)的损失,是他们的软件 BUG 导致了这个案件。但在银行这种强力机构面前,个人的声音微不足道,很难把两者放在同一个天平上来考量。这中间到底有着怎样的曲折,时过境迁,我们已无法考量。但是,作为程序猿,我们还是得引起警惕啊,很多时候, BUG 会带来直接的经济损失和严重的法律后果。虽然你可以辩称技术无罪,但子不杀伯仁,伯仁因你而死。
锤子手机预约数闹剧
2014 年国庆假期期间,锤子手机 4G 版现身天猫商城页面显示该机预计将在 10 月 18 日正式开卖,售价为3500 元。据说备货量为 10000 台。据说很快天猫商城页面显示预约人数超过 8 万。
后来,有网友爆料称从页面源代码中发现 4G 版锤子手机的预约人数有水分,页面显示的数字是实际预约人数的三倍,从而再度把锤子手机推到了风口浪尖上。
后来,天猫对这一事件做出了正面回应。天猫表示,截至 10 月 7 日,锤子手机 4G 版的预约用户数为 62682 人,但在 10 月 8 日,系统调用一个数据端口时,意外将前端该页面动态数据显示“清零”。
为了尽可能让预约数据还原真实,天猫决定将 10月 8 日起的新预约数,做了“乘以三”的处理,以便后期预约数能快速接近真实数据……
……
注意我标红的文字,如果天猫的回应符合实际情况,那么,其实,这是一个 BUG !
真不够老罗忙活的啊。老罗10月19日在微博上正式回应:预定数据造假的事,跟我们没有一丝一毫的关系,我们在这件事中扮演的唯一角色,就是躺枪。
这是要上演罗生门的节奏吗?亲们。
对于此事,我不能不感慨:不怕神一样的对手,就怕猪一样的队友……不怕猪一样的队友,就怕神一样的网友——据说这个造假的BUG是因为某个测试人员发现预约数总是3的倍数而发现的。
苹果 iOS 8.0.1 更新撤销
苹果,神坛上的苹果,以极致用户体验而载誉江湖的苹果,也因为 BUG 而被钉在了耻辱柱上:
(2014年)9月25日消息:苹果在今天早些时候发布了iOS8.0.1 更新,目的是决解当前版本中的多处 Bug ,但是没想到的是更新补丁带来了更多的 Bug ,最终苹果撤回了该次升级。
据了解,本次受到影响的主要是 iPhone 6、 iPhone 6 Plus 这两款最新的设备,后果是只能接受移动网络无信号,而且 TouchID 也不能用了。因此建议还没有升级的用户还是不要升级了,而已经悲剧了的用户目前只能等待苹果推出修复补丁。
……
有人说这是乔布斯不在的后遗症……真不知道这帮人为什么总是把乔布斯拿出来说事儿!其实,这就是一次软件 BUG ,从程序猿的角度来看,这他娘再正常不过了,和乔布斯有一毛钱关系吗!
再说了,这事儿又不是单单苹果一家才有,你看人家微软,根本都不当一回事儿,补丁一个一个一个一个又一个的发,堵的就是漏洞,改的就是 BUG ,这都是那帮程序猿惹的祸,与天上的月亮没有关系。
心脏滴血漏洞
2014年4月9日,Heartbleed(意为“心脏出血”)的重大安全漏洞被曝光,一位安全行业人士在知乎上透露,他在某著名电商网站上用这个漏洞尝试读取数据,在读取200次后,获得了40多个用户名、7个密码,用这些密码,他成功地登录了该网站。
……
Heartbleed 漏洞,这项严重缺陷(CVE-2014-0160)的产生是由于未能在 memcpy() 调用受害用户输入内容作为长度参数之前正确进行边界检查。攻击者可以追踪OpenSSL 所分配的 64KB 缓存、将超出必要范围的字节信息复制到缓存当中再返回缓存内容,这样一来受害者的内存内容就会以每次 64KB 的速度进行泄露。
OpenSSL ,著名吧,开源吧,安全吧,它支撑的互联网站点就像天上的星星一样,数都数不过来。就这么一个知名、开源、强大的密码库,一样有 Bug 。
BUG 无处不在!
BUG 对程序猿的追逐,对软件的痴迷,比现在的死忠粉还要厉害,那简直是上穷碧落下黄泉,不论你在哪里,上天入地,我都会与你在一起,不离、亦不弃。
无BUG不生活
计算机先驱 Maurice Wikes 回忆起 1949 年他在英国剑桥工作的情形,在拖着打孔纸带上楼给雏形计算机 EDASC 装载程序时,他看到了自己的未来:
我强烈的意识到,生命中剩下的好日子,都将耗费在给自己的程序找错误上头。
Bug的定义
Bug一词的英文原意是“臭虫”或“虫子”。但对程序员来讲,Bug意味着错误、缺陷、问题、漏洞、未按需求实现、不符合需求预期或延伸等等等……那么,Bug究竟是什么呢?
我媳妇是搞测试的,软件测试这块最著名的一本书就叫做《Software Testing(软件测试)》,它里面是这么描述BUG的:
The software doesn’t dosomething that the product specification says it should do.
The software does somethingthat the product specification says it shouldn’t do.
The software does somethingthat the product specification doesn’t mention.
The software doesn’t dosomething that the product specification doesn’t mention but should.
The software is difficult tounderstand, hard to use, slow, or in the software tester’s eyes will be viewedby the end user as just plain not right.
作为开发人员,当然要看得懂E文了……
其实还有一个粗暴点儿的说法:BUG就是错误。
Bug是怎么来的
《圣经》中有“义人”这个说法,我们有“人无完人,金无足赤”的说法……
人是妈妈生出来的(女娲造人时除外)——你看我总是加各种说明以便堵住漏洞,这样写文章真是很累……这实在是和我的开发习惯有关:我总是习惯防御性编程,预先考虑各种错误,在编码期间就努力消除它们发生的条件……
我们说,人是人他妈生的,妖是妖他妈生的,而软件是程序员生的。
爸爸妈妈在备孕时,很多爸爸会戒烟戒酒戒加班,所谓封山育林也。妈妈会补叶酸测排卵期计算最佳受孕时间……总之一句话,优生优育。可是,孩子出生后依然会有毛病,随着孩子长大,各种毛病都会显现出来。有的孩子有先天缺陷,比如原发性高血压、先天性心脏病、兔唇、痴呆、智障……有的孩子长着长着有毛病了,近视、斜视、小儿麻痹、跛脚、自闭症……作为父母,这都是我们很难接受的事实,可是必须面对和接受。
软件是程序员的孩子,在生它之前,你可曾封山育林、可曾熟悉自己的生理周期?哇哈哈哈哈,太扯淡了不是!包不同(《天龙八部》中慕容复四大家臣之一,非常有趣)摇摇头说,非也非也。然也!开发软件其实也要经历这些过程,更重要的是,我们一定要意识到:
程序员在生产软件,也在生产BUG!
再牛逼的程序员,写出来的软件也有BUG。BUG就是软件与生俱来、不可脱逃的好基友,就在那场说走就走的旅行的一开始,它们就情根深种难分难舍了……
So,Bug是程序员写出来的……
不管你愿不愿意承认,事实就是这么令人沮丧。连MauriceWikes都承认了这一点,你就别倔犟了吧亲。
免费领取LAMP兄弟连原创PHP视频教程光盘/《细说PHP》精要版,详情咨询官网客服:http://www.lampbrother.net
http://yun.itxdl.cn/online/cto/index.php?u=5 这,是一个牛X的课程 CTO课程
http://yun.itxdl.cn/online/server/index.php?u=5 移动互联网服务器端开发课程
http://yun.itxdl.cn/online/weixin/index.php?u=5 微信开发课程
http://yun.itxdl.cn/online/yingxiao/index.php?u=5微营销课程
http://yun.itxdl.cn/online/phpcms/index.php?u=5phpcms二次开发课程
|