杜琪峰的脸皮够厚,把20分钟的短片拍成两小时的《放逐》。难道杜的前生是注水猪肉贩子?吴彦祖在《门徒》里因为不堪忍受空虚,不惜吸毒。其实如果他看《放逐》,才知道空虚不算什么。当然,本着领导不喊走,自己不开口的原则,我还是蜷在沙发上,和领导有一搭没一搭地看完了这部大闷片。为了解闷,一边看一边用OpenLaszlo写了一个原始版本的
生命游戏,用Conway版的23/3规则,权当熟悉下工作中将要用到的OpenLaszlo。游戏本来简单,OpenLaszlo的文档也组织得不错(可惜没有索引,过于诡异),所以游戏很快写玩。OpenLaszlo还挺好用。它的约束系统和事件模型直观。基于View的GUI系统也简单明白。基本上看看指南就可以上手。Runtime也足够稳定。45x45的20像素见方的网格,200毫秒执行一步模拟,没有停滞的感觉。CPU的消耗稳定在50%(单核50%。双核的CPU上消耗再大也是50%,也许说明OpenLaszlo的运行时不能利用双核)。看着屏幕上不停变幻的黑格子绿格子,又有了大学里第一次写出生命游戏的感觉。高中时读关于混沌的书(好像叫《从混沌到有序》,不确定是不是《第一推动丛书》里的一本),书说到一个大器晚成的牛人深夜在空无一人的实验室看到VAX机器上的生命游戏幻化出各色模式,不禁背脊发凉,觉得好像有人在冥冥中注视着他,操纵着VAX上绿荧荧闪烁的光斑。直到若干年后我进了计算计系,在宿舍里写出自己的生命游戏,第一次亲眼看着简单规则下进化出的各式繁复花样,才真切体会到书里传递的情绪。
![](https://p-blog.csdn.net/images/p_blog_csdn_net/g9yuayon/75c3dd3dc0b54eb9b76ce82bb339ebdc.png)
更让人惊异的是,早有理论界的老大证明生命游戏和图灵机等价。也就是说,我们能用图灵机计算的东西,也能用生命游戏计算出来。有了理论,自然就有动手狂人把理论
实现出来。几年前
Damian Conway(Perl黑客,不是发明生命游戏的那个
John Conway)到公司演讲,主题就和生命游戏有关。Conway的演讲天才真是少见。一小时多的演讲,听众从头到尾笑得歇斯底里。就在我们的狂笑中,Conway介绍了用Perl实现的一个生命游戏。他接着勾勒出在简单生命游戏的基础上加入辅助的规则,实现一个逻辑非门(NOT gate)。要实现非门,得先实现生命游戏里的一种样式,叫
碰撞滑翔机(colliding glider)。再通过这个样式模拟出非门。有了逻辑门,就可以模拟出完整的图灵机了。演示完生命游戏模拟的图灵机后,Conway进一步演示了
麦克斯伟妖精的模拟。而模拟也通过生命游戏完成!用天涯那篇小夫妻干架冬雷大表哥文章的套话说,就是听众集体石化。
J 这坨著名的思想实验出现在无数有名无名的科普书籍和教材里。比如伽莫夫的《物理世界奇遇记》和第一推动丛书里的《时间之箭》。我的热力学当年就学得很烂。就不啰嗦了。
![](https://p-blog.csdn.net/images/p_blog_csdn_net/g9yuayon/138836/o_Gospers_glider_gun.gif)
生命游戏的规则三句话就能说清,却能生出千变万化的样式,模拟复杂的计算。生命游戏背后的理论--细胞自动机--也清晰简洁,却能在多个领域派生出让人惊叹的应用(当然,像Stephen Wolfram那样
走火入魔,10年与世隔绝后写出洋洋上千页不靠谱的
A New Kind of Science, 把世间一切归结为细胞自动机的魔术,就属于堕落为民科的特例,不予推荐哈)。而我们程序员,能够借助趁手的工具,去探索,体验,应用,和发扬光大这些前人智慧。而且有公司出钱让我们这样自娱自乐。Man!我怎么能不热爱编程这门手艺?
![](https://i-blog.csdnimg.cn/blog_migrate/f212332ed42d12a09354fa83c09b673e.gif)