什么是运算律

什么是运算律


最近做了一些有关运算律的思考,和大家分享一下。

名词解释

含义
不可再分的原子,可以判断两个数是否相等
代数用字母表示数
线性代数定义了加法和数乘两种运算,它们满足一组运算律

运算律

首先,运算律一定是关于运算的,而运算一定是关于表达式的。运算就是把表达式映射到值。

含义
具体表达式由数和算符组成的表达式,有一个值
抽象表达式含有字母的表达式,是一组具体表达式,没有值

具体表达式:

具体表达式+(2, 4)+(4, 2)
66

抽象表达式:

考虑 +(a, b) 和 +(b, a)
逻辑事实任意a, b,+(a, b)的值 = +(b, a)的值
运算律+(a, b) == +(b, a)

可见,运算律就是将一个 用逻辑语言描述的有关表达式的值的事实 定义为 表达式之间的等价关系

与之相关的,抽象代数就是研究任意运算律的后果。

编程语言

想清楚了上述问题,我们可以提问,编程语言是否是一个代数系统,从而在抽象代数的研究范围内?

我想,答案几乎是否定的。最主要的原因是,编程语言中广泛使用的 “状态” 在代数中找不到合适的对应概念。这是怎么回事呢?

首先,“状态” 是一个有关求值过程的概念,似乎位于数学最不关心的地方(数学不关心用逻辑语言描述的值该怎样求出来,算法就是用来填补这个缺口的)。

更加不妙的是,如果我们故技重施,用程序语言表示计算过程,再把程序抽象成数,定义一个计算结果是图灵机状态的 “执行” 算子,我们会失望地发现,算子 “执行” 几乎没有任何性质。即,我们对 “执行” 无话可说!

计算过程

我们用代码表示计算过程,而实际上,计算过程是对图灵机状态转移的指示。可以说,“状态” 就来自图灵机(和几个更弱的机器)。

你可能知道,λ 演算和图灵机是等价的。λ 演算定义了函数。函数是一种独特的数,函数体是一个抽象表达式,函数的运算只有 “应用” 这一种。即便如此,函数还是有一些有趣的性质,比如“不动点”,即 Y 组合子。

但前途并非一片光明。实践经验表明,不使用状态,有些问题会难以解决。你在编程时禁止自己使用可变数据结构,就可以体会到。

之所以过程和抽象表达式函数在编程语言中可以混用,是因为从逻辑层面上它们没有区别,都是逻辑函数的实现。如,在 Java 中,可以将逻辑函数定义为接口。

所以,我们应当明辨,代数何时开口,何时沉默。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值