在程序编写的过程中,会遇到各种错误与问题,程序出现的问题多种多样,这里总结几种我在编写程序时遇到的问题:
一、代码的逻辑错误
这种错误在完成ACM题时最为常见,因为ACM试题往往需要考虑多种情况,并且需要使用各种极限数据进行测试。逻辑的错误就会导致程序执行错误的分支,返回错误的输出;
二、变量类型造成的错误
这种错误在使用强类型的的语言,比如C、C++时最为常见,在进行类型转换、高精度运算时,精度选择不当,或是强制类型转换,会造成结果的误差。在一个程序中,我需要求得一个对称矩阵的特征向量,理论上将得到一组正交特征向量。程序给出的输出结果为-0.000000,如果当成0,则结果正确,但是最终结果不符。经过检查,发现-0.000000由于精度偏低,实际上应该为一个很接近0的负数
在弱类型语言,比如javascript和matlab中,这种错误依然存在,原因就是不明确当前变量被当作哪种类型参与计算。比如使用d3库自带的排序算法,始终认为9>10,原因是因为比较时变量被当作字符串进行比较。Matlab中变量开得过小而溢出的错误尤为常见。
三、函数、类使用错误
Java可供使用的类成千上万,有的类可能功能相近,但是需要的输入和提供的输出会有略微的不同。
四、环境造成的问题
Library的升级可能不向前兼容,导致原有程序无法工作,升级库之前就要进行谨慎的适配工作。在使用OpenGL完成图形作业时,将在自己电脑上正常运行的代码移植到队友的电脑中,可能会出现速度不同,或是根本无法运行的情况。实际开发时应注意不同软硬件环境的适配。