登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
Gitee 2025 年度开源项目评选中
代码拉取完成,页面将自动刷新
开源项目
>
游戏/娱乐
>
游戏
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
3
Star
0
Fork
0
三体自动化技术协会
/
databank
代码
Issues
21
Pull Requests
0
Wiki
统计
流水线
服务
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
您提出的 `commands.queue.sample` 文件格式与之前计划的 JSON 格式有显著区别
待办的
#ICX7UR
xiaochi
成员
创建于
2025-09-10 09:09
您提出的 `commands.queue.sample` 文件格式与之前计划的 JSON 格式有显著区别,各有优劣。考虑到“程序生成,程序读取”以及MVP阶段的实际需求,下面进行详细分析。 ### 原计划的 JSON 格式 根据 `2周计划.md` 文档: * **格式要求**:文件中的每一行代表一个命令,命令内容为 JSON 字符串。 * **示例**:`{"x": 10, "y": 20, "color": "FF0000"}` * **优点**: 1. **标准化和易用性**:JSON 是一种广泛使用的标准数据交换格式,几乎所有编程语言都有成熟、高效的 JSON 解析库和生成库。这大大降低了开发难度和出错率。 2. **自文档化**:JSON 的键值对结构使其更具可读性,例如 `x`、`y`、`color` 等字段名直接说明了数据的含义,降低了理解成本。 3. **可扩展性**:在不破坏现有解析器(如果设计合理)的情况下,可以轻松添加新的字段或命令类型。 4. **数据类型处理**:JSON 自然支持各种数据类型(字符串、数字、布尔值、数组、对象),解析器会自动处理这些类型,减少手动转换的复杂性。 5. **与 HTTP API 一致**:`Server` 接收的 HTTP 请求通常就是 JSON 格式,可以直接将请求体内容或稍作转换后写入 `commands.queue`,保持了数据格式的一致性。 * **缺点**: 1. **冗余**:相较于紧凑的自定义二进制或文本格式,JSON 带有键名、引号、逗号等符号,会占用更多存储空间和带宽(虽然对于命令队列文件来说,这通常不是瓶颈)。 2. **不支持原生注释**:JSON 标准本身不包含注释功能,如果需要在文件中添加解释,通常需要引入额外的约定(例如在 JSON 对象中添加一个 `_comment` 字段)。 ### 您提出的 `commands.queue.sample` 格式 ``` ; 注释,tao见一行删一行 push 0 storm 0 push 1 storm 1 ... push 1 push 0x800000 ... new-vm ``` * **优点**: 1. **简洁性**:对于简单的指令,它的表达可能更紧凑,减少了括号、引号等字符。 2. **代码风格**:更接近汇编语言或虚拟机指令集,与项目的“道机”、“指令”核心概念在形式上更契合,具有一定的“硬核”美学。 3. **原生注释**:支持 `;` 开头的行注释,方便开发者在文件中直接进行解释和标记。 4. **栈式操作**:`push` 后跟指令(如 `storm` 或 `new-vm`)的模式暗示了一种栈式虚拟机模型,这在设计底层执行逻辑时可能更直观。 * **缺点**: 1. **需要自定义解析器**:这是最大的缺点。您需要从头编写和维护一个能够解析此自定义格式的程序,包括词法分析、语法分析、错误处理等。这需要额外的开发时间和精力,且容易引入bug。 2. **可读性与自文档化不足**:虽然简洁,但其可读性不如 JSON 直观。例如,`push 0x800000` 后跟 `new-vm`,不查看文档很难理解 `0x800000` 具体代表 `code-begin` 还是 `ram-begin`。 3. **错误处理复杂**:自定义解析器在处理格式错误、参数缺失或类型不匹配时,需要更复杂的逻辑来提供友好的错误信息,不像 JSON 解析器那样可以直接抛出标准的解析异常。 4. **可扩展性挑战**:如果未来指令的参数数量或类型发生变化,可能需要修改解析器,这比 JSON 添加/删除字段更复杂。 5. **与 HTTP API 脱节**:`Server` 端接收 JSON 格式的 HTTP 请求后,需要将其解析并转换为这种自定义格式才能写入文件,增加了转换的复杂性。 6. **命令消费逻辑**:文件中提到了“tao见一行删一行”,并且包含 `__END__` 标记,这表示 `tao` 需要维护文件的状态(删除已处理行),这比直接处理独立的 JSON 字符串列表要复杂。 7. **MVP 范围不匹配**:您提出的示例包含了 `new-vm`, `del-vm`, `insert-coin` 等复杂指令,但根据 `2周计划.md`,MVP阶段只实现 `SET_COLOR` 和 `NOP` 指令,且“道机”只有一个全局实例,不涉及创建/删除虚拟机和投币。将不属于MVP范围的复杂指令格式引入,增加了不必要的开销和潜在的混淆。 ### 分析与建议 从**MVP(最小可行产品)**以及“程序生成,程序读取”的效率和稳定性角度来看,**原计划的 JSON 格式是更合适的选择**。 1. **降低MVP开发风险**:MVP阶段的目标是快速验证核心技术链路。采用标准 JSON 可以避免在自定义解析器上投入大量时间,将更多精力集中在 `tao` 的核心逻辑(内存管理、指令执行)和 `Server` 的接口实现上。 2. **易于实现**:无论是 `Server` 写入 `commands.queue`,还是 `tao` 读取和解析,使用现有 JSON 库都远比编写自定义解析器简单快捷。 3. **与文档保持一致**:`2周计划.md` 已明确规定了 `commands.queue` 的 JSON 格式。更改格式会增加沟通成本并偏离已有的计划。 **对于您提出的指令风格的思考:** 这种类汇编的指令风格确实与“道机”和“数据即指令”的理念非常契合,具有强烈的技术美感。但是,这更适合作为**“道机”内部执行的指令集(ISA)的文本表示**,而不是**玩家通过 `Server` 向系统提交的高级命令**。 **建议的路线:** * **MVP 阶段(两周计划)**: * **`commands.queue` 文件格式**:严格按照原计划,使用**JSON 格式**。 * **命令内容**:仅包含 `SET_COLOR` 的 JSON 字符串,例如:`{"type": "SET_COLOR", "x": 10, "y": 20, "color": "FF0000"}`。请注意 `color` 在 `2周计划.md` 中提到 `tao` 编码可能是1个字节,如果 `FF0000` 是6位十六进制RGB字符串,则 `tao` 需要将其转换为1字节颜色。为简化MVP,可以直接使用1字节颜色的JSON表示,例如 `{"type": "SET_COLOR", "x": 10, "y": 20, "color_byte": 255}`。 * **`tao` 处理**:`tao` 从 `commands.queue` 读取 JSON 字符串,解析出 `x`, `y`, `color_byte`,并将其应用到 `mem.img` 的内存副本。 * **未来发展(MVP之后)**: * 当项目进入更复杂的阶段,需要引入 `MOV`, `ADD`, `JMP`, `new-vm` 等指令时,可以考虑在 `tao` 内部实现一个**真正的虚拟机指令集 (ISA)**。 * **玩家的 HTTP API 依然保持 JSON 格式**,例如玩家提交 `POST /start_tao` API,其请求体是 JSON。 * `Server` 收到这些高级的 JSON 请求后,经过权限验证、资源扣费,**将其翻译成一系列底层“道机”指令(可能就是您示例中的 `push ... new-vm` 风格的内部指令)**,然后这些内部指令可以: 1. 直接写入到 `bank.db` 的 `TaoMachineConfigs` 表中(作为 `RegistersState` 或 `ProgramCode` 字段)。 2. 或者,如果需要更复杂的指令序列,可以考虑将这些内部指令序列(可能是二进制编码,或自定义文本格式)写入到 `mem.img` 的特定内存区域中,由该区域的“道机”执行。 * 这样,`commands.queue` 可以继续作为 `Server` 和 `tao` 之间传递**玩家高级请求**的队列,保持简洁和标准。而您提出的“类汇编”格式则成为**“道机”实际执行的底层指令集**,更贴合项目的深层概念。 综上所述,为了MVP的顺利进行和降低开发复杂性,请**继续使用 JSON 格式作为 `commands.queue` 的标准**。您提出的类汇编格式可以作为未来设计“道机”的底层指令集时的一个优秀参考。
您提出的 `commands.queue.sample` 文件格式与之前计划的 JSON 格式有显著区别,各有优劣。考虑到“程序生成,程序读取”以及MVP阶段的实际需求,下面进行详细分析。 ### 原计划的 JSON 格式 根据 `2周计划.md` 文档: * **格式要求**:文件中的每一行代表一个命令,命令内容为 JSON 字符串。 * **示例**:`{"x": 10, "y": 20, "color": "FF0000"}` * **优点**: 1. **标准化和易用性**:JSON 是一种广泛使用的标准数据交换格式,几乎所有编程语言都有成熟、高效的 JSON 解析库和生成库。这大大降低了开发难度和出错率。 2. **自文档化**:JSON 的键值对结构使其更具可读性,例如 `x`、`y`、`color` 等字段名直接说明了数据的含义,降低了理解成本。 3. **可扩展性**:在不破坏现有解析器(如果设计合理)的情况下,可以轻松添加新的字段或命令类型。 4. **数据类型处理**:JSON 自然支持各种数据类型(字符串、数字、布尔值、数组、对象),解析器会自动处理这些类型,减少手动转换的复杂性。 5. **与 HTTP API 一致**:`Server` 接收的 HTTP 请求通常就是 JSON 格式,可以直接将请求体内容或稍作转换后写入 `commands.queue`,保持了数据格式的一致性。 * **缺点**: 1. **冗余**:相较于紧凑的自定义二进制或文本格式,JSON 带有键名、引号、逗号等符号,会占用更多存储空间和带宽(虽然对于命令队列文件来说,这通常不是瓶颈)。 2. **不支持原生注释**:JSON 标准本身不包含注释功能,如果需要在文件中添加解释,通常需要引入额外的约定(例如在 JSON 对象中添加一个 `_comment` 字段)。 ### 您提出的 `commands.queue.sample` 格式 ``` ; 注释,tao见一行删一行 push 0 storm 0 push 1 storm 1 ... push 1 push 0x800000 ... new-vm ``` * **优点**: 1. **简洁性**:对于简单的指令,它的表达可能更紧凑,减少了括号、引号等字符。 2. **代码风格**:更接近汇编语言或虚拟机指令集,与项目的“道机”、“指令”核心概念在形式上更契合,具有一定的“硬核”美学。 3. **原生注释**:支持 `;` 开头的行注释,方便开发者在文件中直接进行解释和标记。 4. **栈式操作**:`push` 后跟指令(如 `storm` 或 `new-vm`)的模式暗示了一种栈式虚拟机模型,这在设计底层执行逻辑时可能更直观。 * **缺点**: 1. **需要自定义解析器**:这是最大的缺点。您需要从头编写和维护一个能够解析此自定义格式的程序,包括词法分析、语法分析、错误处理等。这需要额外的开发时间和精力,且容易引入bug。 2. **可读性与自文档化不足**:虽然简洁,但其可读性不如 JSON 直观。例如,`push 0x800000` 后跟 `new-vm`,不查看文档很难理解 `0x800000` 具体代表 `code-begin` 还是 `ram-begin`。 3. **错误处理复杂**:自定义解析器在处理格式错误、参数缺失或类型不匹配时,需要更复杂的逻辑来提供友好的错误信息,不像 JSON 解析器那样可以直接抛出标准的解析异常。 4. **可扩展性挑战**:如果未来指令的参数数量或类型发生变化,可能需要修改解析器,这比 JSON 添加/删除字段更复杂。 5. **与 HTTP API 脱节**:`Server` 端接收 JSON 格式的 HTTP 请求后,需要将其解析并转换为这种自定义格式才能写入文件,增加了转换的复杂性。 6. **命令消费逻辑**:文件中提到了“tao见一行删一行”,并且包含 `__END__` 标记,这表示 `tao` 需要维护文件的状态(删除已处理行),这比直接处理独立的 JSON 字符串列表要复杂。 7. **MVP 范围不匹配**:您提出的示例包含了 `new-vm`, `del-vm`, `insert-coin` 等复杂指令,但根据 `2周计划.md`,MVP阶段只实现 `SET_COLOR` 和 `NOP` 指令,且“道机”只有一个全局实例,不涉及创建/删除虚拟机和投币。将不属于MVP范围的复杂指令格式引入,增加了不必要的开销和潜在的混淆。 ### 分析与建议 从**MVP(最小可行产品)**以及“程序生成,程序读取”的效率和稳定性角度来看,**原计划的 JSON 格式是更合适的选择**。 1. **降低MVP开发风险**:MVP阶段的目标是快速验证核心技术链路。采用标准 JSON 可以避免在自定义解析器上投入大量时间,将更多精力集中在 `tao` 的核心逻辑(内存管理、指令执行)和 `Server` 的接口实现上。 2. **易于实现**:无论是 `Server` 写入 `commands.queue`,还是 `tao` 读取和解析,使用现有 JSON 库都远比编写自定义解析器简单快捷。 3. **与文档保持一致**:`2周计划.md` 已明确规定了 `commands.queue` 的 JSON 格式。更改格式会增加沟通成本并偏离已有的计划。 **对于您提出的指令风格的思考:** 这种类汇编的指令风格确实与“道机”和“数据即指令”的理念非常契合,具有强烈的技术美感。但是,这更适合作为**“道机”内部执行的指令集(ISA)的文本表示**,而不是**玩家通过 `Server` 向系统提交的高级命令**。 **建议的路线:** * **MVP 阶段(两周计划)**: * **`commands.queue` 文件格式**:严格按照原计划,使用**JSON 格式**。 * **命令内容**:仅包含 `SET_COLOR` 的 JSON 字符串,例如:`{"type": "SET_COLOR", "x": 10, "y": 20, "color": "FF0000"}`。请注意 `color` 在 `2周计划.md` 中提到 `tao` 编码可能是1个字节,如果 `FF0000` 是6位十六进制RGB字符串,则 `tao` 需要将其转换为1字节颜色。为简化MVP,可以直接使用1字节颜色的JSON表示,例如 `{"type": "SET_COLOR", "x": 10, "y": 20, "color_byte": 255}`。 * **`tao` 处理**:`tao` 从 `commands.queue` 读取 JSON 字符串,解析出 `x`, `y`, `color_byte`,并将其应用到 `mem.img` 的内存副本。 * **未来发展(MVP之后)**: * 当项目进入更复杂的阶段,需要引入 `MOV`, `ADD`, `JMP`, `new-vm` 等指令时,可以考虑在 `tao` 内部实现一个**真正的虚拟机指令集 (ISA)**。 * **玩家的 HTTP API 依然保持 JSON 格式**,例如玩家提交 `POST /start_tao` API,其请求体是 JSON。 * `Server` 收到这些高级的 JSON 请求后,经过权限验证、资源扣费,**将其翻译成一系列底层“道机”指令(可能就是您示例中的 `push ... new-vm` 风格的内部指令)**,然后这些内部指令可以: 1. 直接写入到 `bank.db` 的 `TaoMachineConfigs` 表中(作为 `RegistersState` 或 `ProgramCode` 字段)。 2. 或者,如果需要更复杂的指令序列,可以考虑将这些内部指令序列(可能是二进制编码,或自定义文本格式)写入到 `mem.img` 的特定内存区域中,由该区域的“道机”执行。 * 这样,`commands.queue` 可以继续作为 `Server` 和 `tao` 之间传递**玩家高级请求**的队列,保持简洁和标准。而您提出的“类汇编”格式则成为**“道机”实际执行的底层指令集**,更贴合项目的深层概念。 综上所述,为了MVP的顺利进行和降低开发复杂性,请**继续使用 JSON 格式作为 `commands.queue` 的标准**。您提出的类汇编格式可以作为未来设计“道机”的底层指令集时的一个优秀参考。
评论 (
1
)
登录
后才可以发表评论
状态
待办的
待办的
进行中
已完成
已关闭
负责人
未设置
标签
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (2)
标签 (1)
master
zsh
TAO1
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(1)
NodeJS
1
https://gitee.com/wu-org/databank.git
[email protected]
:wu-org/databank.git
wu-org
databank
databank
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册