浅谈声明式编程范式

栏目: 数据库 · 发布时间: 6年前

内容简介:近来发现到处都能发现声明式编程范式的影子,也越发越发觉得如果合理使用声明式编程范式,将有效的改善软件架构,固编写这篇文档,简单的谈一谈笔者对声明式编程范式的理解。命令式(Imperative)和声明式(Declarative)是很早就有的概念,比如 SQL、HTML、CSS 是典型的声明式语言,而我们使用的绝大部分编程语言都是命令式的。命令式编程就像它的名字一样,它由开发者我们一步一步的告述计算机,执行一系列的操作,然后得到想要的结果,起主要作用的是开发者,计算机只是帮助开发者执行计算而已。

近来发现到处都能发现声明式编程范式的影子,也越发越发觉得如果合理使用声明式编程范式,将有效的改善软件架构,固编写这篇文档,简单的谈一谈笔者对声明式编程范式的理解。

1. 声明式与命令式

命令式(Imperative)和声明式(Declarative)是很早就有的概念,比如 SQL 、HTML、CSS 是典型的声明式语言,而我们使用的绝大部分编程语言都是命令式的。

命令式编程就像它的名字一样,它由开发者我们一步一步的告述计算机,执行一系列的操作,然后得到想要的结果,起主要作用的是开发者,计算机只是帮助开发者执行计算而已。

而声明式编程却与此相反,它不是告述计算机做什么做,而是直接告述计算它想要的结果,至于怎么做,由预先写好的程序依据一定的算法由计算机自动推算出来。

声明式与命令式的主要区别在于,声明式描述的是结果,它不关心过程。比如 SQL,我们告述数据库的是,我们要查询某张表满足某某条件的数据,但我们并不会告述数据库怎么去查,怎么查数据是数据库系统自己关心的事情。

2. 声明式的应用领域

很多领域都引入了声明式的编程范式和思想,比如笔者知道的就有如下几个方面。

2.1 SQL

SQL 是最成功的第四代编程语言,它有着众多的方言和实现,因为它的成功,现在各大数据产品也纷纷支持 SQL 进行查询和分析。SQL 是一门典型的声明式语言,它将复杂的数据查询和写入操作封装了起来,我们只需要简单的一个 SQL 语句,就能够获取需要的数据。

早年间,当 SQL 在大数据领域还不是那么流行的时候,我们需要编写复杂的 MapReduce 程序来分析数据,直到有了各种 SQL on MapReduce 产品,我们直接就能够通过 SQL 进行大数据分析,而不用关心复杂的底层实现细节。

2.2 jQuery 与 MVVM

在前端领域,在 jQuery 及以前的时代,我们做的最多的就是通过命令式的编程范式,告述浏览器第一步做什么,第二部做什么来控制视图显示。但直到 MVVM 框架的出现,我们对视图的操作变成了更简单的方便的声明式操作,我们只需要修改对应的数据,视图就自动变化,无需我们手动操作 DOM 结构,让开发人员更专注的处理业务逻辑。

然后,前端对声明式编程范式的应用不仅如此,最近看到的是 Facebook 通过 GraphQL 和 Relay 对 Facebook 网页版进行了重构,通过声明式思想重新组织组件、数据和代码,让所有组件、数据以及代码都能够全局的被管理起来。有了这些整体的数据,再加上一个全局管理器,进而实现代码与数据的并行加载,提升网站访问效率,缩短加载时间。笔者看来,这也是申明式思想的应用。

2.3 Kubernetes

容器编排的事实标准 Kubernetes 其 API 设计的核心也是申明式的,我们只需要通过申明式的方式,告述 Kubernetes 的 Controller,我们需要什么样的 Pod,什么样的 Service,其他的一切都由 Kubernetes 内部搞定。

通过声明式,极大的减少了管理一个 Pod 或者 Service 所需要关注的事情,Kubernetes 会帮助我们做好几乎一切的事情。

3. 总结

所以,我们看到,声明式的编程范式在各个领域都有很好应用,总结一下,它主要有如下几个优点:

  1. 对系统使用方,通过设计申明式的接口,开发者无需关心底层实现,而更多的关注上层业务

  2. 对系统实现方,通过申明式的接口,上层使用者接口相对稳定前提下,系统可以不断的迭代优化

  3. 对整个系统而言,能够更系统的收集更多信息,能够依据策略进行系统行为优化,提升系统效率

基于这些优点,笔者有理由相信,申明式的编程范式和思想将越来越多的应用到现代的软件系统之中,让人们设计出更优雅、易用和可靠的软件系统。

本文到此结束,更多精彩文章,尽在「代码写诗」,微信搜索「 代码写诗 」公众号即可关注。

浅谈声明式编程范式


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

An Introduction to Probability Theory and Its Applications

An Introduction to Probability Theory and Its Applications

William Feller / Wiley / 1991-1-1 / USD 120.00

Major changes in this edition include the substitution of probabilistic arguments for combinatorial artifices, and the addition of new sections on branching processes, Markov chains, and the De Moivre......一起来看看 《An Introduction to Probability Theory and Its Applications》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器