浅谈声明式编程范式

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

内容简介:近来发现到处都能发现声明式编程范式的影子,也越发越发觉得如果合理使用声明式编程范式,将有效的改善软件架构,固编写这篇文档,简单的谈一谈笔者对声明式编程范式的理解。命令式(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. 对整个系统而言,能够更系统的收集更多信息,能够依据策略进行系统行为优化,提升系统效率

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

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

浅谈声明式编程范式


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

查看所有标签

猜你喜欢:

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

可视化未来

可视化未来

[美] 埃雷兹·艾登、[法] 让-巴蒂斯特·米歇尔 / 王彤彤、沈华伟、程学旗 / 浙江人民出版社 / 2015-9 / 54.90元

科学的传播速度有多快?今时今日我们很少谈论上帝了吗?人们什么时候开始用“having sex” 而不用“making love”? 史上的人是在哪岁成名的?语法的变化速度到底有多快?哪些作家被纳粹审查得最彻底? “donut” 什么时候开始取代“doughnut”? 我 们能否预测人类未来?比尔·克林顿和花椰菜哪个更出名? 《可视化未来》一书的两位作者通过与“谷歌图书”的合作,得以有机会研究......一起来看看 《可视化未来》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具