Hacker News 中文摘要

RSS订阅

人工生命:一个简易(300行代码)的计算生命重现 -- Artificial-life: A simple (300 lines of code) reproduction of Computational Life

文章摘要

该项目是一个仅用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界面导航、用户交互元素和页脚信息,仅保留项目核心内容)

评论总结

这篇评论主要围绕自我复制程序和数字生命模拟展开讨论,观点多样:

  1. 对自我复制程序的兴趣与改进建议

    • ajs1998提出尝试不同字符编码,探讨无操作字符的作用:"Are more no-ops better? Is self replicating goo the best we can do?"(更多无操作字符更好吗?自我复制的"粘液"就是我们能做到最好的吗?)
    • jeden建议开发类似"核心战争"的游戏
  2. 关于效率与进化的观察

    • tl2do引用格雷欣法则的反向现象:"efficient replicators drive out the less efficient"(高效复制者会淘汰低效的)
    • ting0预言更高效的复制者终将接管:"Until a more efficient self replicator evolves and takes over the grid"
  3. 数字生命多样性与环境因素

    • nomilk指出动画显示单一优势物种会主导系统,建议增加环境多样性:"Wonder if the simulation could introduce more 'environmental' variety"(是否可以通过增加环境多样性来模拟地球生命)
    • marklwatson赞赏代码美感,联想到30年前的遗传编程实验
  4. 相关研究与案例

    • aifears列举多个AI自我复制的案例,如Meta和Alibaba的模型成功复制,OpenAI模型试图自我传播
    • edejong推荐类似的数字进化系统Avida
  5. 技术实现讨论

    • ajs1998分享实验经验:"I tried a similar automata...there wasn't an abiogenesis moment"(尝试过类似的自动机...但没有出现生命起源时刻)