记得刚开发linux驱动的时候,我对linux驱动为何物都不甚了解,操作系统的基础也一般,就有很多人对我鸡歪:不要什么东西都一开始自己做,把别人的东西拿过来,改改能用就好,程序员不是发明家,要考虑效率问题,而且举了半打儿例子,当时俺还觉得有道理,毕竟飞机一个人不可能造出来。
现在想想纯忽悠刚入门的程序员的,如果自己已经是大牛了,类似的程序搞了很多,当然没必要每次都自己搞,问题是刚入门连二叉树遍历,快速查找都没实现过的程序员就让他们借用别人的代码,那我们的软件开发又有什么前途,况且国内对软件产业根本不重视,像样儿的培训几乎没有,社会上的也都是骗钱为主,如果自己再不写代码锻炼,靠porting过一辈子吗?如果哪天人家不给你porting怎么办?
前几天一个iphone破解黑客撂挑子了,搞得深圳华强北一阵骚乱,为啥啊?几千人的work全base在他的工作上面呢!他不干了,这些人都傻眼了,这就是盲目porting别人成果的下场。相信以后这类事情会越来越多。
而且移植别人的代码很容易出bug,具体情况的变化不是十分清楚,原来代码设计的原理也不是十分明白,出现问题调试起来那叫一个累啊!最关键的是这些bug由于惯性思维很难查出来,一出问题就要人命!
最经典的是1996年6月4号—501航天飞机爆炸事件,对于Ariane 4火箭的工作代码在Ariane 5中被重新使用,但是Ariane 5更高速的运算引擎在火箭航天计算机中的算法程序中触发了一个bug。该错误存在于将64位浮点数转换为16位带符号整数的程序中。更快的运算引擎导致了 Ariane 5中的64位数据要比Ariane 4中更长,直接诱发了