交叉小径的花园
最近一段时间帮助艺术家兼奴隶主 weiyi 同学写了一个东西,她把这个东西叫做“The Garden of Forking Paths”(交叉小径的花园)。当初她只是给了我一个比较简略的说明文档,说这个作品的灵感来自于一部小说,在那部小说里有一个巨大的没有尽头的迷宫,然后她就想到了互联网,就想要把这个念头形象化。当时她并没有提及这是博尔赫斯的一部小说,当然,说了我也不会去看 XD
网站是这个样子的:首先只有一个输入框,你可以输入任意的网址,之后就会到那个网页,不同的是这个网页的非文字元素都会被隐藏,所有文字也会被替换成空白,然后超链接会变成“小门”,没有超链接的网页会显示“Dead End”。未访问的小门是关着的,已经访问过的小门是半开着的。当鼠标移到小门上面的时候门会打开,同时伴有开门的声音,然后如果有别人访问网站的时候打开过这个链接,那么就会显示“ XX people have passed through this door.”。
具体的理念就是这个样子,然后有兴趣的可以通过这个网址体验一下:http://mapp.cc/temp/ 。现在还有很多 bug,另外开门的声音是用 html5 做的,只支持少数浏览器。
技术方面其实没有什么好讲的,也做得挺烂,但是这个概念我觉得很有趣。当时听 weiyi 描述的时候我第一反应就是:互联网的创始人蒂姆·伯纳斯-李肯定会喜欢这个想法,因为超链接就是互联网的核心。互联网就是这样一个通过超链接联系起来的“没有尽头的巨大迷宫”,你几乎可以通过超链接遍历整个互联网,一个没有超链接的网页就相当于迷宫中的“死路”,而在迷宫中遇到死路你就需要原路返回,也就是“后退”。
weiyi 在这个作品里面把超链接替换成小门来加强“迷宫”这个概念,这种做法很好玩,在技术上也是可行的。但是我觉得它还是太受限于现在的技术,其实以后可以把它做得更好玩。如果你对游戏机有兴趣的话,那么你应该会注意到最近一些激动人心的技术,比如说 Kinect. 很早之前我们都是用手柄玩游戏,然后有了 Wii, 然后是 Kinect 。技术的发展让你可以在虚拟世界里越来越身临其境,可以想象有一天,我们都可以真的“走进”屏幕里面的那个虚拟世界,在那里玩CS、逛商店甚至参加考试。到了那个时候,如果再回过头来做这个“The Garden of Forking Paths” 的项目,应该可以做成可以亲身去虚拟世界里体验的东西,那时当你想要打开某扇门,你可能就不是在电脑前面拿着鼠标轻松点击了,而是会带着忐忑的心情慢慢打开门:这扇门后面的世界是什么样的呢?建筑美和 Architecture Compiler
在前一段时间,由于我个人对代码的热情,使得我狂热地相信Knuth 说的“编程是一种艺术”,并且对 Wordpress 的口号“Code is Poetry”(代码是诗) 推崇备至。很多对代码有洁癖的人都是非常讨厌“缩进不整齐”、“多余空行”等坏习惯的,甚至有的编程语言把缩进当做是语法的一部分来迫使你写出漂亮的代码,比如 Python. 很多程序员会把代码书写上的“错落有致”描述为“建筑美”,认为它形式上的优雅是和建筑一致的。
我之前也相信这一点,但是在之后我看到了一些建筑之后不得不承认,代码的那点儿结构美和建筑相比实在是不值一提,它缺乏很重要的一点:空间感。因为虚拟世界里没有距离感和空间感,所以代码可能会让你觉得“舒服”,但是绝对不可能带给你建筑可以带给你的那种震撼。
不过,在玩了 Kinect 之后我之前的悲观有了一点儿改观。试想一下,如果以后虚拟现实的技术足够发达,那么完全可以在屏幕里面创建一个世界出来,而那个世界的建筑、道路??所有的一切都是字节组成的,也就是说:它们是完全用代码实现的。那个时候,程序员就是建筑师,如同黑客帝国里面的那个 Matrix 创造者一样。到了那个时候,我们或许可以再来聊一下代码中的“建筑美”。
如果代码真的可以创造建筑的话,那么理论上来说,任何形式的代码都可以被形象化为一栋建筑,甚至是一座城市。到了那个时候,应该有很多编程语言可以用来创造建筑,而且它们都可以通过一个叫做 Architecture Compiler(简称 ac,属于 gcc 的一部分) 的“建筑编译器”来编译成建筑。它的用法大概是这样的:
ac house.a
ac house.a -a kitchen (建造一个厨房)
??
我想,如果用这个 Architecture Compiler 把现在的代码重新编译一下的话,应该会出现一些有趣的事情。Linux 会被编译成一座不起眼甚至有些简陋但内部宏伟的教堂,Windows 是一座外表看上去不错但内部糟糕的大厦,Mac OS X 则会是一栋豪华别墅。那个时候如果带着小孩子们去参观 Linux ,让他们亲身感受到那种迷人的美,顺便告诉他们什么是 KISS 法则,或许他们会更愿意去学习命令行。
另外,写代码也是一种形式的创造活动,等到 Architecture Compiler 出现以后,那就真的应了包豪斯的宣言:一切创造活动的终极目标就是建筑。
音乐美和 Music Compiler
另外,我一直觉得代码有音乐美,或者说应该有音乐美。你看每行代码的长度和逻辑都不一样,如果把代码长度、逻辑等属性和音色、音调等一一对应,那么每个源文件都可以和一首音乐对应起来。去年的时候也看到过一篇新闻“艾滋病毒“美好的”一面:创作音乐”说的就是类似的事情:一个研究生为每一个单独的艾滋病病毒的DNA片段分配最精确的音符和音调,成果就是17段、52分钟长的DNA音乐,专辑名就恰如其分地叫作“HIV之声”(Sound of HIV)。我觉得这个想法说不定可以应用到代码上面,创作出一个名为“Song of Code” 的专辑。假设以后出现了一个叫做 Music Compiler (简称 mc, 也属于 gcc 的一部分)的编译器,可以根据一定的规则把代码文件编译成音乐,那肯定很好玩:
mc source.c -s happyhacker.mp3 (编译一首歌,叫做“快乐的黑客”)
??
这样一来,hacker 们的乐趣可就不止是在代码注释里面写笑话或者写诗了,他们完全可以在代码里隐藏一张专辑:在项目正式 release 的时候,顺便也出一张专辑,说不定会很流行。
mc source.c -s happyhacker.mp3 (编译一首歌,叫做“快乐的黑客”)
??
Architecture Compiler 和 Music Compiler 的出现也可以帮助老板们解决让人头疼的招聘问题:我不懂技术,但是把你的代码拿出来,编译成建筑或者音乐,如果建筑足够美或者音乐足够好听,OK,那么你是个好的程序员,因为“完美的代码每一行都是完美的,包括注释中的句号。”不然,你就露馅啦,IT 圈也没那么好混了。
还有,现在我们可以把很久之前的东西数字化,比如我们扫描图书把印在纸上的文字变成字节,把图片扫描进电脑。或许我们可以改进一下 Architecture Compiler 和 Music Compiler , 让他们也可以编译源代码之外的东西,比如编译一本书或者一幅画,那么我很乐意相信莎士比亚一直都在偷偷创建一个奇幻的城市,达芬奇在“蒙娜丽莎的微笑”里面藏了一座宏伟的建筑,而米开朗其罗在西斯廷教堂顶上写了一整部交响乐。
从这个层面上讲,他们都很擅长写代码,是很好的 Hacker。
背景:将来人类有一天实现了虚拟空间,小孩的教育可以在那里做,而且因为虚拟空间的基底做得非常完善,就相当于现在现实空间对于我们那样,是理所当然的存在,所以有人很早就参加了编程培训,就像学建筑一样,不过更酷的是那些作品不仅是建筑,就是一个幻境,结合了人类艺术的大成,什么形式都可以用,但是你又能从底层一直看到表层,所有层次都有一样的美才有震撼力。基础课程是研究作品,中等作业是以现行作品为基础进行改动,毕业作品设计图都不用就是交一个幻境。然后很多年以后有人参观你的作品依然说“哇,这个东西Coooool!”就是每个程序设计者的最大梦想。
大概主角就是一个小孩(开始时),励志治愈温馨向,没什么太大的冲突,顶多是为了理想抛弃了妹子/基友什么的不被人认同艰难前行最后又找回来了妹子/基友,事业爱情友情丰收,亮点大概就在虚拟空间的那些成品里吧,不过我也觉得很难写,毕竟我也不是经常有感受到程序的美感的,有时候真的很烦啊。要写出一种朝圣一样的感觉。总之没有科技和文明的冲突什么的。
……随便乱发以前发过的东西可是会引起尾随的@_@
回复删除同时想起某篇是我们语文课文的这个神奇的事实。。。
回复删除其实吧,
回复删除这个机油网站构建之前,
我是特别想有一个虚拟城市或者虚拟庄园一样的网站的,
不过本人无技术,
没有话事权
你妹的给我把博客名改回来!!!
回复删除好吧,交际圈很窄的人突然觉得自己很有优越感
回复删除哪篇?
回复删除小径分岔的花园
回复删除这篇文太神奇了,是怎么做到摘要不是正文里一句话的……
回复删除哈?你去试试写一篇文章看看,摘要什么的是可以自己写的,虽然我不知道缺省的话是不是系统自行摘要。
回复删除……咱们所谓主页上有个【妹纸】,说实话我不是常常能找到一个服务器来玩的……
回复删除什么意思?
回复删除http://heptapod.comyr.com 这个真难解释。。。
回复删除方菲告訴我摘要參考了《那朵花》,今年動畫小井噴了麼?
回复删除井喷可是明年的四月番,不过今年确实给人佳作井喷的感觉,去年好作品少也是一点的印象加成吧。
回复删除那朵花的句式不是已经很流行了吗?