黑盒子:在理论与现实之间

2008-04-09 04:06:53来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

编程领域有一条古老而常青的法则,那就是“分而治之”。按照这条法则,一个现实中的任务,无论多么复杂,最终都能够而且应该分解成多个分离并相互独立的小的任务;一个任务只完成特定的功能,它和其他任务之间通过约定的“接口”互相通信,而不用关心各自在内部是如何实现的。

在编程的早期,还没有子程序的概念,所有的指令都在一个主程序片断中执行那时候甚至还没有顺序,分支和循环结构的明确区分当代码超过数百行的时候,连程序是否能看的懂都成了一个问题。当时的程序员有一个聪明的办法,那就是将程序按功能划分为多个片断,要执行某段功能的时候,可以用goto跳转到该处执行,执行完毕后还可以goto回来。虽然他们(她们)并没有意识到,实际上这已经是在不自觉的运用“分而治之”的法则,将程序进行逻辑划分。而且不可否认的是,尽管现在被当作不值得提倡和应当废弃的东西,不过goto语句在当初那段时间内,确实起到了不可替代的作用,否则程序的规模就根本无法进一步扩大了。

但是这种划分程序的方式很快就招致了批评。当然这种批评也是相当公正的,因为尽管程序从逻辑上划分了,但是程序中的变量在任何地方都可以访问,这非常容易导致不小心改写了不应当改写的变量,而这种错误又非常难以查找和排除;另外,滥用goto的结果,就是写出著名的类似“意大利通心粉”似的代码,程序的执行流程几乎无法确定。(我在上大学的时候还看到过一个这样一个Basic程序,100行左右的代码,没有子程序,其中的goto居然多达30多个,我们所有同学都被绕糊涂了亏老师居然还拿这样的程序作为范例让我们学习。)goto的问题是,只能实现程序执行流程的跳转,而无法真正将该隐藏的东西隐藏起来,而数据隐藏原则正是分而治之法则的一个自然引申。事情发展到这一步,应该是有一个革命性进步的时候了,于是出现了子程序的概念。

虽然不像“面向对象”那么如雷贯耳,然而子程序的出现确实称得上是编程历史中一次真正意义上的伟大进步。想象看吧,如果你的程序只能有一个主函数的话,那么最多可以将这个程序写到多长?“分而治之”的法则在这里也发挥了它的威力,正是它引导我们避开缠人的goto和臃肿的主程序,开始了各个程序段分工合作,协调配合的新阶段其意义堪与人类历史上的第一次社会大分工相媲美。

自从

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:软件工业的JIT宣言

下一篇:组合语言之艺术6