- 内容提要
- 序 1:程序里的世界
- 序 2:最后一层表象
- 关于本书
- 致谢
- 引言:简单的本源
- 篇一:计算系统
- 第 1 章 数,以及对数据的性质的思考
- 第 2 章 逻辑
- 第 3 章 抽象
- 篇二:语言及其面临的系统
- 第 4 章 语言
- 第 5 章 从功能到系统
- 篇三:程序设计的核心思想
- 第 6 章 数据结构:顺序存储
- 第 7 章 数据结构:散列存储
- 第 8 章 执行体与它在执行过程中的环境
- 第 9 章 语法树及其执行过程
- 第 10 章 对象系统:表达、使用与模式
- 篇四:应用开发基础
- 第 11 章 应用开发的背景与成因
- 第 12 章 应用开发技术
- 第 13 章 开发视角下的工程问题
- 第 14 章 应用程序设计语言的复杂性
- 篇五:系统的基础部件
- 第 15 章 分布
- 第 16 章 依赖
- 第 17 章 消息
- 第 18 章 系统
- 篇六:系统的基本组织方法与原理
- 第 19 章 行为的组织及其抽象
- 第 20 章 领域间的组织
- 附一:主要编程范式 及其语言特性关系
- 附二:继承与混合,略谈系统的构建方式
- 附三:像大师们一样思考——从 UML 何时死掉 谈起
- 附四:VCL 已死,RAD 已死
5.5 方向 2:程序组织的结构化(服务化与系统构建)
另一个带来崭新思考空间的语法元素是服务(service)。一个服务的发布、运行、使用、受益、检测与维护等整个过程都可能由不同的用户/角色来参与。例如,表 2 比较了生活中的邮寄与软件开发中的会话这样两个“服务”。
表 2 服务:比较生活中的邮寄与软件开发中的会话
* 这里假设会话服务提供过程中,所有的服务、业务等都有操作人员;即使部分功能是由自动化服务提供的,我们也可以称之为干系人。
服务在操作系统及其应用软件中也有着重要的位置。以一个典型下载软件为例,它可能提供一个后台传输的服务(backTrans),那么该服务在 Windows 中的提供模式可能如表 3 所示。
表 3 服务:后台传输服务在 Windows 中的提供模式
* 这里假设这是一个桌面用户可选的服务,当不使用该服务时,基本的下载功能不受影响。
而当一个与此功能等价的服务通过网络来提供时(以 Google 账户同步功能在 Gmail 与 Android 通讯簿功能中的使用为参考),那么上述的模式可能改变为表 4 所示的结果。
表 4 服务:与上述服务等价的服务在网络环境下的提供模式
综观上述这样的一个软件需求与实现的模式 17 ,是不可能仅仅以 Unit 以及更高的形式(库/套件)来提供支持的,因为其需求的本质在于“异地实现”。在这个需求下,由于“服务、功能部件,以及功能部件的操作者”这一系列行为完全不可预期,因此服务的调用方已经不能对实现者的语言与运行的环境作出任何限制。在这个级别上的问题,最终总是被归结为两个解决思路:
- 交互界面是否可以表达为 可实现的规则集 ;
- 输出是否可以表达为 可计算的数据项 。
而简化该问题规模的方法也由这两个经验得出,即尽可能简单的界面规则与数据表示,例如 REST 和 JSON 18 。
对于这类需求模式,我们将提供服务集成能力以支持非本地需求的应用称为 系统(system) ,并将这一等级上的语言统称为 “系统程序设计语言”(system programming languages) 。服务的提供能力与其所支持的层次,成为这个级别的语言特性的主要发展方向。由于服务所在的用户领域有着种种差异,因此在这个级别上的语言也需要提供特定领域的部署、维护与交互界面等特性 19 ,例如 Java 中的 Beans、Annotations,或 Erlang 中的 Node、Port 等。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论