《编程原本 》一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),当且仅当基于它可以紧凑而方便地定义相关类型上的其他过程.特别是,如果合适的话,一个基应该提供所有常用的数学运算.举例说,虽然减法运算可以通过求负和加法实现,但在一个有表达力

相关文章
|
7月前
|
算法 程序员
为何程序员在编写程序时难以一次性将所有代码完美无瑕地完成,而是需要经历反复修改Bug的过程?
为何程序员在编写程序时难以一次性将所有代码完美无瑕地完成,而是需要经历反复修改Bug的过程?
75 7
|
7月前
|
Java 程序员
揭秘编程世界的构造块:一文教你理解方法的本质与运用
揭秘编程世界的构造块:一文教你理解方法的本质与运用
46 0
|
PHP 开发者
很多人觉得正则表达式中的【反向引用】这个概念很难, 其实特别简单 一个案例就明白了,没你想的那么高大上!
一个案例让你明白正则表达式中的【反向引用】,其实没有你想得那么难!
103 1
很多人觉得正则表达式中的【反向引用】这个概念很难, 其实特别简单 一个案例就明白了,没你想的那么高大上!
|
Java Apache
集合的特别要注意地方哈
《系统设计》系列
79 0
|
存储 算法 C语言
C++模拟面试:从数组“紧凑”操作说开来
C++模拟面试:从数组“紧凑”操作说开来
201 0
C++模拟面试:从数组“紧凑”操作说开来
|
前端开发 大数据 程序员
还在看视频读文档学编程?这有7种编程学习方式,哪种最适合你?
学习编程不仅仅是学会各种语言,你还需要学习如何像程序员一样思考。这里有七种学习编程的方式,视频、文档、听觉、触摸……,你需要找到最适合你的那种。
1857 0
C过程思想,根据需求写方法就行
实现的方法有多种 Comprehensive orientate 2017/10/27 13:25:07C过程思想,根据需求写方法就行     
719 0
|
人工智能 JavaScript C++
《编程原本 》一3.4 处理特殊情况的过程
本节书摘来自华章出版社《编程原本 》一书中的第3章,第3.4节,作者(美)斯特潘诺夫(Stepanov, A.),(美)麦克琼斯(McJones, P.),更多章节内容可以访问云栖社区“华章计算机”公众号查看
1179 0
《编程原本 》一1.8 总结
本节书摘来自华章出版社《编程原本 》一书中的第1章,第1.8节,作者(美)斯特潘诺夫(Stepanov, A.),(美)麦克琼斯(McJones, P.),更多章节内容可以访问云栖社区“华章计算机”公众号查看
918 0