跳到主要内容

· 阅读需 22 分钟
canonical
版权声明

可逆计算理论是我受到物理学和数学的启发,在 2007 年左右提出的新一代的软件构造理论。 可逆一词与物理学中熵的概念息息相关,熵增的方向确定了物理世界中时间箭头的演化方向, 可逆计算理论所研究的是面向演化的粗粒度软件结构的构造规律,所以可逆正是这个理论的点睛之笔。 一些没有学过热力学和统计物理的同学,对于熵的概念一无所知,看到可逆这个说法难免会感到一头雾水。 可逆重要吗?软件要怎么可逆?逆向执行吗?这有什么意义? 在本文中,我简单解释一下可逆计算理论中可逆到底指什么。

可逆计算的核心公式

可逆计算提出了软件构造的一个核心公式

App=Delta x-extends GeneratorDSLApp = Delta\ x\text{-}extends\ Generator\langle DSL \rangle

· 阅读需 33 分钟
canonical
版权声明

如何评价一种框架技术的好坏 一文中, 我提到一个概念,框架中立性(Framework Agnostic),并指出, 最理想的框架,应该是在开发业务代码时完全意识不到它存在的框架。 有些人读后提出疑问:就目前而言,没有任何业务开发完全独立于框架,这个概念有什么意义? 讨论群中有热心同学回复到:

软件开发依赖框架是因为要用到框架提供的输入输出,事件回调,依赖注入,外部数据读写,上下文等, 大多数都是程序运行依赖的副作用。如果做一个业务的时候,按照一个库去设计, 将所有的副作用都显式的声明为接口和上下文对象,有个中间层去衔接框架和设计出来的业务库, 那么这个业务库就可以不依赖框架了。

有人试图反驳:那这种情况不还是制定一种内部标准,既然如此,我用 spring 的标准又有什么问题? 关于这个问题的解答有点微妙,需要有一定的精细概念的分辨能力才能够理解,在这里我简单做一些概念辨析。