敲代码是一门玄学。
外边儿经常能看到一些各种bug相关的表情包。我分享过一些给刚接触编程的朋友,她笑了半天冒出来一句,“这也太搞笑了吧,怎么可能发生嘛!”
我顿住。
孩子,你将来会为你这句话后悔的。
有了两三年编程经验之后,那些大大小小的奇葩bug差不多也都有接触了。
像是有回用Racket,那代码一跑,出现错误倒罢了,最迷惑的是报错在文件第0行。
第0行??
我寻思着你代码行数什么时候跟list似的还从0开始了?
最后发现是代码最顶上没加#lang racket。其实这么一看的话,说错在第0行好像也没什么毛病。
还有一次是用C,作业due的前两个小时我给自己整出一个大bug,坐在电脑前疯狂输出。
好不容易发现bug在哪儿了吧,把那十几行的代码注释掉,重新写了一段。行嘛,本来好歹还能跑,改完直接seg fault。
二话不说把新敲的代码删了,跑了一下确保其他地方都没问题之后,我颤着手把那段问题代码给uncomment回来。
我想着再跑跑看吧,总得搞清楚具体问题出在哪呀。
就是怎么都没想到,这回居然给他跑出来了。
我整个人都惊了?我啥都没做?啥都没改?bug呢?你有本事存在?那你有本事出来啊?别躲着不出error我知道你在家(?)
世界两大未解之谜。
第一,我的代码跑不出来,而我不知道为啥。
第二,我的代码居然跑出来了,而我不知道为啥。
我坐在电脑前,只觉得有狂风在吹。
而我在风中凌乱。
我跑了十次,再也跑不出第一回的bug了,只能万分惶恐地把代码提交了上去。
事实证明,bug真的消失了。
而我至今没搞清楚,注释+加代码+删代码+取消注释这样的操作,什么时候有了debug的效果?
总之,之后再有学妹问我“注释真的可能影响代码能不能跑这件事吗?”的时候,我就摆出一副高深莫测的表情,而后语重心长道,
“大概吧,毕竟敲代码是门玄学。”