当前位置: 华文问答 > 数码

作为程序员,你在编程时吃了哪些数学的亏?

2015-02-09数码

因为不懂数学蠢事儿没少干啊,说几件刻骨铭心的!

1. 用正则表达式验证 XML 文件: 经常用正则表达式验证字符串格式,遇到 XML 自然也是照方抓药(由于年少无知,不知道有 DTD 这类东西),可是正则表达无论怎么写都会出现合法的 XML 无法通过验证的情况。 理解了自动机理论和形式语言后才知道这样的正则表达式是写不出来的!!! ,后来面试程序员的时候凡是简历写着「精通正则表达式」的人我就会问这个问题^_^

2. 不懂线性代数就开发 3D 应用: 第一次接触 3D 图形开发,需求很简单,用户打开一 3D 模型,然后用鼠标可以拖动旋转。先看 Direct3D 文档,矩阵?还相乘?好像上学学过,坐标怎么都是四维的?完全不懂,最后用官方示例连改带猜勉强过关。看书恶补知识, 最后理解了线性空间、仿射空间才理解了 3D 图形的原理。附带着把傅里叶变换一类的东西也理解了,都是在线性空间里折腾嘛。

3. 乱用操作符重载: 折腾 3D 图形开发的时候见到有人在 C++ 里用操作符重载计算矩阵、向量,觉得很高大上,原来一大堆代码现在变成了一个数学表达式。自己也照葫芦画瓢,结果是一大堆代码变成了一大堆难以理解的代码。 现在知道了代数结构的概念,想想当时操作符重载不考虑公理和定律是多麽蠢的一件事 。下图来自 Apple WWDC 的软件开发课程,我当年就是这样干的-_-!

顺便说,我不认同「上学学好数学会对以后编程有帮助」这样的观点,因为没有被问题折磨过,直接去学解决问题的方法是不会有久旱逢甘霖的感觉的。