zoukankan      html  css  js  c++  java
  • 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. 代码的热升级

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

     

  • 相关阅读:
    新博客安家
    Win32设置与获取cookies的几种方法
    Win32 操作剪切板
    搜索PEB结构获取Kernel32.dll基址
    动人心魄音乐 [身骑白马 徐佳莹]
    单例模式与静态方法的区别(转载)
    个人回顾
    关于引入每日站会的思考
    2017年的总结和回顾
    《知易行难》回顾
  • 原文地址:https://www.cnblogs.com/ting-3/p/10466367.html
Copyright © 2011-2022 走看看