原文网址 http://www.cnblogs.com/lisperl/archive/2011/11/21/2257360.html
重点段落:
图灵的计算模型就是图灵机,这是一种类似于有穷自动机或下推自动机的机器,但具有访问一条无界的存储“带子”上任意单元的能力。图灵机通过不断修改其存储带上的单元值,以一种命令式的方式进行计算,就像高级命令式语言通过修改变量的值做计算一样。换句话说,图灵机就是命令式语言的计算模型,通过修改变量的值来影响后续的计算。也就是说命令式语言内部是有状态的,计算的过程也就是状态转换的过程,改变状态的方式就是通过赋值等方式改变存储器中变量的值。
丘奇的计算模型是lambda 演算,基于带参表达式的概念。它包括一条变换规则(变量替换)和一条函数定义方式。在lambda演算中,每个表达式都代表一个只有单独参数的函数,这个函数的参数本身也是一个只有单一参数的函数,同时,函数的值是又一个只有单一参数的函数。Lambda演算强调的是变换规则的运用,而非实现它们的具体机器。lambda 演算就是函数式语言的计算模型,函数式语言的计算的主要方式是将函数作用与给定参数上,在函数式语言中可以没有命令式语言所必需的变量和赋值语句,一切(包括程序本身)都是从输入到输出的函数。
命令式语言的程序员:
要计算a和b的gcd,先检查a和b是否相等,如果相等就打印他们之中一个并且结束;否则就把较大的那个换成他们的差,并重复这以工作。
函数式语言的程序员:
当a和b相等时,它们的gcd就定义为a;当a和b不相等时去计算c和d的gcd,其中c是两个数较小的一个,d是两个数的差。要计算给定一对数的gcd,请展开并简化上述定义直到它结束。