上次在社区看到了 关于数学本质的问题http://www.zhihu.com/question/19925292,上面
陳浩大牛的回答让我有种茅塞顿开的感觉。最近在钻研编程语言的时候看到了很多关于计算本质的描述,自己有了一点想法,望大家指正:
1.所谓计算,它也是构建在一套公理体系上的,并且在此基础上不断向上演化。比如我们日常的四则运算,我的猜测是它的公理体系则是由三大类组成,一类是数字,一类是基本运算符,一类是它们组合方式。下面是我的理解。
a.数字是我们定义的一个描述数据的集合。
b.运算符是我们用来描述一个计算过程的最小单位,它不能再被拆分。这里我的感觉是好像建立起了一种从输入数据(即被运算符操作的数字)到输出数据(即计算结果数字)的映射。即在这个地方我们定义了1+1=2,2+1=3.....这些最基本的元运算,他们没有为什么,因为我们规定映射就是这样。所以运算符应该是一个映射过程的符号表示。
c.组合方式应该是计算向上演化的规则,由此我们可以得到非常复杂的表达式,即如何由最基础的元运算按照一系列规则组成复合运算,也可逆向分解。比如(1+1)+1+1*5=8等不是元运算,而是复合运算,我们可以根据组合方式的规则将它划分成为最基础的元运算 ,然后求出最后的结果。
这是我对于数学上的一点思考,我数学不好,还希望大家见谅,多多指教。关于这个思考中,我对于组合方式的理解还是有些模糊,大家是否能够指出四则运算当中我们规定的组合方式到底有哪些呢?
2.如果我们站在计算机学科的角度来说,所谓的计算的本质,也许就是一个解释器,我们将数据放入其中,这个数据就是代码。计算过程就是解释器的运行过程,最后我们会得到一个结果。不同的解释器对应着不同的计算模型,那么抽象而言,计算即解释器。
比如我们常说的符号计算和数值计算,其实就是指我们输入的数据是数值或是符号,然后各自对应一个自己的解释器,得出各自需要的结果。它们是不同的计算模型,但是它们都是计算。
综上所述,我的感觉是计算的本质是一个黑箱,我们把数据放入黑箱,黑箱按照人们规定的过程一步一步(即元运算)执行下去,然后得出结果。
而编程语言和计算的关系在于,编程语言可以去描述指导这个黑箱的运行过程,好的编程语言还能够给我们提供一种搭建“良好黑箱”的框架,编程语言是黑箱过程的具体展现。
上面就是我的一些yy,还希望大家给出自己独特的见解。由于自己刚处于学习开始阶段,所以错误一定很多,还希望大家们多多指教,感激不尽!
|
|