代码与建筑美、音乐美

  建筑美和 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 的时候,顺便也出一张专辑,说不定会很流行。

  Architecture Compiler 和 Music Compiler 的出现也可以帮助老板们解决让人头疼的招聘问题:我不懂技术,但是把你的代码拿出来,编译成建筑或者音乐,如果建筑足够美或者音乐足够好听,OK,那么你是个好的程序员,因为“完美的代码每一行都是完美的,包括注释中的句号。”不然,你就露馅啦,IT 圈也没那么好混了。

  还有,现在我们可以把很久之前的东西数字化,比如我们扫描图书把印在纸上的文字变成字节,把图片扫描进电脑。或许我们可以改进一下 Architecture Compiler 和 Music Compiler , 让他们也可以编译源代码之外的东西,比如编译一本书或者一幅画,那么我很乐意相信莎士比亚一直都在偷偷创建一个奇幻的城市,达芬奇在“蒙娜丽莎的微笑”里面藏了一座宏伟的建筑,而米开朗其罗在西斯廷教堂顶上写了一整部交响乐。

  从这个层面上讲,他们都很擅长写代码,是很好的 Hacker。

it知识库代码与建筑美、音乐美,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。