《程式碼本色》作者Daniel Shiffman:藝術家也程式設計(圖靈訪談)

盼盼姐發表於2015-03-03

Daniel Shiffman是紐約大學Tisch藝術學院助理藝術教授,“程式碼本色”便是其主講課程之一。他在耶魯大學獲得了數學與哲學學士學位和互動通訊的碩士學位。多年來,他一直用Processing這門藝術家友好型開源語言開發教程、教學示例和程式碼庫,擁有豐富的演算法和應用教學經驗。他以自己教授的一門名為“計算媒體導論”的課程內容為基礎,撰寫了Learning Processing,這本書廣受讀者好評。Daniel在Kickstarter上集資出版了他的第二本書《程式碼本色:用程式設計模擬自然系統》,他集合了多年開發和教學經驗,希望藉由此書讓大家真正瞭解如何用程式碼模擬自然現象。

《程式碼本色》作者Daniel Shiffman:藝術家也程式設計(圖靈訪談)

問:為什麼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/processingandhttp://forum.processing.org/two/上分享你的專案,答案,或者問問題,歡迎大家為Processing的開發出力!

問:計算機的創造力是獨立的嗎?計算機藝術作品的作者是程式設計師還是程式?

這是個很棒的問題,這也是之所以程式生成藝術是一個有趣話題的重要原因。我認為這個問題最終不是關於計算機的。Sol LeWitt(美國藝術家,藝術研究上包括概念藝術和極少主義)的作品創作過程就是他寫下規則,然後由其他人動手完成。這裡面誰是藝術家?什麼是藝術?有獨特創造力的計算機還不存在,至少我沒有見過,但是很多藝術家都在這個方向上努力。Heather Dewey Hagborg的作品“驚奇的記憶(Suprious Memories)”探討的就是這個問題。http://www.deweyhagborg.com/spurious/

問:計算機真的為藝術帶來了新的聲音嗎?我們對於藝術和創造力的理解是否因為科技而改變?

我認為計算機確實為藝術帶來了新的血液。最明顯的一點莫過於速度和自動化。我相信如果有些藝術家不是因為自己和科技有著極其親密的關係,他們可能就不會在創造藝術作品上找到自己的熱情和天賦。一般來說,我們認為程式設計是為了完成一個特定概念而執行計劃的過程。但是我對“意識流”程式設計很感興趣——在你程式設計的時候讓精神遊蕩,是否會發現嶄新的想法和演算法呢?


更多精彩,加入圖靈訪談微信!

相關文章