架构思维训练之自己推导图灵机( 八 )

接下来,我们将对上面题目稍作变化,注意啊,这里要用到小学数学的高阶课程了。我们把题目代数化,用变量代替数值,形式如下:

a-b*c+(d-e)/f=?

将算法用变量描述之后,就得到了一个纯粹表达算法逻辑的代数形式。注意该形式中只有变量可没有具体数据,只有将变量代入数值后才能计算。通过引入变量将算法逻辑和数据进行了分离,这就可以构建通用的算法逻辑,灵活解决问题。

比如,长方形面积的计算逻辑为“长*宽”,表达为“a*b”,a、b可以代入任何值,这就可以把天下所有长方形的面积计算出来。于此同时,算法也具备了输入和输出,变量就是算法的输入,结果就是算法的输出。

以上是对算法和指令的简单介绍,这里再引申一点内容:前面提到的算法逻辑是用代数形式表达的,如果用程序语言表达呢?嗯,这就是编程了。再一个,将算法逻辑和数据分离,意义重大,咱们后面还会再讲。另外,前面我们用计算任务和子任务表示算法和指令,看似平淡无奇,实有深意且很重要。这里算是卖个关子,后面大家逐渐体会。

推荐阅读