编程范式

253 阅读2分钟

编程范式我了解到的有三个,按出现的时间排序是:

  1. 结构化编程
  2. 面向对象编程
  3. 函数式编程

三个编程范式的出现都是为了限制和规范程序员的能力,其中结构化编程限制跳转语句,面向对象编程限制了指针,函数式编程限制了赋值。

限制越多越好吗? 我觉得并不可以一刀切地看这个问题。规范是否能提高开发效率,得看这个规范是否合适具体的场景,和我们平时项目制定的规范一样,放在自己项目可行,放在别人项目就不一定可行了。

每一种语言都只能有一个编程范式吗? 并不是的,这个问题可以直接拿c语言和java来看,如果说面向对象编程就是支持封装、继承、多态三种特性,其实c语言也可以进行面向对象编程。

c语言,函数声明 -> 封装特性,结构体,衍生结构体 -> 继承,虚函数 -> 多态 面向对象即是利用多态对源代码的依赖关系进行控制的能力

《架构整洁之道》的martin提出,程序从出现到现在其实本质一直都没变,都是由顺序结构、分支结构、循环结构和间接转移(数据访问)互相组合而成。

但是,这么多年来软件开发都没有成长吗? 肯定不是,就拿一个时间来说,放在几十年前,开发一个现在的企业级项目,得好几年,但是以现在的技术只需要几个月即可保质保量完成,可以将20年前和现在的软件开发的需求研讨、研发和运维进行比较。

  • 需求研讨:行业沉淀的经验、各种流程图...
  • 研发:各种框架、开发软件、高级编程语言...
  • 运维:云原生、监控体系...

我理解软件开发的发展历程其实是先分层后发展,对整个研发流程、研发模块(前端、后端、数据库...)分层,然后每一层都在发展,所以整体就发展了。