为什么计算机科学存在图灵机和Lambda演算两种世界观,而量子力学却存在三种世界图景?

计算机科学存在两种基本的世界观:图灵机和Lambda演算,它们指出了到达图灵完备的两条技术路线。但是量子力学中却存在着三种世界图景:薛定谔图景,海森堡图景和狄拉克图景。为什么计算机科学有两种基本世界观,但是量子力学却存在三种世界图景?它们之间是否存在什么对应关系?

先说结论,计算机科学中实现图灵完备的基本技术路线也可以被看作是有三条,它们和量子力学的世界图景存在如下对应关系:

  • 图灵机 <=> 薛定谔图景
  • Lambda演算 <=> 海森堡图景
  • 可逆计算 <=> 狄拉克图景

以下是具体的分析。首先,量子力学中最基本的世界图景同样是两个,狄拉克图景是前两种图景自然衍生的结果

  1. 薛定谔图景中算子固定,态函数演化
  2. 海森堡图景中态函数固定,而算子演化
  3. 狄拉克图景(相互作用图景)中态函数和算符都不固定,它们都随时间演化

在狄拉克图景中,我们将系统的Hamiltion量拆分为已知的部分和待研究的微小扰动

H = H 0 + H 1 H = H_0 + H_1 H=H0+H1

然后研究系统如何偏离已知模型进行演化,即我们所关心的是差量描述的演化情况。在相互作用图景下,态函数和算符都随时间演化。

i ℏ d d t ∣ ψ I ( t ) ⟩ = H 1 ∣ ψ I ( t ) ⟩ i ℏ d d t ∣ A I ( t ) ⟩ = [ A I ( t ) , H 0 ] i\hbar \frac d {dt} |\psi_I(t)\rangle = H_1|\psi_I(t)\rangle \\ i\hbar \frac d {dt} |A_I(t)\rangle = [A_I(t), H_0] idtdψI(t)⟩=H1ψI(t)⟩idtdAI(t)⟩=[AI(t),H0]

根据这三种图景都可以得到完全一致的物理测量结果

⟨ ψ S ( t ) ∣ A S ∣ ψ S ( t ) ⟩ = ⟨ ψ H ∣ A H ( t ) ∣ ψ H ⟩ = ⟨ ψ I ( t ) ∣ A I ( t ) ∣ ψ I ( t ) ⟩ \langle \psi_S(t)|A_S|\psi_S(t)\rangle = \langle \psi_H|A_H(t)|\psi_H\rangle = \langle \psi_I(t)|A_I(t)|\psi_I(t)\rangle ψS(t)ASψS(t)⟩=ψHAH(t)ψH=ψI(t)AI(t)ψI(t)⟩

有趣的是,相互作用图景是物理学家在实际工作中使用最多的图景。事实上,数学物理中存在一个专门的分支:微扰论(Perturbation Theroy),它系统化的研究在已知模型的基础上添加微小的扰动量,新的模型如何演化的问题。而理论物理中绝大多数有价值的计算都是在微扰论的框架下进行。

如果把量子力学和计算机理论做个对比,我们会发现量子力学中的世界图景和计算机理论的世界观之间存在一个有趣的对应关系。

  1. 图灵机是一种结构固化的机器,它具有可枚举的有限的状态集合,只能执行有限的几条操作指令,但是可以从无限长的纸带上读取和保存数据。例如我们日常使用的电脑,它在出厂的时候硬件功能就已经确定了,但是通过安装不同的软件,传入不同的数据文件,最终它可以自动产生任意复杂的目标输出。图灵机的计算过程在形式上可以写成

目标输出 = 固定的机器(无限复杂的输入) 目标输出 = 固定的机器 (无限复杂的输入) 目标输出=固定的机器(无限复杂的输入)

  1. 与图灵机相反的是,lambda演算的核心概念是函数,一个函数就是一台小型的计算机器,函数的复合仍然是函数,也就是说可以通过机器和机器的递归组合来产生更加复杂的机器。lambda演算的计算能力与图灵机等价,这意味着如果允许我们不断创建更加复杂的机器,即使输入一个常数0,我们也可以得到任意复杂的目标输出。

目标输出 = 无限复杂的机器(固定的输入) 目标输出 = 无限复杂的机器(固定的输入) 目标输出=无限复杂的机器(固定的输入)

计算机科学中的两个基本理论在形式上都可以被表达为 Y = F(X)这样一种抽象的形式。如果仿照狄拉克图景的导出过程,我们认识到在真实的物理世界中,人类的认知总是有限的,所有的量都需要区分已知的部分和未知的部分,因此我们需要进行如下分解:

Y = F ( X ) = ( F 0 + F 1 ) ( X 0 + X 1 ) = F 0 ( X 0 ) + Δ \begin{aligned} Y &= F(X) \\ &= (F_0 + F_1) (X_0+X_1)\\ &= F_0(X_0) + \Delta \end{aligned} Y=F(X)=(F0+F1)(X0+X1)=F0(X0)+Δ

重新整理一下符号,我们就得到了一个适应范围更加广泛的计算模式

Y = F ( X ) ⊕ Δ Y = F(X) \oplus \Delta Y=F(X)Δ

除了函数运算F(X)之外,这里出现了一个新的结构运算符⊕,它表示两个元素之间的合成运算,并不是普通数值意义上的加法,同时引出了一个新的概念:差量△。△的特异之处在于,它必然包含某种负元素,F(X)与△合并在一起之后的结果并不一定是“增加”了输出,而完全可能是“减少”。
在物理学中,差量△存在的必然性以及△包含逆元这一事实完全是不言而喻的,因为物理学的建模必须要考虑到两个基本事实:

  1. 世界是“测不准”的,噪声永远存在
  2. 模型的复杂度要和问题内在的复杂度相匹配,它捕获的是问题内核中稳定不变的趋势及规律。

例如,对以下的数据

我们所建立的模型只能是类似图(a)中的简单曲线,图(b)中的模型试图精确拟合每一个数据点在数学上称之为过拟合,它难以描述新的数据,而图©中限制差量只能为正值则会极大的限制模型的描述精度。

可逆计算理论

可逆计算理论提出了一个新的软件构造公式,将以上的计算模式落实为实现图灵完备的一条具体的技术路线

   App = Delta x-extends Generator<DSL>
  • App : 所需要构建的目标应用程序
  • DSL: 领域特定语言(Domain Specific Language),针对特定业务领域定制的业务逻辑描述语言,也是所谓领域模型的文本表示形式
  • Generator : 根据领域模型提供的信息,反复应用生成规则可以推导产生大量的衍生代码。实现方式包括独立的代码生成工具,以及基于元编程(Metaprogramming)的编译期模板展开
  • Delta : 根据已知模型推导生成的逻辑与目标应用程序逻辑之间的差异被识别出来,并收集在一起,构成独立的差量描述
  • x-extends: 差量描述与模型生成部分通过类似面向切面编程(Aspect Oriented Programming)的技术结合在一起,这其中涉及到对模型生成部分的增加、修改、替换、删除等一系列操作

DSL是对关键性领域信息的一种高密度的表达,它直接指导Generator生成代码,这一点类似于图灵计算通过输入数据驱动机器执行内置指令。而如果把Generator看作是文本符号的替换生成,则它的执行和复合规则完全就是lambda演算的翻版。差量合并在某种意义上是一种很新奇的操作,因为它要求我们具有一种细致入微、无所不达的变化收集能力,能够把散布系统各处的同阶小量分离出来并合并在一起,这样差量才具有独立存在的意义和价值。同时,系统中必须明确建立逆元和逆运算的概念,在这样的概念体系下差量作为“存在”与“不存在”的混合体才可能得到表达。

图灵机能够实现图灵完备的根本原因在于图灵机可以被看作是一种虚拟机,它可以模拟所有其他的自动计算机器,而如果我们不断提升虚拟机的抽象层次,就会得到可以直接"运行"所谓领域特定语言(DSL)的虚拟机,但是因为DSL关注的重点是特定领域概念,它必然无法以最便利的方式表达所有通用计算逻辑(否则它就成为了通用语言),必然会导致某种信息溢出,成为所谓的Delta项。

图灵机和lambda演算建立了通用计算机的概念基础,在理论上解决了计算的可行性问题,即为什么可以存在一种通用的机器执行机械化的动作,使用有限资源来完成所有我们能够想见的计算。在通用计算机已经普及的今天,我们所面临的最大的实际问题是如何有效的进行计算的问题。计算效率的提高依赖于我们发现计算中的“捷径”,而这依赖于我们对问题本质的洞察,而洞察的产生与问题的表述形式息息相关。表象(representation)变换本身甚至就是解决问题的一种方式,因为变换后的问题表象有可能使得解决方案变得清晰可见。可逆计算借助于领域模型和差量描述,提供了一种新的、系统化的表象变换方式,使我们的注意力得以聚焦在待解决的新问题上。

关于表象变换的作用,参见 解耦的方法远不止依赖注入

基于可逆计算的基本公式,我们可以很自然的得到如下推广的软件构造方法

A p p = B i z ⊕ G 1 ( D S L 1 ) ⊕ G 2 ( D S L 2 ) + . . . ≡ ( B i z , D S L 1 , D S L 2 , . . . ) \begin{aligned} App &= Biz \oplus G1(DSL1) \oplus G2(DSL2) + ...\\ & \equiv (Biz, DSL1, DSL2, ...) \end{aligned} App=BizG1(DSL1)G2(DSL2)+...(Biz,DSL1,DSL2,...)

如果把Generator(也可以是Translator或者Transformer)看作是已知的背景知识,在符号层面隐去它们的存在(类似于物理学中引入泊松括号),我们可以将App看作是一组DSL所构成的特性向量。也就是说,在第一代、第二代、第三代程序语言的发展过程中,不断的提升抽象层次,但它们仍然都是通用程序语言,但是发展到第四代程序语言,我们很可能得到的不是另一种通用程序语言,而是大量领域特定语言所构成的DSL森林,通过它们我们可以形成对原有程序结构的一种新的表示和认知。

Nop平台

如果把DSL的构造和Delta差量的合并算法标准化,就可以由程序自动完成x-extends运算,从而形成一种新的软件框架技术。Nop平台是基于可逆计算理论实现的新一代的低代码平台,它可以看作是可逆计算理论的一个参考实现。作为演示,它内置了一条差量化的软件生产管线
在这里插入图片描述
根据Excel数据模型,Nop平台会自动生成前后端全套代码,包括后端的存储实体、GraphQL服务以及前台页面等。具体来说,从后端到前端的逻辑推理链条可以分解为四个主要模型:

  1. XORM:面向存储层的领域模型

  2. XMeta:针对GraphQL接口层的领域模型,可以直接生成GraphQL的类型定义

  3. XView:在业务层面理解的前端逻辑,采用表单、表格、按钮等少量UI元素,与前端框架无关

  4. XPage:具体使用某种前端框架的页面模型

整个生成过程可以用如下公式表达

X O R M = G e n e r a t o r ⟨ X E x c e l ⟩ + Δ X O R M X M e t a = G e n e r a t o r ⟨ X O R M ⟩ + Δ X M e t a G r a p h Q L = B u i l d e r ⟨ X M e t a ⟩ + B i z M o d e l X V i e w = G e n e r a t o r ⟨ X M e t a ⟩ + Δ X V i e w X P a g e = G e n e r a t o r ⟨ X V i e w ⟩ + Δ X P a g e \begin{aligned} XORM &= Generator\langle XExcel \rangle + \Delta XORM \\ XMeta &= Generator\langle XORM \rangle + \Delta XMeta \\ GraphQL &= Builder\langle XMeta\rangle + BizModel\\ XView &= Generator\langle XMeta\rangle + \Delta XView \\ XPage &= Generator\langle XView\rangle + \Delta XPage\\ \end{aligned} XORMXMetaGraphQLXViewXPage=GeneratorXExcel+ΔXORM=GeneratorXORM+ΔXMeta=BuilderXMeta+BizModel=GeneratorXMeta+ΔXView=GeneratorXView+ΔXPage

推理关系的各个步骤都是可选环节:我们可以从任意步骤直接开始,也可以完全舍弃此前步骤所推理得到的所有信息。例如我们可以手动增加xview模型,并不需要它一定具有特定的xmeta支持,也可以直接新建page.yaml文件,按照AMIS组件规范编写JSON代码,AMIS框架的能力完全不会受到推理管线的限制。

在日常开发中,我们经常可以发现一些逻辑结构之间存在相似性和某种不精确的衍生关系,例如后端数据模型与前端页面之间密切的关联,对于最简单的情况,我们可以根据数据模型直接推导得到它对应的增删改查页面,或者反向根据表单字段信息推导得到数据库存储结构。但是,这种不精确的衍生关系很难被现有的技术手段所捕获和利用,如果强行约定一些关联规则,则只能应用于非常受限的特定场景,而且还会导致与其他技术手段的不兼容性,难以复用已有的工具技术,也难以适应需求从简单到复杂的动态演化。

Nop平台基于可逆计算理论为实现这种面向动态相似性的复用提供了标准的技术路线:

  1. 借助于嵌入式元编程和代码生成,任意结构A和C之间都可以建立一条推理管线

  2. 将推理管线分解为多个步骤 : A => B => C

  3. 进一步将推理管线差量化:A => _B => B => _C => C

  4. 每一个环节都允许暂存和透传本步骤不需要使用的扩展信息

基于可逆计算理论设计的低代码平台NopPlatform已开源:

  • gitee: canonical-entropy/nop-entropy
  • github: entropy-cloud/nop-entropy
  • 开发示例:docs/tutorial/tutorial.md
  • 可逆计算原理和Nop平台介绍及答疑_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/898658.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python数据可视化】利用Matplotlib绘制美丽图表!

【Python数据可视化】利用Matplotlib绘制美丽图表&#xff01; 数据可视化是数据分析过程中的重要步骤&#xff0c;它能直观地展示数据的趋势、分布和相关性&#xff0c;帮助我们做出明智的决策。在 Python 中&#xff0c;Matplotlib 是最常用的可视化库之一&#xff0c;它功能…

Netty-TCP服务端粘包、拆包问题(两种格式)

前言 最近公司搞了个小业务&#xff0c;需要使用TCP协议&#xff0c;我这边负责服务端。客户端是某个设备&#xff0c;客户端传参格式、包头包尾等都是固定的&#xff0c;不可改变&#xff0c;而且还有个蓝牙传感器&#xff0c;透传数据到这个设备&#xff0c;然后通过这个设备…

使用ORDER BY排序

在一个不明确的查询结果中排序返回的行。ORDER BY子句用于排序。如果使用了ORDER BY子句&#xff0c;它必须位于SQL语句的最后。 SELECT语句的执行顺序如下&#xff1a; 1.FROM子句 2.WHERE子句 3.SELECT子句 4.ORDER BY子句 示例一&#xff1a;查询employees表中的所有雇…

通俗易懂的入门 Axure RP文章 ,速学

目录 1. Axure RP简介&#xff1f; 2. Axure RP基本操作 &#xff08;1&#xff09;入门理解 &#xff08;2&#xff09;插入形状 &#xff08;3&#xff09;位置对齐、 &#xff08;4&#xff09;资源库 3. Axure RP基本交互 &#xff08;1&#xff09;切换不同的页面 …

进程间通信大总结Linux

目录 进程间通信介绍 进程间通信目的 进程间通信发展 进程间通信分类 管道 System V IPC POSIX IPC 管道 什么是管道 匿名管道 用fork来共享管道原理 站在文件描述符角度-深度理解管道 管道读写规则 管道特点 命名管道 创建一个命名管道 匿名管道与命名管道的区…

《云原生安全攻防》-- K8s攻击案例:权限维持的攻击手法

在本节课程中&#xff0c;我们将一起深入了解K8s权限维持的攻击手法&#xff0c;通过研究这些攻击手法的技术细节&#xff0c;来更好地认识K8s权限维持所带来的安全风险。 在这个课程中&#xff0c;我们将学习以下内容&#xff1a; K8s权限维持&#xff1a;简单介绍K8s权限维持…

UG2312软件安装教程+Siemens NX三维建模中文安装包下载

一、软件下载 【软件名称】&#xff1a;UG 2312 【支持系统】&#xff1a;win10/win11 【百度网盘】&#xff1a; https://pan.baidu.com/s/1oF-X29m1f5pDhElwi0rK8A?pwd70zi 二、UG NX软件 UG&#xff08;Unigraphics NX&#xff09;是一款集 CAD、CAM、CAE 于一体的高效…

大范围实景三维智能调色 | 模方自动化匀色解决方案

《实景三维中国建设总体实施方案&#xff08;2023—2025年&#xff09;》、《实景三维中国建设技术大纲》等相关文件中指出&#xff0c;倾斜Mesh三维模型修饰要求模型整体色彩真实&#xff0c;无明显色差。9月&#xff0c;自然资源部在国务院新闻发布会上表示&#xff0c;实景三…

Linux:线程及其控制

我们已经学了线程的创建&#xff0c;现在要学习线程的控制 线程等待 我们来先写一个没有线程等待的代码&#xff1a; pthcon.c: #include<stdio.h> #include<pthread.h> void* gopthread(void* arg){while(1){printf("pthread is running\n");sleep(1…

银行客户贷款行为数据挖掘与分析

#1024程序员节 | 征文# 在新时代下&#xff0c;消费者的需求结构、内容与方式发生巨大改变&#xff0c;企业要想获取更多竞争优势&#xff0c;需要借助大数据技术持续创新。本文分析了传统商业银行面临的挑战&#xff0c;并基于knn、逻辑回归、人工神经网络三种算法&#xff0…

SpringBoot实现微信支付接口调用及回调函数(商户参数获取)

#1024程序员节 | 征文 # 一、具体业务流程 1. 用户下单 - 前端操作&#xff1a; - 用户在应用中选择商品、填写订单信息&#xff08;如地址、联系方式等&#xff09;&#xff0c;并点击“下单”按钮。 - 前端将订单信息&#xff08;商品ID、数量、价格等&#xff09;发送…

Pytorch 实现图片分类

CNN 网络适用于图片识别&#xff0c;卷积神经网络主要用于图片的处理识别。卷积神经网络&#xff0c;包括一下几部分&#xff0c;输入层、卷积层、池化层、全链接层和输出层。 使用 CIFAR-10 进行训练&#xff0c; CIFAR-10 中图片尺寸为 32 * 32。卷积层通过卷积核移动进行计…

C++ —— map系列的使用

目录 1. map和multimap参考文档 2. map类的介绍 3. pair 4. map的增删查 4.1 插入 4.2 删除 4.3 查找 5. map的数据修改 6. map的operator[] 7. multimap和map的差异 1. map和multimap参考文档 - C Referencehttps://legacy.cplusplus.com/reference/map/ 2. map类的…

04 springboot-工程搭建案例(多环境部署,数据源, Swagger, 国际化,工具类)

项目搭建模板(多环境切换) springboot系列&#xff0c;最近持续更新中&#xff0c;如需要请关注 如果你觉得我分享的内容或者我的努力对你有帮助&#xff0c;或者你只是想表达对我的支持和鼓励&#xff0c;请考虑给我点赞、评论、收藏。您的鼓励是我前进的动力&#xff0c;让我…

基于CRNN模型的多位数字序列识别的应用【代码+数据集+python环境+GUI系统】

基于CRNN模型的多位数字序列识别的应用【代码数据集python环境GUI系统】 基于CRNN模型的多位数字序列识别的应用【代码数据集python环境GUI系统】 背景意义 多位手写数字识别&#xff0c;即计算机从纸张文档、照片、触摸屏等来源接收并解释可理解的手写数字输入的能力。 随着…

2024软件测试面试秘籍(含答案+文档)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Part1 1、你的测试职业发展是什么&#xff1f; 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师…

低代码可视化-uniapp海报可视化设计-代码生成

在uni-app中&#xff0c;海报生成器通常是通过集成特定的插件或组件来实现的&#xff0c;这些插件或组件提供了生成海报所需的功能和灵活性。我们采用了lime-painter海报组件。lime-painter是一款canvas海报组件&#xff0c;可以更轻松地生成海报。它支持通过JSON及Template的方…

【Linux】如何升级宝塔面板

执行命令&#xff0c;即可升级 curl https://io.bt.sy/install/update_panel.sh|bash

【Unity 实用工具篇】 | UGUI 循环列表 SuperScrollView,快速上手使用

前言 【Unity 实用工具篇】 | UGUI 循环列表 SuperScrollView&#xff0c;快速上手使用一、UGUI ScrollRect拓展插件&#xff1a;SuperScrollView1.1 介绍1.2 效果展示1.3 使用说明及下载 二、SuperScrollView 快速上手使用2.1 LoopListView22.2 LoopGridView2.3 LoopStaggered…

【Python爬虫】获取汽车之家车型配置附代码(2024.10)

参考大哥&#xff0c;感谢大哥&#xff1a;https://blog.csdn.net/weixin_43498642/article/details/136896338 【任务目标】 工作需要想更方便地下载汽车之家某车系配置清单&#xff1b;&#xff08;垃圾汽车之家不给下载导出表格&#xff0c;配置页叉掉了车系要出来还要重新…