|
你写下一行代码,代码点击运行,错误屏幕上弹出一行红字:SyntaxError: invalid syntax。什意思这就是代码代码错误最直接的样貌——计算机拒绝执行你写的指令,因为它看不懂。错误 但“看不懂”这三个字,什意思展开来说,代码情况远比想象中复杂。错误计算机不会像人一样猜测你的什意思意图。你少写一个冒号,代码它不会想“这人大概是错误忘了吧”,它只会停下,什意思然后告诉你:这行有问题。代码严格到近乎冷酷。错误我刚学编程那会儿,什意思写Python的if语句,十次有八次忘记行尾的冒号。每次报错都在同一行,每次我都盯着屏幕想:明明逻辑没错啊。逻辑确实没错,但语法错了。计算机先检查语法,再谈逻辑。语法这关过不了,后面的事它根本不理你。 代码错误大致分几类,但分类本身不是重点,重点是它们出现的方式完全不同。语法错误最善良,因为它一定会被编译器或解释器抓住,你不可能带着语法错误把程序跑起来。它就像门口的门卫,你穿拖鞋他不让进,简单粗暴,但至少你知道问题在哪。 真正折磨人的是逻辑错误。程序跑起来了,没报错,但结果不对。你让它算1加到100,它给你5050——这是对的。你改一下,让它算1加到100里所有偶数的和,它还是给你5050。程序安安静静地跑完,输出一个看似合理的数字,但那个数字是错的。这种错误没有任何提示,没有红字,没有警告。你得自己盯着代码,一行一行看,一行一行想。我见过有人为了找一个逻辑错误,在几百行代码里泡了整整两天,最后发现是一个小于号写成了小于等于号。就多了一个等号。 还有一类叫运行时错误。代码语法没问题,逻辑也对,但运行到某一步突然崩了。比如你写了个除法,分母恰好是零。或者你打开一个文件,那个文件根本不存在。程序跑到那里,啪,停了。这类错误往往跟输入数据有关——测试的时候好好的,换一组数据就炸。所以有经验的程序员写代码时,会提前想好各种边界情况:如果用户输入空字符串怎么办?如果数组越界怎么办?这些不是杞人忧天,是血泪教训攒出来的习惯。 说回那个红字报错。很多人看到报错就慌,觉得天塌了。其实报错信息是编程过程中最有用的东西之一。它会告诉你错误类型、错误发生在哪一行、甚至具体到哪个字符。你只要静下心读一遍,大部分问题都能定位。怕的是那种不报错但结果不对的情况,那才真叫无从下手。 代码错误说到底就是人和计算机之间的沟通偏差。你用人类语言思考,用编程语言表达,计算机用它的规则解析。任何一环对不上,错误就出现了。写代码时间越长,越会明白一件事:错误不是意外,是常态。每修复一个错误,你对这套规则的理解就深一层。那些看起来一气呵成的程序,背后都是无数次报错、修改、再报错、再修改堆出来的。 所以下次看到满屏红字,别急着关掉窗口。读一读它说了什么。它可能比你想象的更有耐心。 |