编程对函数
⑴ 函数在编程中扮演着什么样的作用
函数在编程中的作用:
支持闭包和高阶函数,支持惰性计算(lazy evaluation)。使用递归作为控制流程的机制。加强了引用透明性。没有副作用。我将重点放在在 Java 语言中使用闭包和高阶函数上,但是首先对上面列出的所有特点做一个概述。
闭包和高阶函数
函数编程支持函数作为第一类对象,有时称为 闭包或者 仿函数(functor)对象。实质上,闭包是起函数的作用并可以像对象一样操作的对象。与此类似,FP 语言支持 高阶函数。高阶函数可以用另一个函数(间接地,用一个表达式) 作为其输入参数,在某些情况下,它甚至返回一个函数作为其输出参数。这两种结构结合在一起使得可以用优雅的方式进行模块化编程,这是使用 FP 的最大好处。
惰性计算
除了高阶函数和仿函数(或闭包)的概念,FP 还引入了惰性计算的概念。在惰性计算中,表达式不是在绑定到变量时立即计算,而是在求值程序需要产生表达式的值时进行计算。延迟的计算使您可以编写可能潜在地生成无穷输出的函数。因为不会计算多于程序的其余部分所需要的值,所以不需要担心由无穷计算所导致的 out-of-memory 错误。一个惰性计算的例子是生成无穷 Fibonacci 列表的函数,但是对 第 n 个Fibonacci 数的计算相当于只是从可能的无穷列表中提取一项。
递归
FP 还有一个特点是用递归做为控制流程的机制。例如,Lisp 处理的列表定义为在头元素后面有子列表,这种表示法使得它自己自然地对更小的子列表不断递归。
函数的优点:
1.代码简洁,开发快速
函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。
Paul Graham在《黑客与画家》一书中写道:同样功能的程序,极端情况下,Lisp代码的长度可能是C代码的二十分之一。
如果程序员每天所写的代码行数基本相同,这就意味着,"c语言需要一年时间完成开发某个功能,Lisp语言只需要不到三星期。反过来说,如果某个新功能,Lisp语言完成开发需要三个月,C语言需要写五年。"当然,这样的对比故意夸大了差异,但是"在一个高度竞争的市场中,即使开发速度只相差两三倍,也足以使得你永远处在落后的位置。"
2. 接近自然语言,易于理解
函数式编程的自由度很高,可以写出很接近自然语言的代码。
前文曾经将表达式(1 + 2) * 3 - 4,写成函数式语言:
subtract(multiply(add(1,2), 3), 4)
对它进行变形,不难得到另一种写法:
add(1,2).multiply(3).subtract(4)
这基本就是自然语言的表达了。再看下面的代码,大家应该一眼就能明白它的意思吧:
merge([1,2],[3,4]).sort().search("2")
因此,函数式编程的代码更容易理解。
3. 更方便的代码管理
函数式编程不依赖、也不会改变外界的状态,只要给定输入参数,返回的结果必定相同。因此,每一个函数都可以被看做独立单元,很有利于进行单元测试(unit testing)和除错(debugging),以及模块化组合。
4. 易于"并发编程"
函数式编程不需要考虑"死锁"(deadlock),因为它不修改变量,所以根本不存在"锁"线程的问题。不必担心一个线程的数据,被另一个线程修改,所以可以很放心地把工作分摊到多个线程,部署"并发编程"(concurrency)。
请看下面的代码:
var s1 = Op1();
var s2 = Op2();
var s3 = concat(s1, s2);
由于s1和s2互不干扰,不会修改变量,谁先执行是无所谓的,所以可以放心地增加线程,把它们分配在两个线程上完成。其他类型的语言就做不到这一点,因为s1可能会修改系统状态,而s2可能会用到这些状态,所以必须保证s2在s1之后运行,自然也就不能部署到其他线程上了。
多核CPU是将来的潮流,所以函数式编程的这个特性非常重要。
5. 代码的热升级
函数式编程没有副作用,只要保证接口不变,内部实现是外部无关的。所以,可以在运行状态下直接升级代码,不需要重启,也不需要停机。Erlang语言早就证明了这一点,它是瑞典爱立信公司为了管理电话系统而开发的,电话系统的升级当然是不能停机的。
⑵ 学电脑编程需要学函数
1、编程中的函数和数学中的函数完全不一样。虽然有时候形式相似,但作用基本不能比。某些编程对数学水平没什么要求,如果不知道数学里的函数完全不影响。如果是编写经常进行数学运算的程序,还是懂数学函数才行。C语言里的函数不需要数学函数基础。
2、程语语言其实是一个很初级的工具,但是又必须熟练的掌握它,学懂一门编程语言就好像学会了写字,但是会写字的人不见得会写文章,而会写文章又不见的写得好。可是如果不会写字,那就一定写不出文章来。
3、在学习C语言之前,应该学好计算机基础。里面的很多概念对于C程序员都是非常重要的。如果在着手学习C之前,或者已经开始学习C,但是碰到了很多问题,应该再把计算机基础的书拿来好好看看。如果有足够的耐心,十足的毅力,应该再学习C语言之前学学汇编,这会对许多比较细腻的概念有清醒的认识。那么可以在看完一遍C语言的教材后再看,但是一定要看一遍,一定会受益匪浅。不管看什么书,先认真地看懂,不要贪速度,应该力求深入的理解。如果能够比较熟练的解决一本教材上的所有习题,那么就应该转入对算法的学习,尽管此时的C语言还称不上精通,有许多细节问题还不了解,许多问题还没有碰到,但是这些问题会在后面的工作和学习中得到解决的。
4、不需要多少资料,掌握一本《The C Programming Language》就足够了。继续学习就更加容易。建议不要找捷径,通过考试除外,真正的水平提高是建立在编程实践积累基础上的,必须一个一个程序的完成才能提高。
⑶ 编程里所说的函数是什么意思
Function,译为方法或函数.函数中的代码执行后可以实现你某种目的,或者得到想要的数据.
⑷ 编程中的函数与数学上函数有什么区别
相同之处都是完成一定的功能(或者计算)。不同之处一个是人在计算,另一个是机器在计算。
如数学函数:
f(x) = xx + 2x
假设参数用为 25,
f(25) =25x25+2x25
结果 = 675
编程中的函数,见下图红框:

⑸ 请问: 在编程中, 对函数进行封装的目的和好处是什么
一,安全性
二,面向对象
三,代码的复用
四,程序的简洁性和可读性
五,其他
⑹ 图形化编程里什么是函数
是void函数。
返回类型,函数名在就是对于初学者要记住以后常用的几种函数的实现:比如排序,求公约数,因为这些在以后的章节中的学习会经常遇到。
在各类编程语言中,函数是一种过程,也称为子程序,它执行一个指定的运算或操作。函数有内部函数或称标准函数,外部函数也即用户定义函数等。能被程序或主函数调用。C语言中,函数的形式分无参和有参两类。无参函数不带回或带回函数值。

闭包和高阶函数
函数编程支持函数作为第一类对象,有时称为闭包或者仿函数(functor)对象。实质上,闭包是起函数的作用并可以像对象一样操作的对象。与此类似,FP 语言支持高阶函数。高阶函数可以用另一个函数(间接地,用一个表达式) 作为其输入参数,在某些情况下,它甚至返回一个函数作为其输出参数。这两种结构结合在一起使得可以用优雅的方式进行模块化编程,这是使用 FP 的最大好处。
⑺ 请问: 在编程中, 对函数进行封装的目的和好处是什么
封装的目的是便于之后的调用,整体性比较好,同时打包成dll文件后,对自己的源码也是一种保护。
⑻ 编程里面的函数,是做什么的
为了一些特定的场合使用的“工具”.
例如我写一个函数叫做MAX(),功能是输入两个数字,输出大的数字。
function
MAX(int
a,int
b)
int
x=0
int
y=0
x=a
y=b
if
a>b
then
print
a
else
print
b
end
if
end
function
这个函数以后就能在我写程序的时候使用了。
⑼ 编程中的函数是什么意思有什么用
编程函数一般是指把一段代码封装起来。然后数学函数对编程来说基本没用处,只会将原本简单的编程无限复杂化,实在有需要可以去复制别人的成品函数代码,没必要搞懂它
⑽ 刚刚接触c语言,请问函数在编程中是什么意思
编程中的函数的英文名是function,而function有一个意思叫“功能”,所以编程中的函数一词可以理解为”实现某个功能的模块“。
比如学下面这个求最大值的函数
intmax(inta,intb)
{
return(a>b)?a:b;
}
它就是一个“功能”,或者说是一个“功能模块”,它所实现的功能就是将所给的两个值中更大的那个找出来并返回给调用它的地方。
中文之所以称之为函数,原因可能是数学中的函数往往有输入和输出,比如y=2x,x是输入,给了输入,就会有一个输出y,而编程中的function也符合这一点(当然,输入不是必须的)。而且将function译为功能感觉也怪怪的,要也是叫功能模块更符合一点。
