《编程原本 》一1.4 过程

简介: 本节书摘来自华章出版社《编程原本 》一书中的第1章,第1.4节,作者(美)斯特潘诺夫(Stepanov, A.),(美)麦克琼斯(McJones, P.),更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.4 过程

一个过程(procedure)是一个指令序列,它修改某些对象的状态,也可能构造或
者销毁一些对象.根据程序员的意图,与一个过程交互的对象分为四类.
1.输入输出(input/output),指该过程通过其参数或返回值直接或间接传递的那些对象.

2.局部状态(localstate),该过程在其一次调用期间创建、销毁或修改的那些对象.

3.全局状态(globalstate),该过程和其他过程在多次调用中访问的对象.

4.拥有的状态(ownstate),仅供该过程(及其隶属过程)访问但又能被该过程的多次调用共享的对象.

如果一个对象作为参数或结果传递,称它是直接传递的;如果是通过指针或类似指针的机制传递,则称它是间接传递的.如果一个对象被某个过程读但是并不修改,称它是该过程的输入.如果一个对象被某过程写入、创建或销毁,但该过程并不访问其初始状态,则称它是该过程的输出.如果一个对象被某过程既读又修改,称它是该过程的输入/输出.
一个类型的计算基(computationalbasis)是有穷的一集过程,基于它们可以构造出该类型上的其他过程.一组基是高效的(e.cient),当且仅当基于它实现的任何过程的效率不比基于任何其他基写出的过程低效.例如,对k-位无符号整数的一组只提供0,相等判断和后继操作的基就不是高效的,因为基于后继函数实现加法的复杂性是k的指数函数.
一组基是有表达力的(expressive),当且仅当基于它可以紧凑而方便地定义相关类型上的其他过程.特别是,如果合适的话,一个基应该提供所有常用的数学运算.举例说,虽然减法运算可以通过求负和加法实现,但在一个有表达力

相关文章
|
30天前
|
算法 程序员
为何程序员在编写程序时难以一次性将所有代码完美无瑕地完成,而是需要经历反复修改Bug的过程?
为何程序员在编写程序时难以一次性将所有代码完美无瑕地完成,而是需要经历反复修改Bug的过程?
18 7
|
存储 数据采集 算法
库调多了,都忘了最基础的概念-方法篇
库调多了,都忘了最基础的概念-方法篇
99 0
库调多了,都忘了最基础的概念-方法篇
|
存储 安全
每日积累,补充类似的作用的函数啦,前两个简单看看,最后一个可以记忆一下。
每日积累,补充类似的作用的函数啦,前两个简单看看,最后一个可以记忆一下。
每日积累,补充类似的作用的函数啦,前两个简单看看,最后一个可以记忆一下。
|
设计模式 缓存 前端开发
可否举例说明你在工作中是如何优化前端代码的?
可否举例说明你在工作中是如何优化前端代码的?
157 0
|
算法
【自然框架】重新整理后的自然框架源码!
  整理后的自然框架源码,有九个项目,可以看下面的脑图,带“对号”的表示是一个独立的项目。后面的是主要内容。     欢迎下载http://www.naturefw.com/Down/kind38/List1.aspx ,但是请保留源码里的版权信息,以及dll里的版权信息。
753 0
|
前端开发 大数据 程序员
还在看视频读文档学编程?这有7种编程学习方式,哪种最适合你?
学习编程不仅仅是学会各种语言,你还需要学习如何像程序员一样思考。这里有七种学习编程的方式,视频、文档、听觉、触摸……,你需要找到最适合你的那种。
1825 0
|
人工智能 JavaScript C++
《编程原本 》一3.4 处理特殊情况的过程
本节书摘来自华章出版社《编程原本 》一书中的第3章,第3.4节,作者(美)斯特潘诺夫(Stepanov, A.),(美)麦克琼斯(McJones, P.),更多章节内容可以访问云栖社区“华章计算机”公众号查看
1113 0
《编程原本 》一2.6 总结
本节书摘来自华章出版社《编程原本 》一书中的第2章,第2.6节,作者(美)斯特潘诺夫(Stepanov, A.),(美)麦克琼斯(McJones, P.),更多章节内容可以访问云栖社区“华章计算机”公众号查看
756 0
|
算法 JavaScript
《编程原本 》一2.3 碰撞点
本节书摘来自华章出版社《编程原本 》一书中的第2章,第2.3节,作者(美)斯特潘诺夫(Stepanov, A.),(美)麦克琼斯(McJones, P.),更多章节内容可以访问云栖社区“华章计算机”公众号查看
1103 0