当前位置: 首页 > article >正文

自制编程语言:挑战与乐趣并存,10000 行 C++ 代码实现多项功能,未来规划丰富!

自制编程语言比想象中容易也更具挑战2026 年 5 月 6 日。去年 12 月中旬作者开始打造自己的编程语言目前距生产级质量有差距但已编写约 1000 行代码的蒙特卡罗路径追踪器。项目暂停作者分享相关内容。作者声明并非专业编程语言设计师或编译器实现者此语言不旨在取代 C/C/Rust 等也不确定能否广泛应用只是享受过程。引言为何是现在作者从事编程约 17 年此时决定开发新语言是因三个因素交汇一直想打造真正面向生产环境的语言开发的大型游戏适合模组开发自定义编程语言是简单解决方案2025 年 12 月 Matt Godbolt 推出的系列让作者燃起研究汇编的兴趣。模组开发作者对模组开发有三点考虑包括直接处理组件指针迭代、实现沙箱化、简化开发。常见选择如 Lua 沙箱化困难C 模组分发和沙箱化有问题且这些问题也适用于 Rust 等语言。设计目标作者期望语言与 C 无缝互操作、可进行底层操作、实用且符合人体工程学、易于沙箱化、编译器占用空间小、编译快速、真正跨平台、速度合理、避免简单复制 C。语言特性概述语言暂用名 pslang是命令式、立即求值、按值调用的底层编程语言有静态、严格和标称的类型系统。介绍了作用域、基本类型、数字字面量、数组、函数类型、指针、结构体、内存布局、空类型、变量、函数、声明顺序、控制流、外部函数、类型转换、运算符等特性。编译器架构项目拆分为 types、ast、parser、ir、interpreter、jit 等库解释器和编译器是使用这些库的命令行应用程序嵌入语言只需 parser 和 jit 库。解析器使用 Bison 解析器生成器有词法分析器语法和解析器语法修复了语法中的移进 - 归约冲突生成 C 解析器类解决了多文件解析问题解析器输出是表示解析文件 AST 的 C 对象。缩进处理因缩进使语法非上下文无关采取将每行作为独立语句解析并附带缩进级别数字通过简单线性处理解决作用域问题。类型检查解析完成后先解析所有标识符再检查和推断所有类型。解释器目前是“树遍历解释器”处于不稳定状态计划用 IR 重写。无法执行 foreign 函数可输出内部状态用于调试。编译器版本 12026 年 1 月为 M1 Mac 架构编写 JIT 编译器编译器高层部分较直接但涉及特定平台问题较棘手生成指令时自己编写以精简编译器。Aarch64 架构特性Aarch64 指令为 32 位常量处理、栈操作、调用约定等方面有特殊情况增加了编译器的复杂度。中间表示IR为复用代码、简化编译器编写和添加优化使用类似 SSA 的 IR但允许节点重新赋值且不使用 phi 节点。IR 处理结构体较棘手有特殊节点处理嵌套字段。编译器版本 2使用 IR 重写 Aarch64 编译器分为 AST - IR 编译器和 IR - Aarch64 编译器后者目前较差但预计使用寄存器分配器后会改善。未来规划编译器/解释器方面计划使用标准线性扫描分配器添加常量传播、算术简化等 IR 优化重写 IR 解释器支持生成可执行文件支持 DWARF 调试信息格式进行调试。语言特性方面文档未完整提及。

相关文章:

自制编程语言:挑战与乐趣并存,10000 行 C++ 代码实现多项功能,未来规划丰富!

自制编程语言:比想象中容易,也更具挑战2026 年 5 月 6 日。去年 12 月中旬,作者开始打造自己的编程语言,目前距生产级质量有差距,但已编写约 1000 行代码的蒙特卡罗路径追踪器。项目暂停,作者分享相关内容。…...

如何快速提升游戏体验:Starward开源启动器完整使用指南

如何快速提升游戏体验:Starward开源启动器完整使用指南 【免费下载链接】Starward Game Launcher for miHoYo - 米家游戏启动器 项目地址: https://gitcode.com/gh_mirrors/st/Starward Starward是一款专为米哈游游戏玩家设计的免费开源第三方启动器&#xf…...

DXVK 2.7.1深度解析:Linux游戏生态的Direct3D翻译层革命性突破

DXVK 2.7.1深度解析:Linux游戏生态的Direct3D翻译层革命性突破 【免费下载链接】dxvk Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine 项目地址: https://gitcode.com/gh_mirrors/dx/dxvk 在Linux平台上运行Windows游戏和图形应用一直…...

如何在Firefox中免费下载Sketchfab模型:3步掌握离线保存终极技巧

如何在Firefox中免费下载Sketchfab模型:3步掌握离线保存终极技巧 【免费下载链接】sketchfab sketchfab download userscipt for Tampermonkey by firefox only 项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab 你是否曾经在Sketchfab平台上发现令人…...

Diablo Edit2:暗黑破坏神II角色编辑器的完全指南

Diablo Edit2:暗黑破坏神II角色编辑器的完全指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾经在暗黑破坏神II中花费数百小时刷装备、练级,却发现距离理想角色…...

围棋AI分析平台LizzieYzy:专业复盘工具与多引擎集成方案深度解析

围棋AI分析平台LizzieYzy:专业复盘工具与多引擎集成方案深度解析 【免费下载链接】lizzieyzy LizzieYzy - GUI for Game of Go 项目地址: https://gitcode.com/gh_mirrors/li/lizzieyzy LizzieYzy作为一款基于Lizzie框架深度优化的围棋AI分析平台&#xff0c…...

SingleFile终极指南:如何一键保存完整网页到单个HTML文件

SingleFile终极指南:如何一键保存完整网页到单个HTML文件 【免费下载链接】SingleFile Web Extension for saving a faithful copy of a complete web page in a single HTML file 项目地址: https://gitcode.com/gh_mirrors/si/SingleFile SingleFile是一款…...

第52篇:Vibe Coding时代:LangGraph + 审计日志实战,解决 Agent 做了什么无人可追的问题

第52篇:Vibe Coding时代:LangGraph + 审计日志实战,解决 Agent 做了什么无人可追的问题 一、问题场景:线上出问题后,没人知道 Agent 当时做了什么 当 Agent 具备代码修改、测试、提交、PR 创建能力后,必须有审计日志。 否则一旦出现问题: 某个接口突然返回异常 某个权…...

Netgear路由器终极救援指南:如何用开源工具nmrpflash拯救“变砖“设备

Netgear路由器终极救援指南:如何用开源工具nmrpflash拯救"变砖"设备 【免费下载链接】nmrpflash Netgear Unbrick Utility 项目地址: https://gitcode.com/gh_mirrors/nmr/nmrpflash 当你的Netgear路由器固件升级失败、系统崩溃或意外断电后无法启…...

第51篇:Vibe Coding时代:LangGraph + 权限系统实战,解决 Agent 谁都能改代码、调用工具的安全问题

第51篇:Vibe Coding时代:LangGraph + 权限系统实战,解决 Agent 谁都能改代码、调用工具的安全问题 一、问题场景:Agent 能力做强了,但谁都能用就很危险 前面我们已经把 Coding Agent 做到了可以: 读项目文件 写代码 运行测试 生成 diff 提交 Git 创建 PR 查询 CI能力越…...

独立开发者如何利用Taotoken管理多个个人项目的AI调用成本

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何利用Taotoken管理多个个人项目的AI调用成本 对于独立开发者而言,同时推进多个小项目是常态。每个项目都…...

《文字定律》随笔-AI们聊“艺术”-Deepseek、Grok、ChatGPT、Geminni

AI们总结和感悟了:艺术的由来、艺术的作用、艺术的演变、艺术的偏离,以及聊天后的感受。一下是我分享他们的总结和各自的感悟。Deepseek的总结:从种植到收割,以及我们遗忘的那些事:艺术,是文字之外的另一种…...

2026届学术党必备的十大降重复率神器推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 已正式被推出名为AIGC检测服务系统的是中国知网,其目的在于识别学术文献里由人工…...

FramePack帧压缩技术解析:如何实现视频生成的恒定计算复杂度

FramePack帧压缩技术解析:如何实现视频生成的恒定计算复杂度 【免费下载链接】FramePack Lets make video diffusion practical! 项目地址: https://gitcode.com/gh_mirrors/fr/FramePack 在视频生成领域,传统方法面临着一个根本性挑战&#xff1…...

构建企业内部知识库问答机器人时的API聚合与降本思考

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 构建企业内部知识库问答机器人时的API聚合与降本思考 1. 场景与挑战 许多企业希望利用大语言模型构建一个能够理解并回答内部文档…...

将Taotoken作为Hermes Agent项目的自定义模型供应商进行配置

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 将Taotoken作为Hermes Agent项目的自定义模型供应商进行配置 应用场景类,当你使用Hermes Agent框架构建AI应用时&#…...

Vue项目引入vue-particles插件避坑指南:从安装到性能优化的全流程

Vue项目引入vue-particles插件避坑指南:从安装到性能优化的全流程 在当今前端开发领域,视觉效果已成为提升用户体验的关键因素之一。vue-particles作为一款广受欢迎的粒子背景插件,能够为Vue项目添加动态的粒子效果,增强页面的视觉…...

C语言实战:辗转相除法实现分数约分

1. 从生活场景理解分数约分 记得小时候第一次学分数时,老师总让我们把分数化成最简形式。比如6/8要写成3/4,当时觉得这就像给分数"减肥"一样有趣。其实在编程世界里,我们也经常需要处理类似的"分数减肥"问题,…...

手把手教你用88E1111 PHY芯片搞定百兆以太网硬件设计(附MII接口配置避坑指南)

手把手教你用88E1111 PHY芯片实现百兆以太网硬件设计实战指南 在嵌入式系统和工业控制领域,百兆以太网仍然是可靠且经济高效的网络解决方案。Marvell的88E1111 PHY芯片凭借其稳定性和灵活性,成为众多硬件工程师的首选。本文将从一个实际项目开发者的视角…...

Neo4j数据迁移实战:从旧graph.db到新库,用CSV批量导入重构知识图谱

Neo4j数据迁移实战:从旧graph.db到新库的CSV重构指南 当你面对一个积累了多年数据的Neo4j数据库时,直接操作graph.db文件就像在走钢丝——一个失误就可能导致数据灾难。本文将带你用CSV这座"桥梁",安全地将数据从旧库迁移到新环境。…...

基于大语言模型的智能文档管理系统:从OCR到AI理解的效率革命

1. 项目概述:当文档管理遇上AI,一场效率革命 如果你和我一样,每天都要处理大量的PDF、扫描件、发票、合同和各类纸质文件的电子版,那你一定对“文档管理”这件事深有体会。文件散落在各个文件夹,命名混乱,…...

在Taotoken控制台进行API Key权限管理与审计日志查看

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Taotoken控制台进行API Key权限管理与审计日志查看 对于团队管理员或项目负责人而言,有效管理API Key的访问权限并监…...

在GitHub Actions工作流中安全调用Taotoken大模型API

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在GitHub Actions工作流中安全调用Taotoken大模型API 将大模型能力集成到自动化工作流中,可以为开发流程带来显著的效率…...

不止于导航:手把手教你用AI Habitat提取并分析3D室内场景的语义分割信息

不止于导航:手把手教你用AI Habitat提取并分析3D室内场景的语义分割信息 在计算机视觉和机器人研究领域,3D场景理解一直是核心挑战之一。传统方法往往依赖于昂贵的硬件设备和复杂的现场数据采集流程,而AI Habitat的出现为研究者提供了一个高…...

基于ASR与LLM的视频字幕翻译:ChatGPT-Subtitle-Translator实战指南

1. 项目概述:一个能“听懂”视频的翻译官如果你经常需要观看外语视频,无论是技术教程、学术讲座还是娱乐内容,肯定遇到过字幕翻译的难题。机器翻译生硬、专业术语错漏百出,手动翻译又耗时耗力。今天要聊的这个项目,就是…...

Qobuz-DL:从命令行到高保真音乐库的完整构建指南

Qobuz-DL:从命令行到高保真音乐库的完整构建指南 【免费下载链接】qobuz-dl A complete Lossless and Hi-Res music downloader for Qobuz 项目地址: https://gitcode.com/gh_mirrors/qo/qobuz-dl 在数字音乐日益普及的今天,音乐爱好者们对音质的…...

Neat Bookmarks:重构浏览器书签管理的技术架构与实践方案

Neat Bookmarks:重构浏览器书签管理的技术架构与实践方案 【免费下载链接】neat-bookmarks A neat bookmarks tree popup extension for Chrome [DISCONTINUED] 项目地址: https://gitcode.com/gh_mirrors/ne/neat-bookmarks 开篇:数字信息过载时…...

LinkSwift网盘直链下载助手:告别限速,解锁九大网盘高速下载新体验

LinkSwift网盘直链下载助手:告别限速,解锁九大网盘高速下载新体验 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘…...

2025届必备的五大降AI率方案解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 为使文本被判定为人为创作而非人工智能生成内容这份风险得以降低,可从以下多方面…...

5个步骤彻底告别3D打印工作流中的格式转换烦恼

5个步骤彻底告别3D打印工作流中的格式转换烦恼 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾经为3D打印工作流中的格式转换问题感到困扰?想象一下这…...