程序员为什么要一直改bug,不能一次性写好吗?
网上有一个流传的传说:别人编译运行代码是为了检查有没有bug,Jeff Dean(谷歌AI部门的负责人)是为了检查编译器有没有bug。
当然这只是传说,没有验证。
程序员为什么要一直改bug?
bug为什么叫bug?
其实第一次记载的bug还真的不是程序员写出来的。
那是一次在程序员在为计算机做测试的时候,突然发现计算机停止工作,检查后发现原来是因为一只虫子(英文是bug)爬进了计算机,导致计算机继电器出错进而让计算机停止了工作,因此计算机错误从此被称为bug。
不只是程序员要改bug会犯错是人类的天性,因为人类不是完全精密的仪器,记忆会错乱,身体控制达不到100%,认识也无法做到全知,所以程序员会写出bug,播音员会念错字,作家会写错字,我们会记错人名。
而且bug也不一定全是坏事,这一点在科学界尤其如此,因为科学本身就是一个不断试错的过程。
比如拯救了无数生命的青霉素的诞生,也是在研究过程中失误才发现的。
也有故意制造bug的。
比如我有一次使用一个第三方库连接服务器,但是后面发现这个库在连接因为某些问题中断后重新连接却连接不上,这时候要换库会很麻烦,所以我写了一个bug,在连接中断的时候崩溃整个服务然后重启,这样就可以连上了。
bug都有哪些种类我来列举一些bug的种类:逻辑性bug:这种bug通常是程序员思考的不够缜密和全面导致的。
代码相容性bug:通常一个程序不是由一个程序员完成的,多个程序员写的代码之间可能会因为某些意识和理解不同导致bug发生。
性能导致的bug:程序写出来后可能会在不同的设备上运行,在某些性能差的设备上可能因为性能不够导致程序出现bug。
环境性bug:不同的环境也会导致bug的产生,比如早期卫星上的程序很多出现bug的原因是因为太空辐射不一样,使得硬件受到影响,进而导致程序运行得到的结果和预期不同而出现bug。
所以说,程序员很难一次性写出没有bug的程序。
但是我们程序员也不因此就对bug包容了,虽然不能保证没有bug,但是我们应该对自己有要求,对bug零容忍~