20090127

优化害人

昨天这道题一直做不过去,弄到3点多,今天到单位又整了一个小时左右。


但是,报错的时候显得很--按同学们的说法,"诡异",按李老师的说法,
"皮裤套棉裤,必是有缘故"。鲁迅先生也说了(?),世界上是没有鬼的。

出错的时候,似乎某个bool型变量如果被判断后赋值,这个变量不能读,一读就Segmentation fault。
如果该bool型变量直接用赋值语句赋值,再读。
赋值为false,cout输出,Segmentation fault;
赋值为true,cout输出,一切OK。

修机器的十四条原则说:先怀疑最简单的。
所以,不应该首先怀疑stl中的cout <<有问题。

……

事实上,出错信息是假的。

因为在编译时打开了-O优化。
包师弟也曾对优化害人深表同意。
如果我们能直接看清世界的最底层,越过所有抽象级别,同时又能控制复杂性,
那该有多么美好。

最终判定,是因为vector的下标越界。

所有的错误都是朴素的,而不会是诡异的。诡异的错误,一般只有大师才能碰到。

如同所有的正确程序也都是朴素的,原理也是朴素。
正如萧峰聚贤庄一战,太祖长拳所展示的,
成败与否往往取决于是否能纯熟应用,而不在于有多少个或多强的绝招。

不优化。
使用最简单的方法。

No comments: