• 请不要在回答技术问题时复制粘贴 AI 生成的内容
inshua
V2EX  ›  程序员

发布新语言 ago,鼓吹新思维,邀请贡献者:函数即类,调用帧即其实例

  •  
  •   inshua · 10h 43m ago · 566 views

    https://siphonlab.github.io/

    2022 年,我在整理动画、协程、流程引擎等技术时,发现它们在本质上都试图对现实世界中的 “动作 (Action)” 进行形式化表达。通过深入思考,我意识到传统编程语言在描述真实世界动作方面存在严重不足,而这一瓶颈的突破点恰在 Call Frame 的概念。我将 CallFrame 从低层机器机制抽象出来,置于面向对象视角中,并发现对象化的 CallFrame 足以充当对动作的完整表征。基于此观察,我进一步提出 “函数即类、CallFrame 即其实例” 的观点,并据此设计了一门全新的面向对象编程语言——ago(取自世界语中的 Action)。编译器和运行时源码分享在 https://github.com/siphonlab/ago/。

    在以图灵机为基础的程序设计框架中,程序可被视作状态之间连续不断的迁移,而负责完成迁移的正是函数调用。理想化的图灵机假设函数调用是无耗时、不可分割的原子求值过程;从数学函数的抽象角度来看,其执行不包含时间维度,因而无需关注计算所需的具体时长——我们不能谈论求 cos(x) tan(x) 的值要花多久,它们是逻辑活动。然而,在实际硬件与现实世界场景中,每一次状态迁移都必然在时间轴上展开:它可能需要等待外部事件、收集信息并对结果进行处理。传统图灵机模型将函数调用视为单一不可中断的过程,导致单一函数无法表达具有持续性、异步且可被外部因素暂停的动作,例如银行转账、员工请假审批或游戏精灵从点 A 平滑移动到点 B 等等。

    从哲学角度看,这种缺陷并不令人惊讶。亚里士多德式运动观把 kinesis 视为临时过渡状态,强调终点而忽略过程;它更关注结果,而非持续展开的动态。而佛教哲学中的 Saṅkhāra 观念则把运动作为第一本体,类似的,怀特海的过程哲学也认为宇宙由相互关联的事件与过程构成,每个过程拥有完整生命周期——从生成、发展到消亡。这种不同的视角启发我们如何看待现实世界中具有时延性的动作。ago 面向对象编程语言在认知框架上仍以柏拉图‑亚里士多德式为主,但也部分承载了过程哲学式的理念。

    基于上述思考,我得出了 函数即类、CallFrame 即实例 的结论,并通过 ago 语言实现了这一思想,为面向对象编程提供了一种新的视角和工具。

    全文见: https://zenodo.org/records/21256260


    欢迎拍砖

    欢迎加入做贡献

    欢迎投钱

    1 replies    2026-07-08 22:06:21 +08:00
    sora2blue
        1
    sora2blue  
       4h 36m ago
    不明觉厉。如果把调用栈当成可持久化的对象,那么首先就要面对确定性(幂等性)的问题,比如带宽、端口、套接字、CPU 架构、ABI 、磁盘空间、文件描述符甚至日期时间,这个问题怎么解决的呢?如果不能做到,和直接持久化入参的区别在哪里呢?有没有一个完全用这个语言编译构建的项目可供学习一下呢?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   977 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:42 · PVG 02:42 · LAX 11:42 · JFK 14:42
    ♥ Do have faith in what you're doing.