11.3 编程思路的转换
在学校里的教授的如C、Python、Java等编程语言, 采用的命令式编程的思路。 你需要下达一个指令,让计算机做一个动作, 希望得到是一个程序中业务逻辑变量的 状态转换。 其背后的理论基础是形式语言与自动机理论, 程序抽象为一个有穷自动 机。
而在TensorFlow中的编程思路会略有不同,初学时应该引起注意。 其与符号式编 程类似,其通过数学模型对数理逻辑进行抽象,计算单元是函数, 而不是指令。
上面这段话,可能有些抽象,我们通过两段程序代码来说明一下。 这两段程序代码都是要找出斐波拉契数列的第n 个值。 斐波拉契数列:1,1,2,3,5,8,13,21,44,··· 。 从 数学知识的角度,我们知道, 这个数列除了前两个数为整数 1 ,从第 3 值开始, 都是 数列中前两个值相加的结果。 用数学表达式表示其通项公式为a n = a n−1 + a n−2 。 如果 用声明式编程的语言来写这个函数如下:
如果用命令式编程的代码是这样的:
很明显, 声明式编程更加倾向于数学定义本身。 从程序代码上看, 写法更加简 洁, 但也更加抽象。 而命令式编程的写法, 更注重指令和操作的细节, 更加具体 化。 在后面,我们将会看到, 如果遵循声明