您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
为什么程序员写出的程序都有bug?对此你怎么看?
程序员,程序,代码为什么程序员写出的程序都有bug?对此你怎么看?
发布时间:2020-12-06加入收藏来源:互联网点击:
目前在中国IT公司,讲求的是开发速度,需求变化非常快,很多开发人员没有时间进行单元测试、也不会留有太多时间构思,大部分是代码复制,这样就导致了BUG大量发生。在国内团队里还是管理人员有话语权,技术人员大多在执行,如果管理者懂技术还好点,对编程规范比较在意。最主要的是优秀的程序员少,缺乏设计能力、对技术不感兴趣,这个行业目前流动性比较大,很难形成一个优秀的开发团队。
回答于 2019-09-11 08:43:50
我是码农科普君,我来回答。
这个问题看起来是我们日常经常碰到的问题,实际上背后有很深的理论原理。跟这个问题直接相关的定理叫莱斯定理(Rice's theorem),而莱斯定理是从图灵停机问题引申推导出来的。
图灵停机问题停机问题是这么描述的:
是否存在一个过程(算法):该过程(算法)以一个计算机程序以及该程序的一个输入作为输入,并判断该过程(算法)在给定的输入上,在有限的步骤内是否会结束(停止)
图灵在1936年用我们众所周知的“反证法”证明这样的一个过程(算法)不存在。
首先假定这样的过程(算法)存在,那么设计这样一个停机图灵机,即根据输入,在有限步骤内停机时,输出Yes,否则输出No。如下图:
然后,再设计第二台图灵机,用来检测第一台停机图灵机。第二台图灵机工作原理是如果检测到第一台停机图灵机停止了,则第二台进入无限死循环;如果检测到第一台停机图灵机不停机,则第二台图灵机会停机,并输出结果“不停机”。
如下图:
现在,脑筋急转弯的问题来了。如果第二台图灵机检测它自己是否停机呢?如果它检测到自己停机,根据设计它应该进入无限死循环;如果检测到它自己不停机,根据设计它要停机,并输出“不停机”。
这显然逻辑上是不可能的。也因此证明停机问题是不可判定的——我们无法判断程序是否会结束(停止)。
莱斯定理(Rice's theorem)莱斯定理的内容是对于图灵机使用的特定语言,我们无法判定它是否具有非平凡性。这句话放到编程语言上就是说要想写出完美调试其他程序的计算机程序,是不可能做到的事情,也就是说我们无法避免软件出现Bug。
综上,Bug是永远修不完的。Bug的多少,体现了程序员水平的高低。
回答于 2019-09-11 08:43:50
正常现象,业界一句话,好程序是调出来的
回答于 2019-09-11 08:43:50
程序员与Bugs就像寄生关系,成也Bugs,败也Bugs。虽然Bugs是程序员产生的,但不得不说程序员在很大程度上是依赖Bugs而生存的。
No Bugs No Job, No Bugs No Money!
程序员写出的程序都没有Bugs意味着什么?测试人员可以下岗了,没有Bugs还测试个什么;客服也可以下岗了,不需要处理用户APP程序出乱子和体验感差的问题。长此以往,一部分程序员也得被迫下岗了,没有大工程的Bugs纰漏,难道每天坐在办公室打酱油,或是不停地增加App功能了。如此下来,产品经理还不得忙死,成天活在脑力风暴里。
在一个项目组里,每个人都很讨厌Bugs,它们让程序员通宵加班,或是延误项目上线时间,或是被同事嘲笑技术菜,或是被领导批评,更严重的是导致公司项目亏损,直接被老板辞退。
被众人讨厌的Bugs时刻在人们面前大秀存在感,一方面它们提醒着我们程序员还存在着可提升的空间,另一方面也是我们程序员日常的工作内容所在。
智者千虑必有一失,更何况程序员,写写Bugs埋个坑,不仅可以给同事一个展示自我技术水平的机会,还维持程序员岗位处于时刻有事做而非无所事事的状态。
作为一名合格的程序员,我们应该用理性的眼光来看待自己或者他人的Bugs,Bugs既是麻烦,也是机遇。Bugs不仅能够辅助我们历练技术水平,还能给我们带来成就感,有时候攻克一个Bug不必吃一顿大餐的体验差
回答于 2019-09-11 08:43:50
这就跟你文章写得再好也有可能有错别字,也有可能有逻辑错误。一样的。
回答于 2019-09-11 08:43:50
人都无完人,何况靠人编写的程序~
上一篇:5G即将来临,现在市场上的4G手机怎么办?到时候买4G手机会很便宜吗?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |