自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 可逆计算:下一代软件构造理论

图灵机理论和Lambda演算理论是计算机领域的两个基本理论,如果补充可逆差量这一概念,可以很自然的推导出一个新的可以实现图灵完备的软件构造理论:可逆计算。Docker和React等基于差量概念的创新技术都可以看作是可逆计算理论的一种具体实例。

2023-05-12 11:31:59 374 1

原创 【无标题】

那么为什么函数会成为编程语言中最基本的逻辑组织单元,我们现在编写一个逻辑编排引擎的时候还需要基于函数抽象吗?有没有更好的抽象形式?为了搞清楚这个问题,我们有必要懂一点历史。首先,我们需要清醒的意识到,

2024-04-08 08:54:38 1767

原创 关于可逆计算的讨论--答圆角骑士魔理沙

在为什么计算机科学存在图灵机和Lambda演算两种世界观,量子力学中却存在着三种世界图景?一文中我提出了一个启发式的观点,将图灵机、lambda演算、可逆计算与量子力学中的薛定谔图景、海森堡图景和狄拉克图景做了一个有趣的对应,指出可逆计算是第三条通向图灵完备且受到物理学启发的技术路线。这对于研究生阶段学习过多种图灵完备的计算模型的同学来说,理智和情感上都可能感到难以接受,完全无法将这些概念联系起来,甚至有人调侃的问:为什么计算机科学有五个字,量子力学却是四个字,它们之间是否存在什么对应关系?本质上,可逆计算

2023-09-29 19:41:14 135

原创 如何为Spring和Mybatis增加可逆计算支持

Mybatis所管理的SQL语句存放在XML配置文件中,号称是可以在不修改源码的情况下通过配置调整来定制数据库访问逻辑,比如适配不同的数据库方言等。但在实际使用中,如果XML文件已经被打包到Jar包中,那么即使是进行单个SQL语句的定制也必须要复制整个配置文件,这明显是设计上的一种缺陷。可逆计算理论为所有的DSL语言提供了统一的差量化定制语法。借助于Nop平台的基础设施,我们只需要补充少量代码,拦截Mybatis的配置文件加载过程,就可以为。

2023-07-31 08:23:12 89

原创 Y组合子的一个启发式推导

本文将对Y组合子提出一个非常特别的启发式的推导,可以非常直观的理解Y组合子为什么采用现在这种结构,而且可以将这种推导推广到更多的情况,推导出无数多的组合子

2023-07-31 08:21:13 181

原创 如何评价一种框架技术的好坏?

一个框架相当于是建立一个有独立存在意义的技术空间,它所提供的各种能力相当于是这个空间中定义的运算规律(数学定理)。类似于数学定理的推导,在越少的假设上进行的推导(摆脱对具体业务上下文的依赖)可以应用到越广泛的场景中。自动推导的结果可以像数学定理那样复合起来,得到新的结果。可逆计算理论提供了对设计完整性的一种新的评估视角。gitee:github:可逆计算原理和Nop平台介绍及答疑_哔哩哔哩_bilibili。

2023-07-24 08:17:22 152

原创 Nop平台中的模块依赖关系

Nop平台的模块虽然很多,但是因为整体设计采用了依赖注入、动态加载等方式,各个模块的耦合度很低,大部分模块都可以独立使用,并且可以脱离Nop平台与其他框架集成使用。

2023-06-25 08:48:00 320

原创 Nop平台为什么是一个独一无二的开源软件开发平台

以SpringBoot为例,如果我们在基础代码中创建了两个bean:beanA和beanB,在扩展代码中我们希望删除beanA,扩展beanB,则需要修改基础代码,在配置类的工厂方法上增加SpringBoot特有的注解。除了直接使用注解之外,SpringBoot也提供了其他机制可以对bean的创建过程进行精细控制,但是这些做法都需要实现Spring框架内部的接口,并且了解IoC容器的执行细节。

2023-06-11 18:03:37 553

原创 写给程序员的可逆计算理论辨析补遗

具体来说,我们可以将函数分解为多个步骤,然后为每个步骤分配一个唯一id等等。在Nop平台中,我们定义了两种可以实现分布式异步调用函数的差量化逻辑表达形式。

2023-06-05 09:50:36 202

原创 GPT用于复杂代码生产所需要满足的必要条件

现在很多人都在尝试用GPT直接生成代码,试图通过自然语言指导GPT完成传统的编码工作。但是,**几乎没有人去真正认真的考虑一下生成的代码如何长期维护的问题**。基于可逆计算理论的基本概念,我们可以进行如下推理:

2023-05-28 21:15:04 346

原创 写给程序员的可逆计算理论辨析

可逆计算理论是Docker、React、Kustomize等一系列基于差量的技术实践背后存在的统一的软件构造规律,它的理论内容相对比较抽象,导致一些程序员理解起来存在很多误解,难以理解这个理论和软件开发到底有什么关系,能够解决哪些实际的软件开发问题。在本文中,我将尽量采用程序员熟悉的概念讲解差量以及差量合并的概念,并分析一些常见的理解为什么是错误的。

2023-05-28 21:13:13 147

原创 低代码平台中的分布式RPC框架(约3000行代码)

NopRPC是从第一性原理出发,重新审视RPC的概念,完全重新设计的Yet Another PRC框架,它的设计非常简洁直观,易于扩展,是Nop平台的一个有机组成部分。gitee:github:可逆计算原理和Nop平台介绍及答疑_哔哩哔哩_bilibili。

2023-05-23 23:19:10 155

原创 低代码平台中的GraphQL引擎

相比于REST服务调用方式,GraphQL提供了可以由调用者控制的、强大而灵活的数据重组能力,而所谓的低代码平台,其技术的基本价值也正在于将原先必须由程序员编码实现的功能,通过抽象和封装,以一种有限组合的方式提供给上层应用,因此可以想见,在低代码平台中GraphQL可以与其他组合机制相互促进,实现价值的最大化。在本文中,我将基于可逆计算原理对Nop平台中GraphQL引擎的设计进行一些理论分析,并介绍我们对GraphQL所做的一些扩展。

2023-05-13 19:51:53 342

原创 解耦远不止依赖注入

什么是耦合?如何解耦合?在面向对象技术盛行的今天,所谓的相互作用被表达为对象之间的相互关联,耦合的外在表现是持有相关对象的指针,因此解耦合问题似乎可以具体化如何最小化对象装配所需要的信息量,最后形成的解决方案就成为了依赖注入这一技术理念。具体介绍可以参见invalid s的回答依赖倒置原则(DependenceInversionPrinciple,DIP)是指设计代码结构时,高层模块不应该依赖低层模块,二者都应该依赖其抽象。但是依赖注入是解耦的关键只是一个过去流行的理解。

2023-05-13 19:21:39 42

原创 如果重写SpringBoot,我们会做哪些不同的选择?

如果我们完全从零开始重新编写SpringBoot,那么我们会明确定义哪些核心问题由底层框架来负责解决?针对这些问题我们会提出什么样的解决方案?这些解决方案与SpringBoot目前的做法又有哪些本质上的差异?Nop平台中的依赖注入容器NopIoC是基于可逆计算原理从零开始实现的一个模型驱动的依赖注入容器,它通过大约5000行代码,实现了我们所用到的SpringBoot的所有动态自动装配机制和AOP拦截机制,并且实现了GraalVM集成,可以很容易的编译为native镜像。在本文中,我将结合NopIoC的实现

2023-05-13 19:21:13 112

原创 Paxos的魔法学研究报告

Paxos算法并不长,写在纸上也仅有短短的四句话。它之所以看起来有些像是微言大义的天书,主要是我们并不清楚这几条简单规则背后的设计意图是什么,为什么它能起作用,不采用这些规则是不是就不行?分布式系统的底色是生的自由、死的随机的一片混沌,矛盾冲突无处不在,但是Paxos算法却偏偏在这一片混沌之上建立了统一一致的共识世界,这看起来宛如神迹。但是,凡人是很难理解神迹的,他无法站在神的高度俯瞰众生,只能凭借自己有限的生活经验去追索揣摩神的意图,最终必然会产生属于凡人的困惑。本文试图从异次元魔法学的角度对Paxos

2023-05-13 19:20:12 222

原创 低代码平台中的自动化测试

自动化测试是现代软件开发实践中一个关键性的组成部分,但是它的维护成本往往居高不下,在投入资源有限的项目中一般难以达到较高的自动化测试覆盖率。很自然的,会有人想用可视化的低代码平台来简化测试用例的编写和维护。但是,**自动化测试维护的本质性难点并不是是否可视化的问题,而是测试用例的脆弱性问题**。一般来说,我们编写的测试用例采用的都是外部视角,即提供输入,调用函数,然后检查返回结果。但是业务函数很少是所谓的纯函数,它们的执行都必然涉及到大量的副作用,例如,读写数据库、并发访问、生成随机数等。

2023-05-13 19:20:12 296

原创 从可逆计算看Delta Oriented Programming

可逆计算理论由我在2007年左右提出 [12][13][14],它的思想来源不是传统的软件工程或者计算机领域,实际上我的学术背景是理论物理学,而且我对于软件工程理论方面的历史成果事前也并不了解,因此在基本原理层面可逆计算与学术界现有的理论并不相同。在本文中,我简单介绍一下可逆计算理论与类似理论之间的区别和联系。

2023-05-13 19:18:33 212

原创 为什么说百度AMIS框架是一个优秀的设计

百度AMIS是目前前端开源社区中设计最精良的低代码框架之一,代表了国内前端开源低代码领域的最高水平。AMIS的设计本身是一种通用设计,并不受限于目前它所支持的使用场景。在本文中,我将分析一下AMIS框架的一些设计要点,并介绍Nop平台中集成AMIS框架时所做的一些改进工作。

2023-05-12 12:33:26 3621 1

原创 低代码平台需要什么样的ORM引擎?(2)

在上一篇文章中,我对ORM的设计进行了初步的理论分析,并提出了SQL语言的最小延拓:EQL对象查询语言,然后在EQL语言的基础上实现了多种用户可定制的动态存储结构。在本文中,我将首先介绍NopOrm引擎中所做的一些功能取舍,以及在这种功能取舍的情况下如何解决ORM常见的性能问题。然后我将介绍如何实现可定制的Dialect,如何用200行代码实现类似MyBatis的SQL管理功能,以及如何实现GraphQL集成和可视化集成等。

2023-05-12 12:29:28 328

原创 低代码平台需要什么样的ORM引擎?(1)

本文将基于可逆计算理论,对ORM引擎的设计和实现进行初步的理论分析,并介绍Nop Platform2.0中所使用的NopOrm引擎的实现方案。NopOrm大致包含了Hibernate+ MyBatis + Spring Data JDBC + GraphQL的主要功能,但是因为它使用了大量创新性的设计并依据理论分析对功能特性进行了一定的取舍,所以实际需要手工编写的有效代码量并不大(

2023-05-12 12:26:00 239

原创 GPT驱动低代码平台生产完整应用的已验证策略

GPT3.5已经可以理解元模型、模型差量、领域特定语言DSL的概念,可以直接驱动Nop平台生成前后端全套应用。Nop平台与GPT沟通的策略如下:1. 通过当前所使用DSL的xdef元模型(类似json schema但更紧凑)帮助GPT更快、更精确的理解DSL结构2. 通过可逆计算的差量合并规则,指导GPT直接返回差量描述3. 将返回差量合并到当前模型上,成为新的当前模型,**在此基础上可以无限次与GPT沟通**。

2023-05-12 12:21:45 358

原创 从可逆计算看开源低代码平台Skyve的设计

Skyve的设计采用了一种相对比较传统的后端低代码实现方案,也是目前比较流行的低代码和无代码方案。在本文中,我们将把Skyve的设计和Nop平台的设计做个对比分析,从而帮助大家理解Nop平台的独特之处。

2023-05-12 12:19:40 276

原创 如何在不修改基础产品源码的情况下实现定制化开发

为了最小化同时进行定制化开发和基础产品研发的成本,在理想的情况下,定制化开发不应该修改基础产品的代码,但是基于现有的软件工程理论和通用框架,要实现这一点却困难重重,或者成本非常高。在本文中,我将分析定制化开发之所以陷入困境的技术原因,并介绍Nop平台中如何利用可逆计算原理来提供一种创新的定制能力,它使得应用层代码无需做出任何特殊的设计(比如预先抽象出扩展接口)即可获得完全增量式的定制化开发能力(定制的增量代码完全独立于基础产品代码,定制基础产品或者Nop平台的功能都无需修改原始代码)。

2023-05-12 12:15:20 473

原创 采用Excel作为设计器的开源中国式报表引擎:NopReport

中国式报表是复杂结构报表的代名词,它泛指国内信息化领域经常出现的基于多源数据,采用行列交叉、多层级表头、自由分片合并等形式所展现的信息汇总报表。NopReport是基于可逆计算理论从零开始独立实现的一套开源中国式报表引擎,它的核心代码很短,只有3000多行,具有较高的性能,以及其他报表引擎难以达到的灵活性和可扩展性。

2023-05-12 12:09:05 730 1

原创 从张量积看低代码平台的设计

软件设计中的一个基本问题是可扩展性问题。处理可扩展性问题的一个基本策略是将新的变化要素看作是一个新的维度,然后考察这个维度与已有维度之间的相互作用关系。本文将介绍一个启发式的观点, 它将类似租户扩展这一类具有普遍性的可扩展性问题类比于张量空间通过张量积所实现的扩张过程,并结合可逆计算理论,为这类可扩展性问题提供一个统一的技术解决方案。

2023-05-12 12:01:35 100

原创 支持GraalVM原生编译的开源低代码平台:Nop Platform

Nop平台是基于可逆计算理论从零开始构建的新一代的开源低代码平台,通过Excel数据模型可以自动生成GraphQL服务和前端页面,支持GraalVM原生编译,内置中国式报表引擎、工作流引擎、规则引擎、ORM引擎、批处理引擎等。

2023-05-12 11:46:37 1567 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除