返回介绍

序 1:程序里的世界

发布于 2024-12-15 23:01:42 字数 2386 浏览 0 评论 0 收藏 0

程序,或多或少地反映了这个世界运行的本质。那么,程序的本质又是什么呢?

爱民写了这本《程序原本》,看起来想部分地回答“程序的本质是什么”这个大问题。

在篇一,“计算系统”。他认为,“算”是程序之表,“数”是程序之本。然后,算的过程体现了数之间的“逻辑”。而算与数在人们的认知过程——当然也包括在计算系统——中的体现,则是对“事物”的“抽象”。当然,这个对事物的抽象,是与事物的“具象”相联系的,也只有这样,计算系统才是在反映现实世界的运行。

人们在“计算系统”中,通过“程序”来描述、虚拟现实世界,跟人们在日常生活中,通过讲述、写作来描述与推理现实世界一样,是通过“语言”来达到的。“语言及其面临的系统”,即是本书篇二的内容。

在计算系统中为计算机所理解的程序语言,也有一系列语法、语义与语用的设定,以尽量避免“计算不确定性”带来的副作用。不同计算范式的程序语言或者设计,均力图从不同的角度来减少这种副作用。比如命令式编程、函数式编程,前者,通过限定计算步骤、命令的严格顺序来避免不确定性;后者,则通过引用透明来避免不确定性。

而系统的构建,即使部件由不同的程序语言写成,只要在交互界面上设计为“可实现的规则集”,以及输出表达为“可计算的数据项”,也可以实现“对话”。或者说,“可实现的规则集”和“可计算的数据项”,实际上也可以归为一套简洁的“语言”。

篇三,“程序设计的核心思想”。作者开始涉及到程序设计中的一些基本要素,包括数据结构、执行体与它在执行过程中的环境、语法树和对象系统等等。这些要素,仍然是从算与数出发,自然延伸出来的。其中“语法树”在本篇提出,我的理解是,“语法树”在很多情况下是可以作为程序设计中的要素加以利用的。

篇四,“应用开发基础”。从本篇起,对“程序”的理解开始上升到“应用”层次,主要是从“软件复用”和“工程化”的角度来陈述“模块/单元”与“项目/工程”这些“应用程序”的组成或者构建过程。并以“模型是一种沟通工具,这是它内在的‘语言’本质特征”来回到“程序语言”这个“程序”最基本的表达方式本身。

篇五,“系统的基础部件”。则在系统的层次来讨论“程序”,认为“系统是‘通过在程序组织上的结构化来解决规模问题’的一种策略,那么程序所解决的问题集‘能否分割’以及‘如何正确地分割’,就是所有系统问题的核心所在”。并提出,“系统应付规模问题的总法则只有两个:运算能力的分布,以及运算对象的分布”。

进一步的,既有了“分布”,则立刻遇到分布的部件之间的“依赖”。而这种依赖,处理的对象则是系统的(分布的)“状态”,并可以通过“消息”来处理这些“状态之间的依赖”。状态和消息,是处理系统分布与依赖问题的主要数据模式。

最后一篇,篇六,“系统的基本组织方法与原理”。探讨“系统”这个带有“规模化”内涵的程序。而“这一规模的定义本身就是由跨领域引申而来”,以应对“跨领域”的系统级“程序”。另一方面,“服务”则更倾向于设计为带有领域逻辑交互界面的“节点”。那么在这种倾向下,服务要处理的对象,也许应该退化到“数据”本身,并作为“数据”节点来提供它的能力。尤其是面对所谓的“海量”数据时,不同领域的交互,需要数据以更灵活(可变)的方式来存贮、获得和传递。

而“程序”,这个即使在“系统”层面上也仍然是——“算”是程序之表,“数”是程序之本——的“玩意”,在规模化到了系统层面之后,其层间的规划与层间关系的模型,以及如何通过系统化方法来实现这些层之间,亦即是领域间的协作开发,就需要在作者《我的架构思想:基本模型、理论与原则》一书中继续展开了。

邓草原

2017.05.27

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文