没有神奇的方法或者论文可以保证让软件变得完美,没有 bug。
事实上,我们甚至很难定义一个程序,就更别提如何开发一个完美的程序了。软件在太多领域存在,有太多的编程语言,业务需求,还有运行环境,并且要和各种不确定的系统交互。你觉得你的 iPhone 游戏,股票交易系统,烤面包机还有火星登陆器有什么共同之处吗?你觉得给汇编,C,Java,PHP,Fortran,LIST 和 Erlang 颁发证书可行吗?还有各种混合语言 web 应用,以及分布式系统。
你需要正式的描述太多的东西,光列出所有的编程语言似乎就不可能,更不用说如何用这些语言写出完美的程序了。
我喜欢人们拿程序和社会工程对比。建造一座桥的基础在过去的两千年中没有改变过:你需要考虑重力,风力,下雨以及炎热还有很多基本的材料。这些东西罗马的工程师就知道了。但是编程不一样,我们为每个程序创造一个独立的世界,或者说我们把各种世界元素整合在一个世界中,然后在这个世界中建造几百座不同的桥,它们要同时良好的工作,还要考虑到我们创造的世界会不可预知的改变。
还有,我们造一座桥需要经过几年的规划和建造,然后使用几十年,上百年而不用进行任何修改。而软件在一直的变化当中,不管是在开发的时候还是开发完以后。美国在过去的两百年间建造了60万座桥。但是过去五年中我们就创造了一百万个 iPhone 的应用。应用程序可以从几行到几千万行代码,并且在现代生活的每一个角落存在。
让编程如此困难的原因是它无处不在,可以影响一个人或者10亿人,可以运行几十年或者只需要运行一次。它跟造桥完全不一样。最近的火星登陆器是用几百万行C代码写的,并且只运行一次。而高速股票交易系统一秒钟就要被执行无数次。
认为世界上存在一套标准的方法可以让你保证开发的程序是完美的这种想法很可笑。即使这种完美的奇迹存在,它的开销也会让它无法实际实施。好吧,你可以证明一段代码没问题,但是它运行在哪里呢?你能控制操作系统吗?还是其他公司提供的 WebService 接口?你不能控制用户的交互,你也不能控制 CPU,那么你如何保证这段完美的代码可以完美的运行?
我宁愿相信你发明了时间机器也不愿意相信你的标准流程可以在这个混乱的世界行得通。
以上文章来自凌阳教育 网,和更多相关文章:
阅读(1214) | 评论(0) | 转发(0) |