Daniel Shiffman是纽约大学Tisch艺术学院助理艺术教授,“代码本色”便是其主讲课程之一。他在耶鲁大学获得了数学与哲学学士学位和交互通讯的硕士学位。多年来,他一直用Processing这门艺术家友好型开源语言开发教程、教学示例和代码库,拥有丰富的算法和应用教学经验。他以自己教授的一门名为“计算媒体导论”的课程内容为基础,撰写了 Learning Processing ,这本书广受读者好评。Daniel在 Kickstarter 上集资出版了他的第二本书 《代码本色:用编程模拟自然系统》 ,他集合了多年开发和教学经验,希望借由此书让大家真正了解如何用代码模拟自然现象。
问:为什么Processing被誉为是对艺术家最友好的语言?和其他语言相比它有什么特点?
Processing是由Casey Reas和Ben Fry创造的,他们因为工作和教学的原因想要创造这样一个工具。Processing是我用着最舒服的编程语言和开发环境,我很喜欢用它来工作。
另外,Processing不仅有全面的绘图API,也有详尽的文档、示例、以及学习资源。它是免费开源的,并且非常适合初学者,它的开发者社区很活跃。Processing在互动装置和数据可视化方面都有很多应用。线上展览 https://processing.org/exhibition/ 是一个能看到激动人心的作品的地方。
对很多人来说,Processing或许是他们学习的第一门编程语言。我希望通过Processing用一种友好的方式阐述模拟自然系统的原理。
问:Processing似乎比其他模拟软件要小很多,它的优势在哪里?Processing为什么可以成功模拟自然系统?
在仿真方面,Processing并没有什么特别之处。我使用Processing是因为它对初学者很友好,也支持绘图和动画功能,而且它构建在Java之上,可以为交互项目带来更多的可扩展性。
我在 ITP 教授一门名为“计算媒体导论”的课。在这门课中,学生主要学习一些编程基础知识(变量、条件语句、循环、对象和数组等)。除此之外,他们还学习如何使用基本元素(图像、像素、计算机视觉、组网、数据和3D等)开发交互式应用。课程内容以我之前写的入门书 Learning Processing 为主,而本书是 Learning Processing 的续篇。一旦你掌握了编程基础并且接触了形形色色的应用场景,接下来很可能就是深入研究某个特定的方向。举个例子,你可以专注于计算机视觉(比如阅读Greg Borenstein写的 Making Things See 等书)。当然,本书的内容只是众多发展方向之一,它只是延续了 Learning Processing ,展示了Processing语言在算法和模拟方面的更高级编程技术。
问:当你在KickStarter上为《代码本色》募集资金的时候,有没有发生什么有趣的事?
对于我来说,这是一次很好的体验。有观众在等待这本书并且愿意为早期草稿提供宝贵意见,我真是受宠若惊。这样的过程也推进了整个撰写的进程。
问:前面提到Processing是一种对艺术家很友好的语言,那么《代码本色》是一本关于艺术和设计的书吗?
不是。尽管我们的工作结果都是视觉上可见的事物(用Processing开发的演示动画),但也仅仅是用简单的图形和色彩做出的演示,我们真正专注的是它们背后的算法和相关编程技术。然而,我还是希望艺术工作者和设计师们能将本书中的知识融入工作实践,创造一些真正新颖有趣的作品。
最明显的联系就在于物理模拟。很多游戏创造的场景都是现实物理世界的反映,模拟技术的应用很广泛。
在《代码本色》中我们会涉及物理学和生物学的个别话题,但不会从严谨的学术层面进行研究。相反,我们会简单探讨某些科学原理,只攫取我们需要的那一部分内容,并根据它们构建相关的示例程序。
问:写作《代码本色》中的示例代码是否需要数学知识?阅读这本书之前需要掌握什么样的基础知识?
我尽力让这本书对初学者更友好,尽可能减少对数学预备知识的要求。读者只要对代数有一个基本的理解就足够了。在这本书中,我从零开始讲解了向量以及其他数学问题。
读懂本书的前提条件是:你上过一学期的Processing编程课(并且熟悉面向对象编程)。这并不是说如果你学的是其他语言和开发环境就读不懂本书,关键是你必须学过编程。
问:越来越多的人开始对Processing感兴趣,一些有编程经验的人急切地想改变Processing的开发环境。对于他们你有什么样的建议?
你可以在 https://github.com/processing/processingand 或 http://forum.processing.org/two/ 上分享你的项目,答案,或者问问题,欢迎大家为Processing的开发出力!
这是个很棒的问题,这也是之所以程序生成艺术是一个有趣话题的重要原因。我认为这个问题最终不是关于计算机的。Sol LeWitt(美国艺术家,艺术研究上包括概念艺术和极少主义)的作品创作过程就是他写下规则,然后由其他人动手完成。这里面谁是艺术家?什么是艺术?有独特创造力的计算机还不存在,至少我没有见过,但是很多艺术家都在这个方向上努力。Heather Dewey Hagborg的作品“惊奇的记忆(Suprious Memories)”探讨的就是这个问题。 http://www.deweyhagborg.com/spurious/
问:计算机真的为艺术带来了新的声音吗?我们对于艺术和创造力的理解是否因为科技而改变?
我认为计算机确实为艺术带来了新的血液。最明显的一点莫过于速度和自动化。我相信如果有些艺术家不是因为自己和科技有着极其亲密的关系,他们可能就不会在创造艺术作品上找到自己的热情和天赋。一般来说,我们认为编程是为了完成一个特定概念而执行计划的过程。但是我对“意识流”编程很感兴趣——在你编程的时候让精神游荡,是否会发现崭新的想法和算法呢?