这会不会引起编程范式的变革?

这会不会引起编程范式的变革?

github.com/rainforeste...

计算机从最初为了解决计算问题慢慢演进到现在主要解决软件工程问题,即逻辑问题,但我们能操控计算机的工具(语言、范式)依然停留在为解决计算问题而设计的阶段,在面对逻辑问题时由于这种工具与问题的不匹配衍生了《人月神话》里所说的偶然复杂性,就像用勺子砍树,虽然能勉强做到,但非常难用,而我们却从未质疑过工具是不是本来就用错了,荒谬至极。

从另外一个角度来说,计算机之所以叫"计算机"是因为它最初为了解决计算问题,而现在主要为了解决逻辑问题,那么它应该叫"逻辑机"或"逻辑/计算机",也应该配有解决逻辑问题的工具才对。

这就不得不剖析"计算"与"逻辑"的区别:

  • 计算是步骤、指令,是过程性的,它描述的是一系列在时间上依次发生的动作
  • 逻辑是规则、关系,是声明性的,它描述的是概念之间永恒成立的关系或约束

所以这就解释了现有的操控工具为什么适合计算问题,而不适合逻辑问题。需要创造一种新的工具来解决逻辑问题,并且它的特点一定是声明性的。

就像为了解决计算问题而创造的指令一样,解决逻辑问题也需要把逻辑拆解为最小单元并找到表达方式。因为现有编程语言的指令是解决计算问题的工具,而我们不可能从工具中找到逻辑的最小单元,所以就得忘掉这些,跳出这些,从底层状态机视角去拆解就能得到:

  • 逻辑是一系列状态转移节点所组成的路径
  • 计算是每个状态转移节点的内部转换过程

继续拆解出逻辑的最小单元就是最小化的"状态转移节点",描述从上一个状态到下一个状态的转移。而"状态"在程序中表达为"变量",所以这个逻辑最小单元的表达方式就是:描述从上一个变量到下一个变量的转移,即数据转换。

但这个"数据转换"概念在计算与逻辑的视角却截然不同:

  • 计算关注的是实际的转换过程,它得等到前面变量传过来之后才开始运行
  • 逻辑关注的是抽象的转换方向,它不关心前后变量是否存在,只需要描述好方向就行

所以解决逻辑问题的工具就是:设计一种既可以描述转换方向又无关变量是否存在的新写法

于是就有了这种新编程范式:通过声明式写法把业务逻辑简化为描述数据之间的转换关系。构成简单、稳定、可靠的球状关系网,让程序从刚性结构变为柔性,砸不坏摔不烂,易于维护。

这种范式不仅几乎消除了偶然复杂性还解决了一个以前无解的难题,即使业务逻辑发生变化或规模增长,修改难度也是恒定的,不像传统命令范式会随着规模增长修改难度暴涨。打个比方,使用命令范式编程就像盖楼,每个砖块就是指令,当修改时移动任何一块砖都可能导致崩塌,因为它是顺序向上积累的;而新范式描述的是抽象的关系网,修改只是调整指向关系而已,无关顺序,稳定可靠。(正好救赎不可靠的 AI )

最后总结,其实这代表了一种网状结构的自动状态机,或许是/或贴近程序的最简单形态。

相关推荐
0思必得04 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
东东5164 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino4 小时前
图片、文件的预览
前端·javascript
layman05286 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔6 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李6 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN6 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化
啊哈一半醒6 小时前
CSS 主流布局
前端·css·css布局·标准流 浮动 定位·flex grid 响应式布局
PHP武器库6 小时前
ULUI:不止于按钮和菜单,一个专注于“业务组件”的纯 CSS 框架
前端·css
电商API_180079052477 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫