首页 > 语言 > JavaScript > 正文

Javascript函数式编程语言

2024-05-06 16:24:35
字体:
来源:转载
供稿:网友
JavaScript 是近年来非常受瞩目的一门编程语言,它既支持面向对象编程,也支持函数式编程。本文专门介绍JavaScript函数式编程的特性。
 

函数式编程语言

函数式编程语言是那些方便于使用函数式编程范式的语言。简单来说,如果具备函数式编程所需的特征, 它就可以被称为函数式语言。在多数情况下,编程的风格实际上决定了一个程序是否是函数式的。

是什么让一个语言具有函数式特征?

函数式编程无法用C语言来实现。函数式编程也无法用Java来实现(不包括那些通过大量变通手段实现的近似函数式编程)。 这些语言不包含支持函数式编程的结构。他们是纯面向对象的、严格非函数式的语言。

同时,纯函数语言也无法使用面向对象编程,比如Scheme、Haskell以及Lisp。

然而有些语言两种模式都支持。Python是个著名的例子,不过还有别的:Ruby,Julia,以及我们最感兴趣的Javascript。 这些语言是如何支持这两种差别如此之大的设计模式呢?它们包含两种编程范式所需要的特征。 然而对于Javascript来说,函数式的特征似乎是被隐藏了。

但实际上,函数式语言所需要的比上述要多一些。到底函数式语言有什么特征呢?

 

特点 命令式 函数式
编程风格 一步一步地执行,并且要管理状态的变化 描述问题和和所需的数据变化以解决问题
状态变化 很重要 不存在
执行顺序 很重要 不太重要
主要的控制流 循环、条件、函数调用 函数调用和递归
主要的操作单元 结构体和类对象 函数作为一等公民的对象和数据集

 

函数式语言的语法必须要顾及到特定的设计模式,比如类型推断系统和匿名函数。大体上,这个语言必须实现lambda演算。 并且解释器的求值策略必须是非严格、按需调用的(也叫做延迟执行),它允许不变数据结构和非严格、惰性求值。
 

  1. 译注:这一段用了一些函数式编程的专业词汇。lambda演算是一套函数推演的形式化系统(听起来很晕), 它的先决条件是内部函数和匿名函数。非严格求值和惰性求值差不多一个意思,就是并非严格地按照运算规则把所有元素先计算一遍, 而是根据最终的需求只计算有用的那一部分,比如我们要取有一百个元素的数组的前三项, 那惰性求值实际只会计算出一个具有三个元素是数组,而不会先去计算那个一百个元素的数组。  
?
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表