无论是数学领域还是语言编程范畴,都不可避免的接触到一个非常抽象的概念——函数。下面简单的介绍一下目前为止我自己对函数的一些理解,以后回继续补充和更新哈。
1. 函数的起源
事物的命名往往对理解这个事物本身至关重要,参考了下度娘:函数(function),最早由中国清朝数学家李善兰翻译,出于其著作《代数学》。之所以这么翻译,他给出的原因是“凡此变数中函彼变数者,则此为彼之函数”,也即函数指一个量随着另一个量的变化而变化,或者说一个量中包含另一个量。所以重点是“函”,函有包含之义,包含意味着被包含量要服从包含量对它的约束关系,所以从函数的名称由来可知函数是包含量对被包含量的一种约束关系。被包含量作为包含量的内部因子一旦发生变化,包含量肯定会随之发生改变。这种动态的约束非常有意思。
2.函数的构成
由函数的定义可知,函数必须有两个量:包含量与被包含量,有了这两个量才能谈及两个量之间的约束关系,这两个量在不同使用场合也就有不同的命名和含义。
(1)数学函数
数学学科上由简到难会遇到很多的函数,函数必须是被定义才能使用。上面所说的两个量在数学领域最常见的是称为自变量和因变量,包含量是因变量,被包含量是自变量。自变量的变化会影响因变量的变化,最简单的线性约束:y=kx+b;x是自变量,y是因变量;x与y之间的约束关系是我们用数值运算符进行定义的,这里用了乘法、加法、等于号;函数通用表达是z=f(x,y,...),内部变量很多,中间用到的运算符可以很多,但最终我们得到的都是一个结果值。
(2)编程类函数
无论是C、java、matlab、Python等常用编程语言,这些语言的核心都是函数的构建,很多我们直接调用的函数都是开发者预先定义好的函数,建立了一个庞大的函数库供编程人员使用,避免了很多重复繁琐复杂的函数定义操作。函数一经定义两个量之间就建立了特定的约束关系,这里两个量被称为:入口参数,返回值。其中被包含量命名为入口参数,包含量为返回值。比如说MATLAB中常用的函数max(x,y...),当我们调用max函数时,要传入入口参数,这些参数传入函数接口后,在函数体内部经过一系列的操作运算最终会返回一个值,作为函数输出。也就是我们想要得到的结果,这里的函数就是一个功能块,而且函数名还可以自己定义,这种功能块一般普适性还很高,一经建立,可重复使用。
3.函数的描述
数学函数一般用图形、表达式等较直观的方法描述,编程函数一般以函数名呈现,内部更多的用算法流程图来体现函数体的实现逻辑。编程函数中的入口参数非常重要,有些入参是可选的,这些参数作为功能开关决定着函数的返回值。
4.函数的特点
功能通用性、开发定制性