我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019跑狗图高清彩图 > 指称语义 >

让我们一起来看看计算的本质吧!

归档日期:07-16       文本归类:指称语义      文章编辑:爱尚语录

  而对于变化,我们可以用映射这个概念来描述,a-b表示a到b这个变化。注意,最初的变化概念,是允许分裂概念的,如a-b,a-c同时存在。当然也允许合并的概念,如a-c和b-c同时存在。变化左边我们成为原像,变化右边我们成为像。如果不允许分裂概念,就是单值映射,如果不允许合并概念,就是单根

  (3)越来越简单的变化我们继续前进,我们发现分裂是让事物变得越来越复杂的变化,而合并是让事物变得越来越简单的变化,一一映射我们可以粗略认为复杂度没有变化。我们总是希望化繁为简,所以我们选择了一一映射以及合并概念,组合成一种我们认为是在简化事物的变化。我们称之为函数,允许合并,不允许分裂。f(2)=3 ,f(3)=3 同时成立可以f(2)=2 ,f(2)=3 同时成立不可以

  (1)lambda函数为什么叫做匿名函数?如果将世界上的一切变化都理解为函数,那么有没有一种标准的方式来描述函数?让我们看看下面的三个函数f(x) = x+1g(x) = x+1h(y) = y+1这些有什么不同吗?似乎它们本质上是一样的。我们应该能迅速得到一个观念,函数的本质不同来自于函数所完成的功能或者计算,1. 与函数的名字无关2. 与函数的自变量名字无关为此我们引入2个基本概念,来解决一下这个问题1. 匿名函数,所有函数的名字都叫lambda,或者用希腊字母λ表示λ(x) = x+1或者写得更加简单点儿:λ x.x+1,表示输入变量是x,返回的结果应该是x+12. 给出变量的转换规则λ x.x+1 和λ y.y+1 等价

  (2)尝试将元素本身也定义成函数如果我们想要将所有变化归结为函数,那么基本的常数呢?1,2,3,4,5还记得皮亚诺系统吗?0 定义为 Ø1 定义为 {Ø}2 定义为 {Ø,{Ø}}3 定义为 {Ø,{Ø},{Ø,{Ø}}}

  那么这个用空集定义的系统至少在自然数加法这个方面表现得普通自然数没有区别了,实际两个系统相对于加法而言是同构的。

  当然,我们可以对lambda演算做同样的映射工作:0 定义为λf.λx.x           也就是无论输入什么参数,都是返回λx.x这样一个函数1 定义为λf.λx.f x         也就是对输入的x,使用1遍f2 定义为λf.λx.f (f x)     也就是对输入的x,使用2遍f3 定义为λf.λx.f (f (f x)) 也就是对输入的x,使用2遍f

  加法操作定义为:λx.λy.x++y还记得x的定义吗?n本质上是一个函数,接受2个参数f和x,对x使用n次f。那么加法操作的定义,可以理解为接受2个参数m和n,对n使用m次++操作。

  另外逻辑变量和操作可以定义为函数true  =λx.λy.x        输入2个变量,总是返回第一个变量false =λx.λy.y        输入2个变量,总是返回第二个变量if    =λv.λt.λf.v t f 输入3个变量,根据第一个变量的值,决定是返回第一个变量还是第二个变量第一个变量v必须是true或者false

  事实上我们可以定义出整数集合上的所有基础算术运算,布尔值集合上基础逻辑运算。那么浮点呢?按照IEEE754标准,浮点也就是一个符号,阶码,尾数组成的有序对,本质就是3个不同整数的运算。那么实数呢?抱歉,计算机本质上就是整数的计算机,计算机只能近似地处理实数。

  (3)我们遭遇了递归:我们现在相信我们已经有了一个整数运算系统和布尔逻辑系统。但是这足以表述我们所说的元素间变化吗?我们还差最后一环,函数的自我调用,也就是递归。我们为什么需要递归?函数的本质就是描述一种有规律的变化。思考一下如下数列:1,2,3,4,5,6,7,8我们如何描述它:a(n) = a(n-1)+1那么更加复杂的变化呢:1,1,2,3,5,8好的,你认出来了,这是斐波那契数列。我们可以更加复杂:f(n)= f(n-1)*f(n-1)+f(n-2)*6+n^2以及一些基本不可能求出通项公式的数列变化,描述这些变化的方式基本只能是递归的定义,或者说我们只有知道了前面的变化结果后,才能知道下一步该怎么计算。有人还会问,我们是否需要循环?我们已经有了分支选择(前面的if还记得吗),我们如果再有循环,很多人基本上就会相信这个模型是图灵完备的了。因为,确实很多程序语言的基本控制结构就是分支和循环。这里只简单提一下,循环可以转化为递归的一种特殊简化形式--尾递归。举一个简单的例子,计算arr[n]的元素之和for (int i=0; in; ++i) {sum += arr[i];

  (4)我们如何调用自己我们在定义一个函数的时候,第一这个函数是没有名字的,第二自己的定义还没有完成,

  我们如何调用连自己的定义还没完成的没有名字的函数呢?你写下了λf.那么函数体怎么写来调用自己?直接调用看来是不现实了,自己都还没定义完,调毛线的自己啊!那么间接调用呢?来看看一个神奇的函数,Y combinator:Y=λf.(λx.f (x x)) (λx.f (x x))将任意函数g作为参数传入Y

  这里添加了一个函数参数f,用于接收自己,也就是为了使用这个阶乘函数,我们还需要传入一个函数作为参数,那么这个参数传什么呢?只需计算Y F = F (Y F),这是一个新的函数,这个函数的特点就是已经有一个Y F作为参数了,只需要一个数值参数就可以进行运算了,我们再来看看具体的Y F的表达式Y F = F (Y F)

  这个函数就只需要一个参数x了,为了避免你说我还是用了名字函数g来表示自己,我将g换成匿名函数的形式,将g函数表示为Y F的形式,也就是λf.(λx.f (x x)) (λx.f (x x))λf.λx. (ISZERO x) 1 (MULT x (f (x-1))由于实在比较长,我分了2行写,那么原来的g就定义为:

  现在我们应该可以对lambda计算有个直观的概念。其实用函数来描述计算的本质是众多思潮中的一种。人们其实一直对什么是逻辑的本质?什么是计算的本质?什么是数学的本质?这类问题充满了好奇心。而对计算的本质,或者说程序的本质,人们应该尝试了从3个角度来理解。1. 构造1种抽象的机器,比如说无限内存,不考虑寄存器,所有操作直接针对内存。并定义一组在这个抽象机器上的操作。图灵机,程序语义学中的操作语义,都是这种思路来理解计算的本质。2. 通过定义函数,认为世间变化无外乎函数,计算机有输入,产生输出,本质上就是一个函数,只不过这个函数比较复杂而已。更进一步,我们把参与运算的元素本身也看做是函数,正如前面我们将自然数定义成lambda函数一样。3. 通过逻辑表达式,认为程序就是逻辑推导。目前理解不多,就不多得置评了。

  看了一些书籍和博客,总结一下我对于计算的理解:使用各种程序语言写出的代码,在计算机中编译运行后,也只不过是依次运行的简单指令。在计算中,最主要最基本的就是算术运算,逻辑运算,和条件转移语句。这些操作组...博文来自:wupeng的博客

  心得:有限自动机-下推自动机(有限计算机)-确定型图灵机(临界点)-通用图灵机(全能计算机),软硬件可以相互模拟替代,并且没有通用机器不能实现的算法,而通用机器上的程序只不过是对一台确定型机器的...博文来自:carver_x的博客

  1.算法,不止于刷题提到算法,不管是科班出身还是半路出家的程序员可能都会说上几句,算法谁没学过谁不知道啊?对于走工业界路线而非学术路线的同学来说,算法学习的最大作用也许是找工作……毕竟工作后,绝大多数...博文来自:weeks

  算法的5个重要特性:①有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都可在有穷时间内完成。②确定性:算法中的每条指令必须有确切的含义,不会产生二义性,并且对于相同的输入只能得出相同的输出。③可...博文来自:暗色调的博客

  计算的本质:深入剖析程序和计算机 pdf 带书签目录 本书借助简单的 Ruby 代码示例,全面、深入地介绍计算理论和编程语言设计。作者注重实用性,在读者熟知的背景知识下,以明晰的可工作代码阐释了形式语

  本书中的代码全部使用 Ruby 写成。Ruby 是一种简单、友好而且有趣的编程语言。因为 Ruby 清晰与灵活,我选择了它,但本书并不依赖于 Ruby 专有的特性,所以这些示例代码 均可转换成你喜欢的

  图灵书籍包括计算的本质:深入剖析程序和计算机.pdf、计算机程序设计艺术+第1卷:基本算法(第三版).pdf。

  何谓数据结构数据结构是什么?它是组织内存中对象或基本类型数值(primtivetypes)的形式,为了更好地组织和使用这些对象而慢慢发展起来的固有形式,惯用法(idioms),是计算机开发领域用处理数...博文来自:梦想从这里开始

  VS 2010 开发工具学习、word 2007版本。 让我们一起来学习吧!

  机器学习的经典教程,英文原版。让我们一起来机器学习吧!机器学习,改变世界!

  当了快半个月的版主了,rn咱们版的人气太差了!rnrn其实因改我们这版最火的呀!rnrn因为这个好玩呀!rn还有什么比玩更吸引人的呢?rnrn你们有没有通宵达旦的玩一过个游戏呢?rn你们有没有曾经梦想开发属于自己的游戏呢?rn你们有没有位自己喜欢的东东付出努力呢?rnrn虽然现在大多数兄弟干的不是游戏这个行业rn但是只要大家还保着童年时的热忱,还喜欢这个东东rnrn让我们一起来壮大GAME版吧

  可以说js会在现在以及未来很长一段时间占据非常大的市场份额:js弱类型,容易入门,写法自由。特别适合初学者(但实际上也是其弱点,太容易入门,太自由,你会发现完全掌握js非常困难。并且其弱类型,除非文档...

  本系列文章涉及的主题是PhotoShopplugin开发。要做的:由两篇文章组成:基础绘制篇--以PhotoShop的Document为舞台,在上面绘制文字和任意形状图层操作篇--PS最强大的是图层操...

  提示:嘿嘿,不用我告诉你怎么做吧,你懂的解压后是一个exe,输入完密码之后会闪退,怀疑内部有跳过之类的,OD打开直接搜索字符串,设断点,分析一波流程我们可以看到压入我们输入的code之后,并没有出现判...

  最近学习了三蓝一棕分享的线性代数的本质,感觉很有实际意义,会陆续整理出来。尽管一批教授和教科书编者用关于矩阵的荒唐至极的计算内容掩盖了线性代数的简明性,但是鲜有与之相较更为初等的理论。说的很好,也是本...

  打开打开,刚刚有个sb问我借lol号玩,浪费时间继续干正事 随便输入后,提示   再好好看看。。。出题人语文肯定不好,,,应该是这个‘再’吧 那我们查看源码  将那么明显的两行  进行unescap...

  在使用pip安装某个包时,python install xxx,会报拒绝访问的错误,解决方式是修改python安装目录的权限

  用以前以前写过的自定义课表软件 ,Android 自定义View课程表表格 n原生View截图合成分享的图片 n n n n n n n n n 看到的是图片只显示到11节处,下面的没有...

  jquery/js实现一个网页同时调用多个倒计时(最新的)nn最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!nnnn//jsn...

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗!nnDocker的三大核心概念:镜像、容器、仓库n镜像:类似虚拟机的镜像、用俗话说就是安装文件。n容器:类似一个轻量...

  u013478518:对于“构造函数体中 const型成员不能在这里初始化”这一条, 针对指针的情况,具体点应该是: 1)如果const修饰的是指针指向的内容,比如 const int* p, 可以在构造函数体中赋值:p = NULL,当然也可以在初始化列表中初始化:p(NULL)。 2)如果const修饰的是指针本身,比如int * const p, 只能在初始化列表中初始化:p(NULL),不能在构造函数体中赋值。

本文链接:http://capstonebake.com/zhichenyuyi/281.html