子程序和协程有什么区别?

子程序

子程序被定义为一组语句,可以在方便时在程序的多个位置重复使用。这种重用导致多种类型的节省,从内存空间到编码时间。这种重用也是一种抽象,因为子程序的分析通过调用子程序的语句在程序中恢复计算。

子程序的特点

子程序的特点如下 -

  • 子程序只有一个入口点。

  • 调用方在被调用子程序的执行过程中被挂起。

  • 当被调用的子程序的执行消除时,控制权会不断地返回给调用者。

子程序的优点

子程序有以下优点:

  • 子程序促进可重用性。它可以在程序的多个位置重用一组语句。

  • 子程序提供可扩展性,即,它们让您可以定制语言以满足您的要求。例如,如果您需要一个生成新部门的过程,您可以简单地编写一个。

  • 子程序提高了可维护性,即,如果其定义发生变化,则只影响子程序。这有利于维护和改进。

  • 子程序有助于抽象,即,要使用子程序,您应该了解它们的作用,而不是它们如何工作。因此,您可以自上而下地创建应用程序,而无需关心执行细节。

协程

协程是具有各种条目的特殊子程序。它们可用于提供子程序的交错执行。一般来说,协程是一个特殊的子程序,它在执行完成之前返回到它的调用程序。

continue 部分执行,然后暂停执行,控制返回给调用者,稍后从暂停点恢复执行。第一个包含协程工具的高级语言 SIMULA 67。其他支持协程的语言是 BLISS、INTER LISP 和 MODULA-2

让我们看看子程序和协程的区别

子程序协程
A subprogram executes completely when called.
协程在调用时部分执行。
Each time a subprogram is called, it begins execution from the beginning of the subprogram.
协程从先前暂停执行的点恢复执行。
There is a master-slave relationship between a caller and callee subprogram.
调用者和被调用者协程都被平等对待,不存在主从关系。
A subprogram has a single entry point.
一个协程可以有多个入口点。
A subprogram is not history sensitive.
协程必须对历史敏感。
The invocation of a subprogram is called a subprogram call.
协程的调用称为协程恢复。
It provides complete execution.
它提供交错执行。