发布于:,更新于:

什么是编程范式

函数、闭包、范式

一、编程范式的发展

  • 非结构化 60年代(195x) goto语句泛滥
  • 结构化、函数式编程 70年代
  • 面向对象 90年代
  • 多范式融合 (21世纪20年代)

二、语言的主流范式

  • C 结构化
  • Java 面向对象

三、概念

  • 编程范式
    如何编写程序的方法论
  • 结构化编程
    把运算过程尽量写成一系列嵌套的函数调用
    也称过程式编程,面向过程编程
  • 函数
    函数式编程中的函数不是结构化编程中的函数,而是数学中的函数,结构化编程中 的函数是一个过程(Procedure)
  • 普通程序
    程序 = 数据结构 + 算法
  • 函数式编程程序
    程序 = 数据 + 函数
  • 高阶函数
    高阶函数,是指一种比较特殊的函数,它们可以接收函数作为输入,或者返回一个 函数作为输出
  • 闭包
    由函数及其相关的引用环境组合而成的实体,即闭包 = 函数 + 引用环境
    闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私 有变量不受外界干扰。
  • DDD
    领域驱动设计, Domain-Driven Design
  • 函数式编程
    即只关注做什么而不是怎么做
    函数式编程不仅仅局限于声明式编程。
    函数式编程最重要的特点是“函数第一位”,即函数可以出现在任何地方,比如可以把函数作为参数传递给另一个函数,不仅如此你还可以将函数作为返回值
  • 声明式编程
    如SQL编程
    告诉计算机应该做什么,但不指定具体要怎么做
    不需要创建变量用来存储数据
    它不包含循环控制的代码如 for, while

五、面向对象建模四步

  • 需求分析建模
  • 面向对象分析(OOA)
  • 面向对象设计(OOD)
  • 面向对象编码(OOP)

六、命令式编程

又称指令式编程 ,与声明式对立

七、声明式编程-子范式

  • 约束式
  • 函数式
  • 逻辑式
    如Prolog声明关系并且对关系进行提问
  • 领域专属语言
    • 声明式领域专属语言(DSLs)包括
    • 语法分析器yacc,
    • 编译说明语言Make,
    • 管理配置语言Puppet,
    • 正则表达式和SQL的一些子集(例如Select queries等)
    • 很多文本标记语言,如HTML、MXML、XAML和XSLT也是声明式的