Excel办公常用函数,计算机函数( 二 )


计算机的编程语言不是给计算机看的,而是给程序员看的,是方便程序员自己知道自己想让计算机执行什么指令 。虽然程序员输入的是一些程序代码,但实际上这些程序代码最终会被编译为数(包括指令和数据等等) 。上图:程序的流程图:大量函数相互连接就构成了复杂的逻辑操作体系 。但实际上计算机的操作和行为,最终落到计算机的硬件底层都是建立在数字信号的基础上的,这种操作和行为实际上就是大量函数的宏观集合——通过运算实现对现实世界的反映和反馈 。
举几个典型的此类操作的例子,看看它们是如何由函数构成的:计算机指令——实际上是一系列的编号以及相关的参数,每一条计算机指令都定义了输入值x,计算含义f,指令执行后会产生对应的输出值和相关操作(以数字信号的方式) 。对计算机内存的读、写——实际上是输入一个地址值,输出该地址固定长度的数据的值 。对特定设备的操作——实际上在一系列的内存地址写入各种数值,然后以一个数值请求处理器控制特定的设备来读取这些数据 。
显示屏显示图像——是以显存内的大量数值作为输入,以屏幕上的矩阵作为输出(矩阵也是数的一种形式,至少矩阵可以等效于一个数的有序集合) 。上图:内存的寻址就是一种典型的数值控制的操作,一串10的组合决定了应该从内存当中的哪一块提取数据 。所以像内存这个设备输入数值,即可获取另一串输出的数值 。内存也是一个函数 。
上面是从计算机的底层机制来说的,也就是说计算机的底层完全是基于函数的,所谓的计算和操作一切都是函数 。上图:高级语言(人可读的指令)是如何变成CPU可读的指令,一切都会落到01构成的数值上,作为CPU的输入得到处理 。这些数值不仅提供了x,也提供了f,应该说是高层的f,意思是处理数据的方法 。高层的f会被变成底层的f,从而会被CPU执行(实际上CPU只知道少量的固定的底层的f) 。
而对于计算机编程语言当中的函数来说,函数就具备了更高层次的含义 。诸如一个C语言的函数,或者java语言的函数……这些函数在另一个层面上体现了一些与数学上函数的不同 。由于计算机高级语言品种非常多,我这里也就不过多展开,只说一点点抽象的共性:在高级编程语言当中,函数和过程(routine)具有类似的含义或者本质,这是对函数"过程"含义的强化,也就是前面我们提到的那个f()的含义 。
我们在类似C语言系的语言当中,函数、过程和方法等概念具有类似的含义 。这些概念更突出函数的过程属性 。即在函数的运算之中,会执行一些操作,带来一些后果,重点在于这些操作和操作的后果,而不在于函数的输出值 。但实质上,这些操作的后果也就是函数的输出值 。通过函数集合的宏观化,函数就变成了“宏”(macro)——一种具有动作属性的整体概念,即操作 。
读到这里,读者应该可以联想到为什么excel里面的VBA程序会被称为“宏” 。实际上宏就是一种动作,或者操作的集合,其目的不是给出输出的数值,而是给出一系列动作 。但归根就底,宏也是建立在堆叠的函数的基础上的,是一个封装的整体概念,它不过是强调了函数的过程属性而已 。上图:Excel中基于VBA的宏程序示例小结一下:计算机由于具备了强大的计算能力,于是可以高效地处理大量的函数,因此在此基础上,人类使得计算机的软件体系形成了“操作”的概念,因为我们不仅仅是想要计算机通过复杂的函数计算告诉我们一个最终值,而是需要计算机通过计算出来的大量的值去做一些事情 。

推荐阅读