搜索
NFT元宇宙Web3
近期热门

面向数据的编程原理

波动

Big Data in the Age of the Coronavirus - Ideas Matter

面向数据的编程 (DOP,Data-Oriented Programming) 是一种编程范式,旨在简化软件系统的设计和实现,例如,信息位于前端或后端 Web 应用程序和 Web 服务等系统的中心。DOP 不是围绕结合代码和数据(例如,从类实例化的对象)的软件结构来设计信息系统,而是鼓励将代码与数据分离。此外,DOP 提供了有关如何表示和操作数据的指南。

在 DOP 中,数据被视为一等公民。

DOP 的本质是将数据视为一等公民。它使开发人员能够像操作数字或字符串一样简单地操作程序内部的数据。遵循以下四个核心原则,可以将数据视为一等公民:

原则#1:将代码(行为)与数据分离。

原则#2:用通用数据结构表示数据。

原则#3:将数据视为不可变的。

原则#4:将数据模式与数据表示分离。

当这四个原则结合起来时,它们就形成了一个有凝聚力的整体。使用 DOP 构建的系统更简单、更易于理解,因此开发人员体验得到显着改善。

在面向数据的系统中,代码与数据是分开的。数据用不可变且具有单独架构的通用数据结构表示。

请注意,DOP 原则与语言无关。它们可以在

  • 面向对象编程 (OOP) 语言,例如 Java、C#、C++ 等。
  • 函数式编程 (FP) 语言,例如 Clojure、OCaml、Haskell 等。
  • 同时支持 OOP 和 FP 的语言,例如 JavaScript、Python、Ruby、Scala 等。

本文简洁地说明了如何在 JavaScript 中应用或破坏这些原则。简要提及的是遵守每项原则的好处,以及享受这些好处所付出的代价。本文还通过简单的代码片段说明了 DOP 的原理。

DOP 将数据视为一等公民,从而简化了信息系统的设计和实施。这可以通过遵守四个与语言无关的核心原则来实现。

原则 #1:将代码与数据分离

原则 #1 是一种设计原则,建议在代码(行为)和数据之间进行清晰的分离。这可能看起来是 FP 原则,但实际上,无论是在 FP 还是在 OOP 中,都可以坚持或打破它:

在 OOP 中遵守这一原则意味着将代码聚合为静态类的方法。

在 FP 中打破这一原则意味着将状态隐藏在函数的词法范围内。

此外,该原则与数据的表示方式无关。数据表示由原则#2 解决。

将代码与数据分离中进一步探讨了这一原则。

原则 #2:用通用数据结构表示数据

遵循原则 #1 时,代码与数据分离。DOP 对用于组织代码的编程结构没有固执己见,但它对如何表示数据有很多话要说。这是原则 #2 的主题。

最常见的通用数据结构是映射(又名字典)和数组(或列表)。但也可以使用其他通用数据结构(例如,集合、树和队列)。原则 #2 不涉及数据的可变性或不变性。这就是原则#3 的主题。

在用通用数据结构表示数据中进一步探讨了这一原则。

原则 3:数据是不可变的

将数据与代码分离并用通用数据结构表示,如何管理对数据的更改?DOP 在这个问题上非常严格。不允许修改数据!在 DOP 中,对数据的更改是通过创建数据的新版本来完成的。可以更改对变量的引用,使其引用数据的新版本,但数据本身的值不得更改。

在Data is immutable中进一步探讨了这一原则。

原则 #4:将数据模式与数据表示分离

随着数据与代码分离并用通用和不可变的数据结构表示,现在出现的问题是我们如何表达数据的形状?在 DOP 中,预期的形状表示为与数据本身分离的数据模式。原则 #4 的主要好处是它允许开发人员决定哪些数据应该有模式,哪些数据不应该。

在将数据模式与数据表示分离中进一步探讨了这一原则。

这篇文章是Yehonathan Sharvit关于面向数据编程的书的节选。作者对面向数据编程的核心原则有了更好的解释。Sharvit自2000年以来一直担任软件工程师,使用C++、Java、Ruby、JavaScript、Clojure和ClojureScript编程。他目前在Cycognito担任软件架构师,为大规模数据管道构建软件基础设施。

编辑于 2022-06-26 20:35
「 真诚赞赏,手留余香 」
赞赏

发表评论已发布0

手机APP 意见反馈 返回顶部 返回底部