数学语句和编程语句之间有区别吗?

时间:2014-12-26 09:58:33

标签: math language-agnostic programming-languages symbolic-math

对于大家来说,这可能是一个非常有趣的问题,但我很想知道答案:

i=10
i=i+1
i=i+1
i=i+1
i=?

i在纯数学方面的最终价值是什么,i在任何编程语言方面的最终价值是什么。我想我只是在编程方式。 我知道在编程语言中,值为13,但我对数学值感到困惑。

所以专家请告诉我,纯数学和编程语句之间是否有任何区别。最后一行数学中i的价值是什么?

2 个答案:

答案 0 :(得分:2)

  

i=10
  i=i+1
  i=i+1
  i=i+1

在数学方面,A=B不是BA的值的赋值。它反而表达了一种身份。表达式i=i+1在数学上没有意义。一个例外是布尔代数,其中0 + 0 = 0且0 + 1 = 1 + 0 = 1 + 1 = 1。但是,最初的身份i=10没有任何意义。

表达式i=i+1在尝试最接近数学的Haskell等语言中是非法的。对象在Haskell和其他纯函数语言中通常是不可变的。

答案 1 :(得分:1)

通常更多的是注释而不是含义。

当你写=时,你的意思是变量的赋值。如果我要阅读写在一张纸上的符号,我倾向于将其视为==(用典型的C语言)。分配将用左箭头写成,类似i <- i + 1在某些数学领域,而这些概念在其他一些领域根本没有意义。

读取你的代码行就好像它们是一些随机数学语句一样,这会让我知道你多次写同一个等式,并且我们操作模1(因为我读i == i+1),但也i = ? = 10 = 0,即所有这些符号都具有0 modulo 1的相同值。

如果反过来我要用“典型的数学说话”来表达你写的东西 - 如果我把它理解为代码 - 那你会有类似的东西:

  

解决i,其中i = 1 +(1+(1+(10)))

这有点小事。我这样写的原因是,在同一个问题中对不同的值使用相同的变量并不常见。我也可以使用不同的名字:

  

解决i,i=1+jj=1+kk=1+mm=10