1.4 过程
一个过程(procedure)是一个指令序列,它修改某些对象的状态,也可能构造或
者销毁一些对象.根据程序员的意图,与一个过程交互的对象分为四类.
1.输入输出(input/output),指该过程通过其参数或返回值直接或间接传递的那些对象.
2.局部状态(localstate),该过程在其一次调用期间创建、销毁或修改的那些对象.
3.全局状态(globalstate),该过程和其他过程在多次调用中访问的对象.
4.拥有的状态(ownstate),仅供该过程(及其隶属过程)访问但又能被该过程的多次调用共享的对象.
如果一个对象作为参数或结果传递,称它是直接传递的;如果是通过指针或类似指针的机制传递,则称它是间接传递的.如果一个对象被某个过程读但是并不修改,称它是该过程的输入.如果一个对象被某过程写入、创建或销毁,但该过程并不访问其初始状态,则称它是该过程的输出.如果一个对象被某过程既读又修改,称它是该过程的输入/输出.
一个类型的计算基(computationalbasis)是有穷的一集过程,基于它们可以构造出该类型上的其他过程.一组基是高效的(e.cient),当且仅当基于它实现的任何过程的效率不比基于任何其他基写出的过程低效.例如,对k-位无符号整数的一组只提供0,相等判断和后继操作的基就不是高效的,因为基于后继函数实现加法的复杂性是k的指数函数.
一组基是有表达力的(expressive),当且仅当基于它可以紧凑而方便地定义相关类型上的其他过程.特别是,如果合适的话,一个基应该提供所有常用的数学运算.举例说,虽然减法运算可以通过求负和加法实现,但在一个有表达力