子程序和协程的区别是什么?
子程序
子程序定义为一组语句,可以在程序的多个地方方便地重复使用。这种重复使用带来了多种类型的节省,从内存空间到编码时间。这种重复使用也是一种抽象,因为子程序计算的分析是通过调用子程序的语句在程序中恢复的。
子程序的特性
子程序的特性如下:
子程序只有一个入口点。
在被调用子程序的实现过程中,调用者处于暂停状态。
当被调用子程序的执行结束时,控制权将持续返回给调用者。
子程序的优点
子程序有以下优点:
子程序提高了可重用性。它可以在程序的多个地方重复使用一组语句。
子程序提供可扩展性,即它们允许您根据需要定制语言。例如,如果您需要一个生成新部门的程序,您可以简单地编写一个。
子程序提高了可维护性,即如果其定义发生更改,则只有子程序会受到影响。这有助于维护和改进。
子程序有助于抽象,即要使用子程序,您应该了解它们的功能,而不是它们的工作原理。因此,您可以自顶向下创建应用程序,而无需考虑执行细节。
协程
协程是一种特殊的子程序,它有多个入口点。它们可以用来提供子程序的交错执行。一般来说,协程是一种特殊的子程序,它在执行完成之前返回到其调用程序。
协程部分执行,然后执行被暂停,控制权返回给调用者,稍后从暂停点恢复执行。第一个包含协程功能的高级语言是 SIMULA 67。其他支持协程的语言包括 BLISS、INTER LISP 和 MODULA-2。
让我们看看子程序和协程的区别
子程序 | 协程 |
---|---|
子程序被调用时会完全执行。 | 协程被调用时会部分执行。 |
每次调用子程序时,它都从子程序的开头开始执行。 | 协程从上次执行暂停的地方恢复执行。 |
调用者和被调用者子程序之间存在主从关系。 | 调用者和被调用者协程被平等对待,不存在主从关系。 |
子程序只有一个入口点。 | 协程可以有多个入口点。 |
子程序不依赖于历史。 | 协程必须依赖于历史。 |
子程序的调用称为子程序调用。 | 协程的调用称为协程恢复。 |
它提供完整的执行。 | 它提供交错执行。 |
广告