作为计算机专业的从业人员,大家都知道计算机这个东西是绝对逻辑性的,压根不存在含糊不清的概念,是什么就是什么,一些操作指令界限明确,功能清晰,绝不存在任何歧义,不像写文章一样,你即使有一个错别字也不影响读者阅读,而计算机就大不一样了,所有代码中,只要一个字母写错就会导致程序无法运行。
想必上面的观点大家都是认可的,对吧,照上面的逻辑来说,在编程行业充满了理性,什么事情都是需要有着精密的逻辑才行,不过据我观察,这么理性的一个行业,在一些错综复杂的情况下,有时反而倒出现了一些“玄学”的色彩,比如某工程师什么代码也没动,整个月系统运行都非常正常,系统突然就出现奇怪的bug, 或者说每次上线前在测试环境都好好的,一到线上环境却出现了各种问题,为此有的同学还在上线前祈祷程序正常运行,本来是一个很理性的世界却被搞的这样具有“神秘”色彩了。
近期一名程序员网友就描述了一个比较玄乎的现象,他说花了一上午冥思苦想各种搜素找资料,即便如此程序的bug也没有改好,就在他吃饭的时候,凭感觉拨弄了几行代码之后,程序就被神奇地改好了。根据这样的描述,感觉他这个bug修复的好没有成就感啊,就是糊里糊涂好的,怎么好的起码需要有一个正儿八经的原因吧,他这个就这样稀里糊涂的修复了一个bug,还整的不明不白的修好,就这样的代码还敢上线吗?这样真说不好上线后有没有其他问题产生啊,针对这样的情况,让我们一起看看其他网友们都是怎么评价的吧!
网友一:一个bug莫名其妙消失,往往都意味着数个bug会随时莫名其妙冒出来。
上世是朵花:根据日常的生活经验,我认为这名同学并非胡说,有时的确是这样的。
网友二:有时是的。调不好,去溜达一圈就行了
上世是朵花:嗯,的确是这种现象,不过我建议遇到这种情况要细细追究一下,看看到底是怎么好了,如果不好好研究一下,以后还会出现类似奇怪的问题,如果把弄懂真相了,也许对以后是有好处的。
网友三:什么神仙操作?
上世是朵花:这操作也的确挺神的,随便拨弄两下就好了。
网友四:昨天调了一下午的一个编译问题,删除所有依赖后又重新添加就消失了,仿佛从来没出现过一样
上世是朵花:牵涉到一些深层的问题,表象看起来是很奇怪,其实背后都是有原因的,就像平时我们电脑出问题的时候,重启一下就好了,我们什么也没做,系统源码也没改过,这往往是一些资源计算中出现的问题,而重启一下就是释放资源,所有配置初始化一下,等计算到某个点后还是有可能触发这种情况。
网友五:那应该只是暂时掩盖住了没触发,因为你并没找到原因。
上世是朵花:同意这种说法,很有这种可能。
网友六:有时候是这样,在你频繁修复代码的时候,实际上可能已经改对了,但发布调试仍然显示不对!漫长的绝望之后,突然它就好了,一脸懵逼
上世是朵花:很形象,现实情况中的确会有这样现象发生,不过相信每次现象背后肯定是对应有相应的原因。
网友七:正常的很,我也有过好几次,自己都不知道如何改好的,反正就是改好了,之前还费尽心思!
上世是朵花:可见出现这样比较玄乎的事情并不少啊,大家都有曾碰到过。
网友八:周末安装个yii框架跑不起来报错,按着调用栈去到框架源码那里写两个echo来看看到底变量是什么,然后神奇地正常了!发生了什么事情?
上世是朵花:说一个类似的js问题,代码出bug了,功能没有按照预期执行,想调试一下问题,于是就把某个变量进行弹窗打印出来看看,加了一个alert后,程序竟然出奇的正常运行了,其实真正的原因是加载顺序的问题,把alert去掉,在同一个地方让程序sleep一小段时间也是可以正常执行,那个alert就相当于占用了一小段时间。
看了网友们说的情况,还以为是在讨论“玄学”呢,一帮搞计算机的人,竟然说的事情都是这么玄乎,这样的描述看起来完全不符合常理,不符合逻辑啊,可是现实情况下,的确会出现大家所描述的这些现象,计算机世界本来是充满逻辑的世界,充满理性的世界,为什么会出现这样的情况呢?其实,这并不矛盾,单独就某一个指令来说,绝对是严格清晰的执行,绝不会存在任何的歧义,而成千上万的指令组合在一起就可能出现一些奇怪的现象,从而变的比较玄乎起来,有的奇怪的现象只不过是在某种特定的条件下触发了,你再进行查看时,现象却又不复存在了,也就是说某些条件并不是每次都会触发的,程序运行也是在各种if条件下走进不同的分支,因此,计算机的世界依然是理性的世界,并不会因为大家看到这些奇怪的现象就成为感性的世界了,在遇见这些奇怪问题时,大家还是要理性的思维去对待,只有认真找出问题的根源,就可能避免以后更多的奇怪问题产生。
以上所有图片均来之互联网
大家好,我是“上世是朵花”。如果你有什么好的看法或者观点可以在评论区展现你的才华,互动交流,如果想进一步了解我,那就关注我吧!
(微信公众号:sssdhua )