functional program language

一、什么是函数编程语言 

函数式编程语言(functional language)

      命令式编程语言是以冯诺依曼这种体系结构为模型,而函数式程序语言的目的是尽可能的模拟数学函数。

      函数式语言的核心特征:

      (1)以“函数”为首,如同命令式语言中的“变量”,函数可以赋值给其他变量,可以作为其他函数的参数,

        或者作为其他函数的返回值。

      (2)不修改变量的值

      (3)只有表达式,没有语句。此处的语句指的是没有返回值得某些操作。

      (4)引用透明(Referential transparency),函数的运行不依赖与外部变量或“状态”,简单的说就是,

        同一个输入(参数),总是会产生同一个输出(返回值),这与数学函数的特征很一致。

        命令式语言因为全局变量等的存在,就无法做到这一点。

      (5)对比命令式语言,递归形式的循环

二、典型的函数式编程语言

纯函数式编程语言

·   强静态类型

o     Concurrent Clean

o     Haskell

o     Miranda

·   弱类型

o     Lazy K

纯函数式编程语言

·   强静态类型

o     F#

o     ML

o     OCaml

o     Scala

·   强动态类型

o     Erlang

o     LISP

o     LOGO

o     Scheme

o     Clojure

o     Mathematica

o     R

·   弱类型

o     Unlambda

他函数式编程语言

·   APL

·   XSLT

 三、函数式编程语言为什么受欢迎

用函数式编程的优点:

1. 代码简洁,开发快速

函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。

2. 接近自然语言,易于理解

函数式编程的自由度很高,可以写出很接近自然语言的代码。

3. 更方便的代码管理

函数式编程不依赖、也不会改变外界的状态,只要给定输入参数,返回的结果必定相同。

因此,每一个函数都可以被看做独立单元,很有利于进行单元测试(unit testing)和除错(debugging),以及模块化组合。

4. 易于"并发编程"

函数式编程不需要考虑"死锁"(deadlock),因为它不修改变量,所以根本不存在"锁"线程的问题。

不必担心一个线程的数据,被另一个线程修改,所以可以很放心地把工作分摊到多个线程,部署"并发编程"(concurrency)。

5. 代码的热升级

函数式编程没有副作用,只要保证接口不变,内部实现是外部无关的。

 

原文地址:https://www.cnblogs.com/ting-3/p/10466367.html