说到近年来微软大力主推的Windows 10在多次升级事故之后被大家调侃为了Windows BUG 10,而且每每升级失败都有可能导致用户的计算机变板砖,这在以前的Windows版本中可是不多见的。其实早在比尔盖茨还是CEO的时候就发誓要打造一款没有任何Bug的完美的操作系统,可是时至今日Windows非但没有更完美反而Bug越来越严重了,这就让我们疑虑了,像微软这样的软件公司尚且不能干掉Bug,那么其他公司呢?是不是没有办法开发出一套完美的软件呢?
从数学定义上是可以开发出没有Bug的软件的,这也就是函数式编程语言出现的原因,计算机科学家试图用数学的思维了创造一个没有Bug的完美软件。可是他们忽略了一点,就算式软件是完美的,但是软件的运行环境和使用的对象不一定是完美的。程序员在编写软件的时候,是按照最理想的情况去编写的,光光是要实现核心功能恐怕已经是费了九牛二虎之力了,哪里还有多余的精力来说处理那些意外的情况呢?比如说HTTP协议吧,当初制定标准的时候是为了在科研领域交流文件使用的,大家都是有头有脸的科学家或者工程师,所以在制定HTTP协议的时候就没有考虑到安全问题,所有的数据都是明文传输,也就是你看到的内容是什么,传输的数据就是什么,中间截获数据后都不需要破解就能知道你的用户名和密码了;可是放到商业环境中HTTP的保密性就太低了,在购买商品支付的时候,没有加密的数据可以轻易的出卖了你,你的支付宝账号密码,你的银行卡密码都能轻而易举的获得,因此又开发出了HTTPS协议,在HTTP协议基础上加上了数据加密层,这样一来就保护了传输的数据外泄了。
软件开发也是如此,软件工程师在设计之初都是按照最理想的状况来设计软件架构,比如软件将会跑在稳定的硬件设备上,CPU至少是4核,内存至少是8GB的,操作系统除了我这个软件没有其他任何软件运行,硬件设备有一个24小时吹空调的环境,然后用户是一名至少本科学历智商在120以上的聪明人,除了按照软件的说明书操作外不做其他任何多余的操作,电力供电也是24小时充足供给,周围没有强大的电磁辐射,甚至连佛祖都会降下庇佑保护正常运行;好吧,现实中这样的理想环境实在是不可能实现,那么意外也就会接踵而至,用户可能把软件安装在一台淘汰的二手电脑上,这台电脑内存可能1GB也不到,操作系统还是过时的Windows 2000,别说是空调了,连电风扇都没有,唯一可以安慰的是可以保证这台电脑24小时供电,而用户是一名小学还没有毕业不会拼音的中老年妇女,更没有佛祖在那里给予庇佑。种现实环境与理想的开发环境形成了巨大的落差,Bug自然在所难免,什么内存报不够啦,用户不小心设置了错误的参数啦,等等小问题都会导致软件奔溃。
那么说完了理想开发环境所带来的Bug之外,再来看看编写代码的码农吧,现在想做程序员并不需要有多高的学历,只要肯学习任何人都可以当程序员,日本还有一位80多岁的老奶奶自学程序开发呢。所以在软件开发行业程序员的水平就会显得参差不齐,而一名有经验的程序员可以抵十名普通程序员,可是软件公司宁可要刚毕业的大学生,也不要有经验的“老”程序员,因为大学生工资便宜啊,这样就导致大量水平不够的程序员进入了软件开发领域,由于缺乏开发的经验,对于潜在的问题就会考虑的不够周密,自然就为Bug的发生预置好了温床,只要条件满足自然就会爆发Bug。
所以软件的Bug归根结底有两条,第一条就是实际的应用环境千变万化,而开发时候是选择了最稳妥的环境,因此在实际环境中自然不可避免的会发生意料之外的Bug。而第二条就是程序员缺乏经验,一些常见的意外没有碰到过所以也就没有做响应的处理,从而产生了Bug。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.