zoukankan      html  css  js  c++  java
  • 关于 函数性编程语言

    1    什么是functional program language

    函数式编程(英语:functional programming)或称函数程序设计,又称泛函编程,是一种编程典范,它将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。
    比起指令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程
     
     
     
    2    functional program language包含几类

    通常可分为4类:命令式语言、函数式语言、逻辑语言和面向对象的语言(实际上还有很多不同的划分版本)

        1、命令式编程语言(imperative language)

          计算机体系结构是影响语言设计的一个重要因素,目前的大多数语言都是围绕着冯诺依曼结构设计的,

          这些语言称为“命令式语言”。

          命令式语言的核心特征:

          (1)变量(冯诺依曼结构的存储单元)

          (2)赋值语句(数据传输)

          (3)迭代形式的循环(冯诺依曼结构中实现循环的最高效形式)

        2、函数式编程语言(functional language)

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

          函数式语言的核心特征:

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

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

          (2)不修改变量的值

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

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

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

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

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

        3、逻辑程序设计语言(logic programming language)(未研究)

          逻辑程序设计语言:基于逻辑符号逻辑的语言称为逻辑程序设计语言,或者声明性语言

          逻辑程序设计:用一种符号逻辑作为程序设计语言来进行程序设计,通常称为逻辑程序设计    

          逻辑式编程语言是基于规则的编程语言

          程序是事实和规则集,通过符号逻辑表示程序,并使用逻辑推导过程来生成结果。

        4、面向对象语言(object oriented language)

          听起来最亲切的一个种类..........

          严格来说,面向对象语言不应该处在与命令式语言并列的状态,面向对象语言的设计也是依据冯诺依曼结构,

          它是从命令式语言发展而来,我觉得它本身就是命令式语言。

          “面向对象”:强调的是开发模式,与它相对的开发模式就是“面向过程”

          所以说就是“命令式语言”通常指的是“面向过程开发的编程语言”,比如C语言;

               “面向对象语言”指的就是“面向对象开发的编程语言”,比如C++和Java。

          主要特征:

          (1)封装:将数据和方法封装成类

          (2)继承:子类继承父类,可以自动共享父类的数据结构和方法

          (3)多态:子类可以修改父类的方法

        5、其他语言:

        (1)脚本语言(Scripting language)(python、JavaScript等等)

          脚本语言也是一类语言,只不过分类的依据与上述不同,脚本语言属于“命令式语言”的范畴

          单拎出这个分类是由于其的运行方式——解释执行,没有编译过程

        (2)可视化语言

          同样是命令式语言的一个子类,能够以拖放的方式生成代码段(比如.NET)

        (3)标记语言(markup language)(HTML、XML等)

          这种语言,不算做编程语言;

          但是某些标记语言(比如HTML和XML)的扩展中,也加入了一些程序设计的功能

          ——标记与程序设计混合语言(比如JSP标准标签库中的JSTL)

        (4)还有一些特殊用途的语言等等

    3     函数性编程语言为什么会流行

    越接近数学语言或模型,抽象层次越高,表达能力越强。  代码简单 加快了开发速度,没有额外作用,不修改状态,引用透明,代码部署热。

  • 相关阅读:
    HTML
    JavaScript事件总结
    关于更新发布CSS和JS文件的缓存问题
    Google Ajax库与 Jquery常用版本选择
    X队网面试经历小记
    妹纸我失业了……
    今天在公司填的《新员工试用期的问卷调查》
    转载来的迅雷面试题(网页布局)
    今天写了个动态切换样式文件,感觉比我之前做的那个好多了哦。
    有用的网址
  • 原文地址:https://www.cnblogs.com/LeshengW/p/10440659.html
Copyright © 2011-2022 走看看