文章摘要
作者突发奇想,用M&M糖果的排列组合创造了一门编程语言。故事源于他打翻糖果时偶然形成的箭头图案,激发了他将糖果颜色、位置与代码结构关联的灵感。这个异想天开的项目展示了如何将日常物品转化为可执行程序。
文章总结
标题:我用M&M巧克力豆创造了一门编程语言
文章讲述了作者如何将洒落的M&M巧克力豆排列成可执行代码,从而创造出一门名为MNM Lang的编程语言。以下是主要内容:
灵感来源
作者在撕开一包印度版M&M糖果(GEMS)时,糖果洒落形成箭头形状,激发了他用糖果排列编程的想法。语言设计核心
- 使用6种颜色(B/G/R/Y/O/N)代表不同指令类型(如蓝色控制流、绿色变量操作等)
- 操作数通过同色糖果数量表示(如RRRR=3)
- 将视觉结构与运行时数据分离:糖果布局存储在.mnm文件,字符串等数据放在JSON中
- 技术实现亮点
- 编译器会将代码转换为由糖果精灵图组成的PNG图像
- 包含逆向解编译器,可从图像还原源代码
- 开发了照片解码功能,能识别轻微模糊/倾斜的糖果照片
- 使用AI生成糖果精灵图,并通过脚本进行标准化处理
- 实际应用展示
- 实现了hello_world、阶乘计算、FizzBuzz等示例程序
- 提供浏览器游乐场,支持实时编辑、运行和图像解码
- 包含AST查看器和执行跟踪器,使糖果代码具备真实编程工具的体验
- 项目特色
- 在保持趣味性的同时确保功能性,如:
- 用糖果行表示指令,集群表示令牌
- 通过严格控制图像几何实现无损往返
- 对照片解码设置合理预期(需整洁背景)
- 包含完整的测试体系,覆盖解析器、运行时、图像处理等
- 获取方式
项目已开源(GitHub: mufeedvh/mnmlang),包含解释器、示例程序和本地游乐场,可通过uv run mnm serve命令快速体验。
这个项目完美融合了奇思妙想与工程技术,通过糖果的排列组合实现了真正的图灵完备编程语言,堪称"既能编译又能吃的代码"典范。
评论总结
以下是评论内容的总结:
正面观点
有趣且有创意
- "This is what HN is all about" (swaraj)
- "this is so cool!" (nathaah3)
激发童趣与编程热情
作者分享初衷是为了找回编程的乐趣:"I felt like I started losing the childlike wonder/whimsy I once had with programming." (mufeedvh)
其他用户表示共鸣:"Awesome project!" (MASNeo)
中立/幽默观点
调侃潜在问题
- "It’s funny until one guy spills his bag of M&M’s and accidentally deletes the production database." (bronlund)
- "It's all fun and games until some fat bastard like me decides he wants a snack." (bigstrat2003)
无厘头联想
- "What color is your function?" (amelius)
- "Am I allowed to use the term psychopath in the most loving, even inspired, way?" (avatardeejay)
技术讨论
改进建议
- 提问是否可用CNN优化识别:"do you think a lightweight CNN trained on synthetic candy layouts would outperform the deterministic decoder?" (filozopdasha)
细节疑问
- "why/where is 000000 defined as newline?" (xnorswap)
其他关联
经典作品类比
- 提到xkcd漫画:"made me think of this classic xkcd" (MostlyStable)
- 推荐类似项目:"check out efghij" (Timwi)
玩梗与未来想象
- "Looking forward to the first LLM&M coding agent" (rhoopr)
- "but can it run Doom?" (tapeloop)
总结:评论普遍认为项目有趣且富有创意,部分用户提出技术改进或安全隐患的调侃,也有少量细节讨论和关联推荐。整体氛围轻松,体现HN社区对非常规项目的包容性。