Snow编程语言心路历程
1. Snow 心路历程
1.1 Snow 简介
由 Java 语言编写的虚拟机与编译器,专为大型语言模型(LLM)量身定制的编程语言。项目链接
1.2 背景与目标读者
自 ChatGPT 3.5 诞生以来,越来越多的个人和企业将 LLM 生成的代码融入日常开发与自动化。然而,实践证明:LLM 生成的代码虽然“看起来没问题”,却常因对底层语言细节把握不准导致微妙 Bug——比如运算符优先级混淆、作用域处理错误、甚至基础库调用都无法编译通过。
于是,我萌生了这样一个想法:能否设计一门编程语言,让 LLM 在“语法层面”能够更精准、高效地理解和生成代码?
传统编程语言的设计多偏重“计算机”的执行效率,程序员往往在抽象表达和底层性能之间不断权衡。Ruby 之父松本行弘提出“为人而不是为机器编程”的理念。而在 LLM 日益普及的今天,我们应当承认:大型模型正成为“超级程序员”,它们不仅是助手,更是“代码生产的中介”。如果一门语言的语法和设计能最大化发挥 LLM 的推理与生成能力,人机协作的效率将被极大提升。
因此,Snow 的使命是:让脚本语言不再“让人头疼”,而是“让 LLM 更加从容地书写”。目标受众涵盖 LLM 爱好者、开发者、对编译原理感兴趣的学生,以及对性能有追求的工程师甚至是初学者——每个人都能在 Snow 中找到乐趣与成长。
1.3 文章目的
本文将带你完整体验 Snow 从零到 v0.1 的诞生历程,围绕四个核心目标:
- 兴趣驱动的坚持:用真实经历激励更多人相信“兴趣是最好的动力”,哪怕工作再忙,也能靠热爱坚持探索。
- 从规划到实践的拆解:详解在有限资源下,如何一步步拆解出词法分析、语法解析、AST 构建、解释执行等关键模块,以“先可用后完备”为原则,稳步推进。
- 经验与反思:不仅有“成功输出 1+1=2”的成就感,也有调试死循环、运算符冲突等踩坑经历,全方位展示编程语言设计的挑战与思考。
- 激励与号召:希望 Snow 成为开源社区的新起点,邀请更多伙伴参与,见证从 v0.2、v1.0 甚至到未来并发、标准库、包管理等更大梦想的实现。
2. 项目缘起与动机
2.1 现有工具的痛点
- 脚本语言过于灵活,缺乏规范 常见的脚本语言如 Python、PHP、Ruby,虽然语法简洁、上手快,但“灵活性”本身也带来了不少隐患:变量类型可以随意变化,作用域和命名规则宽松,团队协作时代码风格极易失控,隐蔽 Bug 难以及时发现。自动化运维和日常数据处理脚本往往随手一写,维护与交接时却漏洞百出、沟通成本高。许多开发者都在思考:如果有一门语法严谨、行为可预测,并天然适合团队协作与 LLM 生成的脚本语言,是不是能让代码质量和工程效率都上一个台阶?
- 缺乏专为 LLM 设计的脚本语言 当下主流编程语言,基本都是“为人类程序员”而设计,很少考虑 LLM 的生成和推理习惯。比如:部分语法容易混淆,作用域和可见性规则不直观,LLM 在生成时不仅需要大量提示,结果还常常不理想。缺少一门语法清晰、特征单一、对 LLM 友好的脚本语言,导致自动化和智能生成代码场景下,仍然存在很多不可控和效率瓶颈。
2.2 触发想法的场景
- 对高效与规范的需求日益突出 在实际开发和运维工作中,我们经常要写各种自动化脚本。由于编程语言过于灵活,代码风格极易失控,维护起来痛苦不堪。团队中常常讨论:能否有一门语法严谨、易于规范化、适合团队协作的脚本语言?大家都希望提升代码质量,减少后期返工。
- 自研编程语言的大胆设想 随着 LLM 在自动化、辅助编程中的应用普及,越来越多场景下希望直接“让 LLM 写代码”。但事实是,不管是让 LLM 生成 Python 还是 PHP,总要写很多提示,还要人工修正各种细节。由此引发思考:如果有一门对 LLM 友好的脚本语言,语法特征清晰、行为可预测,能不能大幅提升代码自动生成与落地的效率?
2.3 项目愿景
- 语法严谨、协作友好,降低维护成本 Snow 的首要目标是打造一门结构清晰、语法规范的编程语言,让团队成员在协作开发、交接维护脚本时,不再被各式各样的“灵活写法”困扰。通过约定明确、易读易写的语法,让代码风格自然统一,极大降低维护与沟通成本。
- 为 LLM 生成量身设计,提升自动化与智能化编程体验 Snow 从设计之初就充分考虑大型语言模型(LLM)的生成与理解特性,语法特征清晰、指令表达直观,方便 LLM 高效、准确地生成编程语言。无论是日常自动化、数据处理,还是和 LLM 配合进行代码批量生产、校验,都能极大提升人机协作效率。
- 轻量高效,逐步扩展性能与生态 在保证“开箱即用”的体验前提下,Snow 注重执行效率,力争做到比传统解释型脚本更快、资源占用更低。随着版本迭代,将逐步引入并发机制、标准库扩展以及跨平台支持,让 Snow 既可嵌入大型系统、也适合高效开发微服务或日常自动化脚本,最终发展为既利于团队协作,也能支撑 LLM 驱动智能开发的现代编程语言。
3. 开源决策与第一次公开
3.1 为什么开源
- 获得社区反馈,检验设计思路:闭门造车易“自嗨”,开源能快速获得用户和专家的多视角建议。
- 边开源边完善,更吸引贡献者:功能精简但可用时就发布,容易吸引早期用户参与共建。
3.2 开源准备工作
- 许可证选择: 采用 Apache-2.0,最大程度降低贡献门槛。
3.3 项目运行输出
## 源代码 (main.snow) module: Main import:Math function: main parameter: return_type: int body: Math.factorial(6L,1L) return 0 end body end function end module ## 源代码 (test.snow) module: Math function: factorial parameter: declare n1: long declare n2: long return_type: long body: return n1+n2 end body end function end module ## 编译器输出 ### AST [ { "type": "Module", "name": "Main", "imports": [ { "module": "Math", "type": "Import" } ], "functions": [ { "type": "Function", "name": "main", "parameters": [ ], "returnType": "int", "body": [ { "type": "ExpressionStatement", "expression": { "type": "CallExpression", "callee": { "type": "MemberExpression", "object": { "type": "Identifier", "name": "Math" }, "member": "factorial" }, "arguments": [ { "type": "NumberLiteral", "value": "6L" }, { "type": "NumberLiteral", "value": "1L" } ] } }, { "type": "Return", "value": { "type": "NumberLiteral", "value": "0" } } ] } ] }, { "type": "Module", "name": "Math", "imports": [ ], "functions": [ { "type": "Function", "name": "factorial", "parameters": [ { "type": "long", "name": "n1" }, { "type": "long", "name": "n2" } ], "returnType": "long", "body": [ { "type": "Return", "value": { "type": "BinaryExpression", "left": { "type": "Identifier", "name": "n1" }, "operator": "+", "right": { "type": "Identifier", "name": "n2" } } } ] } ] } ] ### IR func main() { %0 = CONST 6 %1 = CONST 1 %2 = CALL Math.factorial, %0, %1 %3 = CONST 0 RET %3 } func factorial(%0, %1) { %2 = ADD_L64 %0, %1 RET %2 } ### VM code 112 6 152 0 112 1 152 1 162 0 162 1 201 12 2 152 2 111 0 151 3 161 3 255 162 0 162 1 11 152 2 162 2 202 Calling function at address: 12 Return 7 Process has ended ### VM Local Variable Table: 0: 6 1: 1 2: 7 3: 0
4. 从 v0.1 到 v0.2 / v1.0 的计划与展望
4.1 v0.2 初步目标
- 完善变量作用域与高级函数调用: 支持函数参数、返回值、本地与全局变量隔离,以及闭包基础,为并发/异步打基础。
- 完善错误提示与调试信息: 报错更精准,方便新手调试。
- 预计发布日期:2025 年 7 月 30 日
4.2 v0.3 目标
4.3 v1.0 长期规划
- 初步标准库: I/O、字符串、JSON、文件系统,满足日常脚本需求。
- 包管理与模块加载: 设计
snowpkg
,支持一键安装依赖、自动模块导入。 - 社区协作与贡献: 开设设计讨论区、每月线上分享,鼓励贡献代码与案例,让更多人参与 Snow 的成长。
5. 个人感言与号召
5.1 学习收获与成就感
回望从零到 v0.1 的历程,我最开始设计了虚拟机,然后设计的编译器,最震撼的是:让一个想法变成可运行的代码,哪怕只输出一句“Hello, Snow!”也足以令人热血沸腾。每一次 Snow 在屏幕上输出,都让我更深刻理解了编译原理的乐趣。
5.2 技术敬畏与情感共鸣
也许有人会说“输出一句话算什么”,但其实,每一个简单的表达式背后,都凝结了无数技术细节:多字符运算符的处理、优先级解析、AST 与符号表、作用域管理、底层 GC 可行性……每一环都让人敬畏计算机科学之美。
5.3 欢迎你的加入
真诚邀请所有对编程语言、编译原理、LLM 应用感兴趣的小伙伴:
- 在 Gitee 提交 Issue,反馈使用体验和建议;
- Fork 仓库、贡献 PR,参与语法和功能共建;
- 加入讨论群,与社区探讨 Snow 如何更适配 LLM 未来需求;
- 撰写教程、录制视频,让更多人了解 Snow 的故事。
联系方式(直接和作者对话和加入群聊): 微信: xuxiaolankaka QQ: 1399528359
对于从未写过语言的初学者,我想说:不要害怕,从 Hello World 开始,你会发现编译原理其实很有趣。 让我们一起,把 Snow 打造为兼顾 LLM 友好和人类易用的创新编程语言。也许,下一个改变编程世界的创举,就在我们手中诞生。
致谢 感谢每一位为 Snow 提出建议、陪我深夜调试的朋友。是你们的批评与鼓励,让 Snow 一路成长。让我们共同期待 Snow 走得更远、更高、更强!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
小米 Mi-BRAG 获中国信通院可信 AI RAG 评估最高等级
小米技术官博发文称,2025年5月,小米自研智能知识库问答框架—Mi-BRAG顺利通过中国信息通信研究院(以下简称“中国信通院”)组织的“可信AI检索增强生成(RAG)”评估,并获当前最高评级4+级。 Mi-BRAG是小米大模型团队自主研发的智能知识库问答框架,该框架通过四大核心技术体系重构知识处理范式,支持多场景定制化的智能知识问答技术方案。目前Mi-BRAG已在公司多个场景中落地,包括小爱同学的个人信息问答、汽车问答助手、商品问答等。 此次评估依据中国信通院发布的《检索增强生成技术要求与评估方法》标准进行,该标准体系覆盖RAG技术的两大核心能力(技术能力与应用能力)、六个关键能力子域及二十余项能力项。在25项能力评估中,Mi-BRAG表现亮眼,23项能力获得5分,尤其在知识接入、检索、生成、优化等核心技术能力,以及调用方式、安全性等应用能力上均获满分。 此外,2025年4月Mi-BRAG在第三方评测机构SuperCLUE-RAG的评估中取得第一名的成绩。
- 下一篇
重磅!支持鸿蒙!腾讯视频 ovCompose 跨平台框架发布
背景 随着鸿蒙的推出,客户端跨平台需求被推到了前所未有的高度,单纯的 UI 跨端已无法满足业务诉求,构建Android/iOS/鸿蒙平台的全跨端APP能够最大幅度的降低业务开发成本,提升人效。并且行业内研发模式的逐步改进,单周发版已经成为常态,对于常规APP,动态化的诉求并不是很强。开发者普遍希望在保持原生优良性能的同时,使用行业通用的UI开发语言,从而最大程度降低学习成本。 Kotlin 与 Compose 是 Google 官方推荐的 Android 开发语言与 UI 框架,也是深受开发者喜爱的应用开发方案。与其他跨端方案相比,Kotlin Multiplatform 还具备高性能,与原生交互更灵活等优点。因此腾讯视频选择了 Compose Multiplatform 作为全跨端APP的基础。当然,这套方案也存在不支持鸿蒙、iOS平台混排能力受限、GC性能表现一般等一系列问题,使得落地的过程充满了挑战。经过不懈努力,上述问题均已得到妥善解决,现在我们希望将这些解决方案开源,期待与全行业一同推动Compose跨端生态走向成熟。 特性优势 ovCompose已经在腾讯视频鸿蒙平台全面...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主