• 函数式语言


    ---恢复内容开始---

    函数式语言

             函数式编程并不是新概念,实际上,在计算机科学出现之初,函数式编程就已经崭露头角,教科书式的函数式编程语言Lisp在1958年就诞生了,但是,为什么一直都是命令式编程和面向对象编程大行其道呢?

    阿兰·图灵和冯·诺依曼祖师爷开天辟地,创立了计算机这门学科,因为这行前无古人,所以最早的一批学者都有其他专业的背景,有的是电子电气方面的专家,有来自物理学科,还有的本来是数学家。不同的背景,也就带来了对计算机发展方向的不同观点。

    因此,对于编程语言有着不同方向的发展,涌现出了最初的函数式编程,命令式编程和面向对象的编程等。函数式编程可以理解为如下:

    函数式编程:将业务逻辑细化,抽象,封装成一个个功能函数,并借助语言自带的高阶函数api,将整个业务流程转化为函数之间的相互调用,这就是函数式编程。

    比起指令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。

    函数式编程语言(functional language)

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

          函数式语言的核心特征:

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

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

          (2)不修改变量的值

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

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

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

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

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

     
    最近流行的函数式编程语言有:Haskell、OCaml等。
     
    为什么函数式语言在近来开始流行:

             函数式编程语言 Haskell 和 OCaml 几乎成为新想法的摇篮,它们当中有一些已经成为主流编程语言的一部分。垃圾回收和参数化多态就是其中最好的例子。Java 的泛型是在 2000 年初引入的,但它在函数式编程语言中早已存在了 20 年。Linq 的设计思想直接来自 Haskell,F# 的 workflow 设计灵感则来自 Haskell 的 monadic I/O story。

    随着摩尔定律的放缓,计算机用户开始更多地依赖软件能够并行地运行于多个核芯片之上,以此来获得更快的处理速度。毫无疑问,函数式编程语言特别适合用于并行执行,因为它们很少有机会发生崩溃。

    “在使用函数式编程语言时,可以通过避免运算单元之间发生交互来实现并行运算。这就要求程序员对程序各个部分之间的交互细节了如指掌,从而降低 bug 出现的几率”。

    函数式编程语言的市场仍然相对较小,但毕竟已经存在了 27 年,它们的用户群还是很强大的。很多公司也开始使用函数式编程语言。

     

     

     
     

    ---恢复内容结束---

  • 相关阅读:
    ✡ leetcode 169. Majority Element 求出现次数最多的数 --------- java
    ✡ leetcode 168. Excel Sheet Column Title 26进制数字 --------- java
    ✡ leetcode 167. Two Sum II
    ✡ leetcode 166. Fraction to Recurring Decimal 分数转换 --------- java
    javascript XMLHttpRequest对象全面剖析
    百度Echarts使用心得
    纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)
    css阴影--box-shadow的用法
    background小结
    20150103笔记
  • 原文地址:https://www.cnblogs.com/cd123/p/10441416.html
Copyright © 2020-2023  润新知