函数是编程语言
❶ 为什么函数式编程没有流行起来
但是对于很多编写应用程序的编程人员来说,函数式编程仍显得那么陌生和遥远。对此Confusion在tweakblog.net上发起了一场关于“为什么函数式编程语言没有流行起来”的大讨论。Confusion认为函数式编程语言之所以没有流行起来,原因是其文档及示例都显得过于复杂难懂,让人望而却步:软件工程领域的一些权威对于函数编程(functional programming——FP)事实上不怎么流行深表遗憾。支持者这一观点的人通常责怪听众短视或其老板无能,认为不同意他们意见的人根本不懂函数式编程为何物。而这反过来却可能说明一点:他们没有给出恰当的解释。 我想限制FP语言被采用的实际原因是:真正吸引大家的是函数式编程语言的一些优点,但是这些优点并没有被很好地阐述和示例。同样,这些解释和样例在说服软件工程师方面显得非常失败,因为它们没有回答软件工程师们在日常工作中所关心的问题。 接着Confusion用一个有关定义rece的例子进一步说明了这一点:(rece f x) nil = x (rece f x) (cons a l) = f a ((rece f x) l)……这很抽象,多数人并不熟悉。可是,FP语言的文档只包含了这类非常数学化的例子。难道没有人写一个用来证明FP强大功能的宠物店的例子吗?这才是我们大多数人的常规工作。 对于Confusion的这一看法,引来了众多读者的讨论,大家就这一问题纷纷发表了自己的看法。 RayNbow对于FP例子过于抽象的看法就表达了不同意见:斐波纳契数列(Fibonacci )的例子(还有阶乘)通常被用作说明语言语法的具体例子。因为函数式编程语言以函数为中心,还有什么更好的方法展示如何定义它们的么?你可以把斐波纳契数列和阶乘的例子看作函数世界的Hello World。 Tubbie认为FP的特长就在于计算方面,因此编写数据库或用户界面应用的程序员根本不需要使用它:FP支持者之所以展示计算例子,是因为FP擅长此道。问题是大多数程序员每天编写的大多数代码都是关于与数据库、用户界面等交互的,并不包含复杂的数学运算或算法。FP语言是非常不同的的语言,如果只解决边界条件问题,就不需要学习它。 Dooievriend非常赞同Tubbie的说法:……我很喜欢函数式语言,它非常适合解决要解决复杂的运算问题。……但是关于用它来构建GUI并访问数据库,我没有任何思路。对我来说,只在复杂和经常变化的问题出现时,才会用到FP,但它是嵌入到其他语言中使用。这是FP语言应被使用的方式,我至少知道Mercury是这么用的…… 有不少人表示同意Dooievriend的这一说法,他们认为只有混合了命令式语言(imperative languages )与函数式语言(Ffunctional languages )才能做到两全其美。就函数式语言没有很好的说明和例子这一说法,虽然Morton也表示同意,但是他并不认为FP没有流行起来:……我没觉得FP不流行。我经常发现同事在代码中使用了函数模式,可是他们自己都没有意识到。现在也很难找到不支持FP的语言。在java和.Net都开始支持FP概念的时候,你们居然还担心FP不流行。 Alex更是现身说法,说自己已经把函数式编程当作了“秘密武器”:你的意思是还没人写出一篇能让人信服的说明函数编程好处的文章吗? …… 我和我的团队已经用F#开发了一个稳定的、现实的、商用的业务应用,而且已经被大公司买走了。函数式编程最成功之处是,根据任务的特性,代码量可以减少4到10倍,对此我十分确信,因为我们用F#重写了一些老代码,所写的代码也更加易于维护和扩展。 因此,它给了我们竞争优势。或许说服不了大多数人对我们来说是好事:),我们已经拥有这一秘密武器了。 虽然大家看法各不相同,但是有一点可以看得出来,函数式编程特长和优点是大家有目共睹的。
❷ 如何打造“函数式”编程语言
严格的函数式语言是没有变量的赋值行为,讲究的是引用透明性,也就是说一个表达式返回一个值,那么它永远返回一个值,不会变。
函数式语言常常和递归联系起来,这是因为一般的循环结构,除非 while(1) 这种死循环,都是和表达式的变动关联起来的,比如说 while(n) 就是要不断修改 n 的值直到 n == 0,在函数式语言中是必须避免的。
递归通过调用函数的参数不同,来达到数据的变动却不破坏引用透明性。并且如果加入尾递归优化,那么递归的性能和循环是等价的。
函数式语言另外一个特点,也是一个语言能自称函数式的关键所在是,函数是“一等公民”,这是说能像操作数据一样在函数中动态生成新的函数,可以将函数赋值给变量,可以把函数放到数据结构里,可以把函数作为参数和返回值。
达到这一个特性的语言都可以宽泛的称作函数式编程语言,并不和过程式和面向对象冲突。
❸ C语言是函数式编程语言吗
函数式编程是种编程范式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是 λ 演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里,函数的计算可随时调用。
所以说JavaScript算是函数式编程语言。
❹ 大家都学习或者使用过什么函数式的编程语言啊
当然这些语言是纯的函数式的编程语言,还有很多语言是命令式的,但是语言本身
的功能可以使用函数式的范式来编程,比如Python, Ruby, Lua等都可以做到。
其实C++也可以做到,不过要借助第三方库
函数式编程的意义远大于函数式编程语言的本身。在这个多核要求多并行的时代,
体系结构)出现之前,学习函数式编程的思考和技术还是有着很长远的意义的。
❺ 汇编语言和函数是什么
汇编语言是相对于硬件(一般是单片机)的一种编程语言;而函数是在编程语言组合使用的一种可以调用的函数,这是二个完全不同的概念。
编程语言特别丰富,我们经常看到的有VB、VC、VF、C++、C#等等,这些语言中有内部函数,编程人员也可以自定义函数。
汇编语言是编程语言中的一种。
❻ javascript 是函数式编程语言吗
javascript本身只是嵌入脚本,事实上不算语言,是HTML代码中的部分内容,主要作用也是控制HTML代码中元素在浏览器上的行为。
javascript支持C等函数语言的函数规范,可以用函数语言的概念的去理解和编写。
javascript可以有不在函数里面的语句,独立的一两个语句也是可以执行的,这是比C等函数语言更加灵活方便,有时候也因此变得更加复杂。
❼ 求科普什么是函数式编程语言
实际上,函数式编程没有一个严格的官方定义。严格上来讲,函数式编程中的“函数”,并不是指我们编程语言中的“函数”概念,而是指数学“函数”或者“表达式”(例如:y=f(x))。不过,在编程实现的时候,对于数学“函数”或“表达式”,我们一般习惯性地将它们设计成函数。所以,如果不深究的话,函数式编程中的“函数”也可以理解为编程语言中的“函数”。
❽ 学编程语言会用到函数吗
编程语言大多都有函数。函数是使得编程更加方便,只不过编程里的函数和数学中的函数有所不同,编程语言个自的函数也不一样。
❾ Java函数式编程语言是什么
函数式编程语言的核心是它以处理数据的方式处理代码。这意味着函数应该是第一等级(First-class)的值,并且能够被赋值给变量,传递给函数等等。
事实上,很多函数式语言比这走得更远,将计算和算法看得比它们操作的数据更重要。其中有些语言想分离程序状态和函数(以一种看起来有点对立的方式,使用面向对象的语言,这通常会将它们联系得更紧密)。
Clojure编程语言就是一个这样的例子,尽管它运行于基于类的Java虚拟机,Clojure的本质是函数式语言,并且在高级语言源程序中不直接公布类和对象(尽管提供了与Java良好的互操作性)。
❿ C语言是函数式编程语言吗
是的。C语言是面向过程的语言,也就是逻辑流程全部是由函数编写的。它与面向对象的差别就是面向对象的操作都是由对象的方法编写的,而面向过程的是依靠函数编写的。
打个比方:写个你去银行存钱的程序
C语言:写出存钱的函数,执行
面向对象:写出一个对象(就是你),写出一个方法(让你会存钱),执行这个存钱的方法就行了
