这问题问的~
本身编程就是一个非常费脑力的活,你想达到一个目的,你用编程一步一步的去实现它,这本身就是一件不容易的事情,在实现这个目标的时候你要考虑很多事情,但是限于脑力的能力,你肯定还会有许多方面没想到,而等到测试的时候或用户使用的时候才会被发现因为当初没想到而存在了Bug;
人脑的脑力是有限的,同时人脑也会犯错的;
有的时候是因为懒。你有一个目标,一个令人兴奋的想法,你想尽办法奔向目标,在这个过程中是邻人兴奋的,你达到这个目标后就泄劲儿了,那些细枝末节的东西等着以后再去实现吧;
有的时候是迫不得已。这么讲吧,可能数学比较好的同学都有过这么样的经历:有道数学题你怎么想也想不到思路,那你剩下的作业就不做了吗?当然不,先做别的题目吧。在实现某个大的应用时,有些不影响全局的某个小功能一时没有很好的解决思路,可能会先放在那里,或者用一种比较笨的办法去解决它。等到哪天灵机一动就有解决方案了;
如果你有过PS照片的经历,第二次、第三次修同一张,你会修的更好。你看着你的代码运行,有一天你又来了灵感,或者你看到了别人的实现方式受到了启发,难免会试着再改写一下。
简单回答:因为编写程序的人会犯错,而且机器没法和人一样在出现异常时随机应变,所以需要程序员不断改Bug,弥补自己失误的同时,教机器应对各种异常情况;很多时候,异常情况是没法一次性穷举的,所以才会有bug出现。
举例来说,你叫个滴滴去火车站:原始要求,来辆车,送我去火车站。
人类师傅会根据路况帮你线路,会应对你的各种合理要求(比如顺路带个人),会应对路上看到突发情况……一切自然天成。
如果是自动驾驶车,最初的程序肯定是地图算点一直线过去,后面发现被堵了,就会加入根据路况选择的功能;遇到有乘客想半途绕路捎人,又得加入重新规划路线、增加途径点的代码;基本驾驶方面,路况千千万万,比如你看见左前方车的雨刷动了,你知道要观察是不是有逗比要变道了,但开发程序的人根本不可能想到这种奇葩的情况……
所以,程序员只能通过积累经验,尽可能把所有的情况都考虑到,写出更多的代码,才能让程序看起来更靠谱。另一方面,言多必失。大作家都有可能写错别字,程序员写几千行代码犯点小错再正常不过。这就是低级错误的bug和考虑不周带来的bug。
另一方面,就算程序没问题,外部因素也可能导致一些bug出现。比如旧数据有问题,可能导致帐算不出来报bug,你不让程序员去debug你根本不知道几万条数据里面有七八条错误数据,算不出来是正常情况。你4G/wifi刷头条秒出,但用3g或者烂手机的人加载了小半天,你才会去加个loading提示。
最后,总有产品经理要做个大功能,搞一些不合理的需求。这好比你让60岁大爷5小时跑完马拉松,不出问题就有鬼了;有时需求方自己都没想清楚你觉得做出来的东西能没问题吗?
写程序就像你拜托一个一根筋不会思考的人办事,少说一句省略一个字就可能出问题;区别在于,你得让他把这事办一万遍不出事。一次性写好根本不现实。
先是程序员的问题。一个完美的程序,需要程序猿的精心设计,全面把握,对所写程序的逻辑了如指掌,这是个很好的要求。毕竟某个行业的专家都不一定能把事物逻辑描述的滴水不漏,更何况学程序出身的程序猿呢?因此人的问题是不可避免的。
小编是一个有着6年工作经验的工程师,关于C++,编程,自己有做材料的整合,一个完整的C++编程学习路线,学习资料和工具,能够进我的群7253,-91790收取,免费送给大家,希望你也能凭着自己的努力,成为下一个优秀的程序员
其次就是黑客的问题,黑客本身都是编程高手,因此他们很容易找到别的程序猿留下的漏洞。程序员和黑客既是好基友,又是死对头,相亲相爱,此消彼长。
个人感觉有些bug也是程序的一部分。如果说bug纯粹是坏的不要的,那程序员也不能完全根除它,像微软的操作系统,有哪个版本没bug,没有补丁。bug就像程序猿的经验值,你解决的越多你的技术就越好。bug就像最烦恼的快乐,因为每解决一个它你的眼角就会流露出一时喜悦。bug就像你最不想见到的人,可总是见到!在此祝愿每个程序猿,多劳多得,快乐每一天!
这句话就和学生时代老师常说的,“能不能把试卷一次性都做对吗?非得留些错误”一样。
反问学生,大多都是思考不周,或者知识点不熟,以及解题技巧方面的问题。问之程序员,也是一样的,场景思考不周,架构设计不良,语言运用不熟等等都会导致bug的产生。
把事情一次性做对确实是很有必要的,谁也不想没事给自己挖几个坑,但这需要有缜密的思维了,而我相信,这个世界还是粗心的人多点。
网友评论