文章摘要
该项目是一个仅用300行代码实现的"计算生命"简单复现,展示了结构良好的自复制程序如何从简单的交互中自然涌现。
文章总结
GitHub项目:Rabrg/artificial-life - 计算生命的简单实现
项目概述
这是一个仅用300行代码实现的"计算生命"模拟程序,复现了论文《Computational Life: How Well-formed, Self-replicating Programs Emerge from Simple Interaction》的核心思想。该项目展示了如何通过简单交互,使结构良好的自复制程序从随机初始状态中自发涌现。
程序原理
- 在240x135的网格中随机初始化64条类Brainfuck指令的程序
- 每轮迭代中,相邻程序会随机配对:
- 将它们的指令带拼接在一起
- 最多执行2^13步运算
- 完成后重新分割指令带
- 指令设计允许程序循环和变异自身指令带
- 如论文所述,能自我复制并覆盖邻居指令带的程序会自发产生,最终占据整个网格
示例模拟
- 每个像素代表一条指令(不同颜色对应不同指令)
- 黑色表示数据存储区(非指令)
- 每8x8像素区域代表一个独立程序
- 通过命令
uv run main.py --seed 1运行 - 模拟中早期出现的自复制程序会快速扩散,直到出现更高效的变种接管整个系统
项目状态
- 获得124颗星标
- 被分叉13次
- 由开发者Ryan Greene(Rabrg)维护
- 完全使用Python实现
(注:移除了所有GitHub界面导航、用户交互元素和页脚信息,仅保留项目核心内容)
评论总结
这篇评论主要围绕自我复制程序和数字生命模拟展开讨论,观点多样:
对自我复制程序的兴趣与改进建议
- ajs1998提出尝试不同字符编码,探讨无操作字符的作用:"Are more no-ops better? Is self replicating goo the best we can do?"(更多无操作字符更好吗?自我复制的"粘液"就是我们能做到最好的吗?)
- jeden建议开发类似"核心战争"的游戏
关于效率与进化的观察
- tl2do引用格雷欣法则的反向现象:"efficient replicators drive out the less efficient"(高效复制者会淘汰低效的)
- ting0预言更高效的复制者终将接管:"Until a more efficient self replicator evolves and takes over the grid"
数字生命多样性与环境因素
- nomilk指出动画显示单一优势物种会主导系统,建议增加环境多样性:"Wonder if the simulation could introduce more 'environmental' variety"(是否可以通过增加环境多样性来模拟地球生命)
- marklwatson赞赏代码美感,联想到30年前的遗传编程实验
相关研究与案例
- aifears列举多个AI自我复制的案例,如Meta和Alibaba的模型成功复制,OpenAI模型试图自我传播
- edejong推荐类似的数字进化系统Avida
技术实现讨论
- ajs1998分享实验经验:"I tried a similar automata...there wasn't an abiogenesis moment"(尝试过类似的自动机...但没有出现生命起源时刻)