提问人:Anonymous 提问时间:12/26/2014 最后编辑:Anonymous 更新时间:12/29/2014 访问量:95
数学语句和编程语句之间有区别吗?[关闭]
Is there a difference between mathematical statements and programming statements? [closed]
问:
这对你们来说可能是一个非常有趣的问题,但我很想知道答案:
i=10
i=i+1
i=i+1
i=i+1
i=?
就纯数学而言,最终价值是什么,就任何编程语言而言,最终价值是多少。我想我只是在以编程的方式思考。
我知道在编程语言中会是值,但我对数学值感到困惑。i
i
13
所以专家请告诉我纯数学陈述和编程陈述之间是否有任何区别。最后一行的数学值是什么?i
答:
改变的通常是符号而不是含义。
当你写 时,你的意思是变量的赋值。如果我读到写在一张纸上的符号,我会倾向于把它当作(用典型的类C语言)。作业会用一个向左的箭头来写,就像在某些数学领域一样,而这个概念在其他一些领域根本没有意义。=
==
i <- i + 1
把你的代码行当作一些随机的数学语句来阅读,会让我明白这样一个事实,即你多次写同一个方程,并且我们运算模 1(因为我读过),而且,所有这些符号都具有相同的值 0 模 1。i == i+1
i = ? = 10 = 0
相反,如果我用“典型的数学语言”来表达你写的东西——如果我把它理解为代码——你会有这样的结果:
求解 i,其中 i=1+ ( 1+ ( 1+ ( 10 ) ) ) )
这有点微不足道。我这样写的原因是,在同一问题中对不同的值使用相同的变量并不常见。我也可以使用不同的名字:
求解 i、其中 、 和
i=1+j
j=1+k
k=1+m
m=10
评论
i=10
i=i+1
i=i+1
i=i+1
在数学中,不是 的值赋值。相反,它表达了一种身份。这个表达式在数学上没有意义。一个例外是布尔代数,其中 0+0=0 和 0+1=1+0=1+1=1。但是,初始身份没有任何意义。A=B
B
A
i=i+1
i=10
在Haskell等试图最接近数学的语言中,这种表达是非法的。对象在 Haskell 和其他纯函数式语言中通常是不可变的。i=i+1
评论
=
=
:=