有關(guān)代碼學(xué)習(xí)的經(jīng)驗(yàn)分享

2018-07-13 3453 0

f17a570363fc6ac72579485db019.jpg

之前有發(fā)過相關(guān)的資源索引,原創(chuàng)教程,練習(xí),甚至是源代碼。但很多感興趣的人還是不了解從何入手。自己接觸 Creative Coding 有一段時(shí)間了,雖算不上專家,但也有一定了解。這里想分享一點(diǎn)個(gè)人的學(xué)習(xí)心得,談?wù)勗O(shè)計(jì)師應(yīng)該如何自學(xué)創(chuàng)意編程。
 

關(guān)于自學(xué)

創(chuàng)意編程可以自學(xué)嗎?據(jù)我了解,圈子里真正玩得好的高手,都是從自學(xué)開始。自學(xué)不僅僅是一種學(xué)習(xí)形式,其中最關(guān)鍵的,是思維方式的養(yǎng)成。它是可復(fù)用,可迭代進(jìn)化的,并且不僅局限在單一領(lǐng)域。

當(dāng)初自己為什么選擇這種方式呢?不是因?yàn)橛邢纫娭?,了解自學(xué)有這等好處,僅僅是因?yàn)闆]有條件。學(xué)校沒開設(shè)這類課程,身邊也沒有認(rèn)識(shí)會(huì)這個(gè)的朋友,也就不得不自學(xué)了。

很多人覺得自學(xué)的難處之一是,沒有氛圍,一個(gè)人難以堅(jiān)持?,F(xiàn)在有了互聯(lián)網(wǎng),情況大不一樣了。通過國(guó)內(nèi)外的各種社交媒體,論壇網(wǎng)站,可以了解到領(lǐng)域里最前沿的人物,他們近期的動(dòng)向??催^什么,如何思考問題,做了什么練習(xí),產(chǎn)出什么作品,這些信息都可以刺激。

如果勤學(xué)好問,甚至可以直接向這些前輩請(qǐng)教。前提是展示為了獲得這個(gè)問題做了哪些努力。

所以只要有一臺(tái)能上網(wǎng),可翻墻的電腦,就具備了最基本的自學(xué)條件,剩下只是方法的問題。

創(chuàng)意編程的魅力所在

講如何學(xué)之前,還是先談?wù)劄槭裁磳W(xué)。

創(chuàng)意編程。我的個(gè)人理解,就是用代碼畫畫。如果本身就是設(shè)計(jì)師或插畫師。那現(xiàn)在,僅僅是換了一個(gè)圖形表達(dá)工具而已。

那創(chuàng)意編程能有什么具體的應(yīng)用價(jià)值呢?“有什么用?”,其實(shí)不是個(gè)好問題。我更喜歡回答,它為什么有趣。

對(duì)于一個(gè)藝術(shù)家來說,一輩子的追求無非就是形成自我風(fēng)格。可能窮其一生,最終可以熟練駕馭幾種畫風(fēng)。但卻無法做到掌握所有人的繪畫風(fēng)格。

用油畫創(chuàng)作一幅作品,可能需要一個(gè)月。發(fā)明了手繪板,數(shù)位屏這些工具,可以將時(shí)間縮短到1天。將來腦電技術(shù)成熟,甚至可能用意念來畫畫,時(shí)間將更短。

這些都是由于工具的革新所帶來的。但人的思維速度再怎么快,也不可能在一秒內(nèi)創(chuàng)作100張作品。這是人的思維局限,也是傳統(tǒng)創(chuàng)作工具的局限。

通過計(jì)算機(jī)則不一樣。只要了解自己是如何思考,并將這個(gè)思考過程用編程語言去描述,計(jì)算機(jī)就能幫實(shí)現(xiàn)。

要知道,當(dāng)今最有想象力,最不可思議的事情,都與計(jì)算機(jī)發(fā)生關(guān)聯(lián)。而通過編程,可以將的想法延伸到更多的地方。

2015年9月,Leon A. Gatys等人基于神經(jīng)網(wǎng)絡(luò)的論文就讓大家看到了可能性。

當(dāng)然,還是有人喜歡用畫筆去完成這種探索,我更傾向用計(jì)算機(jī)。在我看來,編程對(duì)于圖形創(chuàng)作而言,就是個(gè)潘多拉魔盒。下面我想講講它的打開方式~

設(shè)計(jì)師學(xué)編程,選哪門語言?

808d5703643832f875a944ed3687.jpg

自己其實(shí)在大學(xué)期間就對(duì)編程產(chǎn)生過興趣,也淺嘗輒止地了解過一些編程語言,諸如 VB,C,后來還包括 python,最終都沒有堅(jiān)持下去。
 

后來總結(jié)了一個(gè)原因,學(xué)習(xí)這些編程語言的反饋周期太長(zhǎng)了。并且都是從抽象的概念開始講起,輸入輸出都是一串?dāng)?shù)字,相當(dāng)不直觀。

直到我在一年前遇到 Processing。發(fā)現(xiàn)它簡(jiǎn)直就是為設(shè)計(jì)師這種視覺生物所量身定做的。簡(jiǎn)單的代碼,就能寫出十分豐富的視覺效果。過往在編程中抽象的概念,這里都會(huì)以一種鮮活的視覺形式呈現(xiàn)出來,十分有趣。

之后它一直讓我愛不釋手。由于反饋直觀,每次練習(xí)都與畫畫無疑。所以會(huì)持續(xù)刺激自己,去用代碼進(jìn)行更多圖形上的探索。

Processing的設(shè)計(jì)理念,是讓設(shè)計(jì)師,藝術(shù)家都可以輕松地掌握編程。雖然門檻降低了,不代表它是一門“玩具”語言。畢竟編程語言都許多概念都是相通的,而 Processing 本身又基于 Java,所以此門語言的一些基礎(chǔ)編程概念,在其他語言中也一樣有。假如以后想學(xué)習(xí)一門新語言,在Processing 上打下的基礎(chǔ)都能發(fā)揮作用。

我自己的所有編程基礎(chǔ)的修煉,都是在Processing上完成的。我認(rèn)為Processing是設(shè)計(jì)師進(jìn)入代碼世界的首選工具。

信息源頭

有了目標(biāo),就需要去尋找相關(guān)的學(xué)習(xí)資源了。這里是之前自己整理的一份資源清單。(CreativeCoding 資源索引)

里面的信息對(duì)初學(xué)者而言已經(jīng)足夠全了,開始時(shí)無需考慮過多,先選一本基礎(chǔ)教程,老老實(shí)實(shí)從它學(xué)起。除了基礎(chǔ)書籍之外,索引里還提到了一些諸如軟件的誕生地,語言的開山鼻祖以及相關(guān)的資源網(wǎng)站,只要按圖索驥,這些信息可以幫助對(duì)這個(gè)領(lǐng)域有一個(gè)概貌的了解。

值得一提的是,除了上面的鏈接。Processing自身的范例庫做得相當(dāng)完善,如果本身有代碼基礎(chǔ),那幾乎只通過范例庫,就能學(xué)會(huì)這門語言了。

除了 Processing ,里面還提到了另一門創(chuàng)意編程的主流工具叫 Openframeworks(簡(jiǎn)稱OF)。它們都是最主流的創(chuàng)意編程工具之一。格式,寫法十分相像。OF有它自身強(qiáng)大的地方,比如它是基于C++的,運(yùn)行效率更高。支持跨平臺(tái),代碼幾乎可以不做任何改動(dòng),就能在Windows和Mac OS上執(zhí)行。而且還能開發(fā)App。

盡管如此,對(duì)于初學(xué)者,我還是推薦先從 Processing 入手,因?yàn)樗懈S富的學(xué)習(xí)資源,更詳盡的文檔,更友善的社區(qū)。這些都是 Openframeworks 不具備的。

對(duì)于外語基礎(chǔ)不太好的朋友,Processing 最好的一點(diǎn)就是有大量的中文教程,感謝國(guó)內(nèi)這些前輩為推廣創(chuàng)意編程所做的努力。

如何看教程?

2d87570388fa6ac7257948aff724.jpg

編程和畫畫一樣,是門手藝。光看不練,是學(xué)不會(huì)的。看教程“看”不是重點(diǎn),練才是重點(diǎn)。只有通過實(shí)打?qū)嵉厍么a,的代碼能力才可能提高。

以《愛上Processing》一書為例,書中有不少代碼示例。但僅僅看上面的實(shí)例是不完全不夠的,要想真正掌握需要分三步:理解,模仿,重組。

要吃透某個(gè)概念,要首先理解它通過文本所敘述出的概念。接著,再放到程序的語境中去理解它,敲出同樣的代碼。而要檢驗(yàn)自己是否真正理解,就需要主動(dòng)去實(shí)驗(yàn)。比如修改某個(gè)參數(shù),調(diào)整某個(gè)語句的位置,這代表有真正去思考,而不是簡(jiǎn)單地復(fù)制命令。

如果這步已經(jīng)做到了,不妨對(duì)實(shí)例進(jìn)行“默寫”,不看示例代碼。看自己能否清晰,流暢地將代碼寫出來,以此檢驗(yàn)自己的熟悉程度。

到最后,不要局限于示例本身。需要重組知識(shí)點(diǎn),這個(gè)過程同時(shí)是創(chuàng)造的過程。好比新學(xué)了 for 循環(huán),書中給出的例子都是畫線和畫圓的。那應(yīng)該去思考,如何做些簡(jiǎn)單的修改,可以做出不同的效果?例如可不可以用 arc,triangle,beginShape - endShape 這些繪圖函數(shù)去畫。或者利用 “i”,給每個(gè)圖形賦上不同的顏色。

只有走到重組這一步,才會(huì)真正成為自己的知識(shí)。而無論什么類型的教程,學(xué)習(xí)無非是這幾個(gè)過程的循環(huán)。

如何練習(xí)更有效?尋找“學(xué)習(xí)區(qū)”

練習(xí)也是有技巧的。心理學(xué)里面有一個(gè)概念叫做“刻意練習(xí)”。一萬小時(shí)理論可能大家都聽過。大意是無論做什么,只要堅(jiān)持一萬小時(shí),基本上都可以成為該領(lǐng)域的專家。

但其實(shí)這不是一次很不嚴(yán)謹(jǐn)?shù)难堇[。不同領(lǐng)域從新手到專家的習(xí)得時(shí)間都是不一樣的。就像大多數(shù)人看電影電視劇,都超過一萬小時(shí),但不見得變成專家了。

所以關(guān)鍵不是練習(xí)時(shí)間的長(zhǎng)短,而是練習(xí)的方法。所以就有了“刻意練習(xí)”這個(gè)說法。也只有刻意練習(xí),才是從新手進(jìn)化為專家的關(guān)鍵。

有人將刻意練習(xí)的內(nèi)容總結(jié)成以下四點(diǎn):

1.只在“學(xué)習(xí)區(qū)”學(xué)習(xí)
2.把訓(xùn)練內(nèi)容分成有針對(duì)性的小塊,對(duì)每個(gè)小塊進(jìn)行重復(fù)練習(xí)
3.在整個(gè)練習(xí)過程中,隨時(shí)能獲得有效反饋
4.練習(xí)時(shí),注意力高度集中

程序本身就能提供即時(shí)的反饋。所以第三點(diǎn)并不存在問題。

關(guān)鍵會(huì)是第 1 點(diǎn),什么是學(xué)習(xí)區(qū)?

人的知識(shí)技能分為層層嵌套的三個(gè)區(qū)域。那些我們已經(jīng)熟練掌握的技能,就處在舒適區(qū)。那些我們暫時(shí)無法學(xué)會(huì)的技能,就是恐慌區(qū)。兩者之間就是學(xué)習(xí)區(qū),剛好夠得著,又需要時(shí)間去掌握的。

要做到有效的練習(xí),就應(yīng)該在自己所處的學(xué)習(xí)區(qū)進(jìn)行學(xué)習(xí)。一旦學(xué)會(huì)了,就轉(zhuǎn)入下一個(gè)難點(diǎn)。

而明白這點(diǎn),就會(huì)減少許多學(xué)習(xí)上的困惑。

比如第一天接觸編程,剛掌握了 print(“Hello,world!”); 的寫法,這個(gè)知識(shí)點(diǎn)對(duì)而言就處在學(xué)習(xí)區(qū),第二天只要多重復(fù)練習(xí),就會(huì)完全熟悉它,它也會(huì)從原來的學(xué)習(xí)區(qū)的位置變?yōu)槭孢m區(qū)。之后要做的就不是繼續(xù)揪著 print 這類自己完全熟悉的內(nèi)容,而是去學(xué)習(xí)新知識(shí)。

另一種情形,則是揪著恐慌區(qū)的知識(shí)不放,這往往是最常見的,也是導(dǎo)致許多人認(rèn)為編程很難的原因。

當(dāng)學(xué)習(xí)有段時(shí)間了,肯定不會(huì)滿足于書本上的例子。通過各種資源網(wǎng)站,必然能找到一些很炫,或者很有趣的案例,直接下載了源代碼,并且很想學(xué)習(xí)它。

如果能理解,當(dāng)然最好。但通常下面兩種情況會(huì)出現(xiàn)得更多。一,里面的代碼很多都不認(rèn)識(shí)。二,每句代碼都認(rèn)識(shí),但是不明白彼此之間是如何組織的。

如果是情況1,那說明是語法和基礎(chǔ)概念還沒學(xué)好,此時(shí)應(yīng)該先去踏實(shí)地看基礎(chǔ)教程,查清每個(gè)函數(shù)的用法。如果是情況2,這時(shí)就應(yīng)該嘗試把這段程序分解,將每個(gè)小塊的概念,逐個(gè)消化。如果發(fā)覺,仍然是超出自己所能理解的限度了。就應(yīng)該擱置它,先從其它相關(guān)的,更簡(jiǎn)單的例子開始了解,不要一上手就去做復(fù)雜的東西。

知識(shí)的吸收不是一觸而就,更不代表把它完全背下來了,就真正掌握。在我看來,大部分的代碼問題都由一個(gè)共同原因所導(dǎo)致:基礎(chǔ)沒打好。當(dāng)某些函數(shù)的用法,代碼的組織方式還沒摸索清楚,這樣硬學(xué)下來的知識(shí),都是模糊的,碎片化的。

只要明白這點(diǎn),即使在程序上遇到一些暫時(shí)還無法實(shí)現(xiàn)效果,也不會(huì)苦惱,不會(huì)自慚形穢了。因?yàn)殡S著練習(xí)的增多,知識(shí)版圖的擴(kuò)大,有很多問題是不言自明的。與其硬啃,在恐慌區(qū)揪著那些自己還沒法吸收的知識(shí)。不如放慢腳步,打好基礎(chǔ)。

在“學(xué)習(xí)區(qū)學(xué)習(xí)”,用過去最通俗的說法,就是“循序漸進(jìn)”。編程并不難,只要找準(zhǔn)自己的學(xué)習(xí)節(jié)奏即可。

刻意練習(xí),大量輸出

知道練習(xí)的重要性了,也知道要在學(xué)習(xí)區(qū)練習(xí)。那有沒有具體的參考指標(biāo)?

如果以案例作為衡量單位。從零開始的話,把 print(“hello,world”)這類也算上。

基本寫夠 500 個(gè)實(shí)例左右,可以算入門了。此時(shí)基本能了解變量,函數(shù),類等等概念。

但如果要達(dá)到相對(duì)運(yùn)用自如的程度,就要做到 1000+。

這個(gè)練習(xí)還得處于學(xué)習(xí)區(qū)。就像寫 1000 個(gè) “Hello,world ”,編程是不會(huì)有進(jìn)步的(開始的兩三個(gè)可能會(huì))。但如果本身善于思考,做東西懂得舉一反三。實(shí)際練習(xí)的數(shù)量也會(huì)比這個(gè)少。所以以數(shù)量并不是絕對(duì)的指標(biāo)。

但無論如何,只有足夠量的積累,才能做到游刃有余,順手拈來。如果腦中的任何想法,都能迅速實(shí)現(xiàn),做到無障礙的表達(dá),后面就能玩得很痛快了,可以更專注于創(chuàng)意本身。

如何練習(xí)更有趣?

練習(xí)不是枯燥的代名詞。練習(xí)的方向可以很自由。知識(shí)點(diǎn)是固定的,但可以決定如何組織。許多練習(xí)只要多想一步,稍加變化,就能成為有趣的作品。

之前看書一般很少做后面的練習(xí)題,而是習(xí)慣自己給自己出思考題。比如我對(duì)“畫東西”比較感興趣,我會(huì)思考怎樣將學(xué)到的新概念往這個(gè)方向上靠攏,以此做點(diǎn)不一樣的東西。

除此之外,還可以從自己喜歡的作品去學(xué)習(xí)。Gif 狂人 Dave Whyte 的很多動(dòng)圖估計(jì)大多人都見過,他的作品常常給我?guī)砗芏囔`感。我們也可以用同樣的形式來練習(xí),甚至是模仿。

受他影響,個(gè)人有一種記錄練習(xí)的方式,就是做 Gif。只要略微有看點(diǎn)的練習(xí),我都會(huì)保存成圖片或是導(dǎo)出Gif。這樣方便回顧的同時(shí),還可以驅(qū)動(dòng)自己去持續(xù)練習(xí)。自己從初學(xué)到現(xiàn)在,已經(jīng)積累了100多的動(dòng)圖,從中可以看到自己的學(xué)習(xí)軌跡。

Test 0


 

Test 1


 

9036570366f632f875a9448a1ab7.jpg

Test 32


 


 

Test 41


 

Test 56


 

Test 106


 

Test 107

試想象下,當(dāng)某天看到自己積累了 1000 個(gè)Test,應(yīng)該會(huì)是件很有成就感的事??梢钥吹阶约旱某砷L(zhǎng),看到自己的思考脈絡(luò)。另外,制作Gif的過程無需過于追求完美,而將大量時(shí)間花在推敲細(xì)節(jié)上。只要視覺上及格即可,關(guān)鍵是其中的邏輯。

對(duì)于練習(xí),建議將它們都按類別功能用文件夾歸好類,這樣練習(xí)庫也會(huì)成為創(chuàng)作時(shí)的素材庫。寫代碼不像繪畫,創(chuàng)作一幅作品,可能每次都必須從白紙開始。Coding 則不一樣,練習(xí)是可復(fù)用的。

復(fù)用還是一種編程思維,甚至可以寫一些類或者插件,將自己最常用的東西打包起來,以此提高創(chuàng)作效率。

無論是 Processing 還是 Openframeworks,我最先想解決的問題,就是如何更快地制作 Gif,畢竟這個(gè)功能對(duì)自己而言是最常用。雖然有現(xiàn)成的一些插件,但使用起來總要敲很多代碼,十分不便。為此我就設(shè)計(jì)一些方法去簡(jiǎn)化這個(gè)流程,這樣就無需重復(fù)勞動(dòng)。(Processing快速制作Gif)

(針對(duì) OF,自己也基于 ofxGifEncoder 重寫了一個(gè)類,之后會(huì)一并開源出來)

練習(xí)的迭代

前后的練習(xí)不是毫無關(guān)聯(lián)的,可以不斷迭代,甚至成為創(chuàng)作的靈感來源。

剛開始接觸CreativeCoding的時(shí)候,我產(chǎn)生了一個(gè)問題。如果我想寫一個(gè)函數(shù),如何能從指定坐標(biāo) A,變化到指定坐標(biāo) B ?這在 Flash 或是 AE 之類的軟件中很容易實(shí)現(xiàn),但在程序中卻需要思考一番。

當(dāng)時(shí)剛學(xué)會(huì) PVector 向量,就想用它去承載坐標(biāo)點(diǎn)的數(shù)據(jù)。當(dāng)驗(yàn)證了想法可行,我就將完成后的代碼放在 animation 的文件夾中,這算完成了一個(gè)練習(xí)。

過段時(shí)間,我覺得這個(gè)運(yùn)動(dòng)效果太僵硬了,于是把代碼翻出來,再重新設(shè)計(jì)了一個(gè)規(guī)則:過中點(diǎn)前加速運(yùn)動(dòng),中點(diǎn)后就減速。這樣代碼與原來略有不同,運(yùn)動(dòng)也更加自然了。

直到某天,產(chǎn)生了一個(gè)算法的靈感,能夠結(jié)合之前的代碼,制作一個(gè)圖片轉(zhuǎn)換效果?想到的思路是將前后兩張圖片的所有像素的灰度進(jìn)行排序,再進(jìn)行點(diǎn)對(duì)點(diǎn)的映射。沒費(fèi)很大的功夫,就跑出下面的效果了。

d753570368fe32f875a944cc40de.jpg

Test 27

當(dāng)時(shí)實(shí)驗(yàn)成功后會(huì)很興奮。一是通過主動(dòng)的思考做出了不一樣的東西,二是其中的原理居然出乎意料地簡(jiǎn)單,我覺得這都是代碼的魅力所在。后面基于點(diǎn)對(duì)點(diǎn)的變換,還延伸出許多練習(xí),其實(shí)都基于先前一段最不起眼的代碼。

16705703695832f875a944c45007.jpg

Test 97

066f5703698132f875a9440b9f0c.jpg

Test 99

另一個(gè)相近的例子,是較早前做了一個(gè)錄制繪畫軌跡的練習(xí)。直到后來看到這個(gè)系列圖片。

于是有了將繪制軌跡進(jìn)行對(duì)稱的想法。

76335703701232f875a9447af40c.jpg

也催生了一個(gè)圖形生成器。

后面也做了各種各樣和畫相關(guān)的實(shí)驗(yàn)。

0825570371b76ac72579480d2138.jpg


 

所以不要忽視任何的練習(xí),這些練習(xí)距離創(chuàng)作并沒有那么遙遠(yuǎn),稍微打磨下,都可以成為作品。

更多練習(xí)

問正確的問題

前面用了很多篇幅去強(qiáng)調(diào)練習(xí)的重要性,但無論練習(xí)的次數(shù)多么多,總會(huì)遇到個(gè)人無法解決的問題。
  這時(shí)有兩種途徑,一是向google發(fā)問,二是向前輩發(fā)問。

個(gè)人解決問題的常用手段,是 Google。不推薦國(guó)內(nèi)搜索引擎,否則大多數(shù)問題的解決方案都是無法搜到的,關(guān)鍵字也最好用英文,這樣可以增大搜到答案的幾率。如果是問 OF 的相關(guān)問題,那官網(wǎng)的論壇會(huì)是提問的首選。很多時(shí)候不會(huì)是第一個(gè)提出這個(gè)問題的人,只要先搜索下就可能發(fā)現(xiàn)現(xiàn)成的答案。如果沒有,可以在上面發(fā)起問題,上面也會(huì)有熱心的管理員和網(wǎng)友給出解答。

除了google之外,如果在學(xué)校有導(dǎo)師。那就不要放過機(jī)會(huì),用大量的好問題逼出他的干貨。但如果沒有,身邊又沒有了解這個(gè)的朋友,那就需要虛心地向圈內(nèi)的前輩請(qǐng)教問題,通過各種社交媒體或是論壇網(wǎng)站。另外,向人提問是有技巧的,不要讓人覺得是不愿動(dòng)腦的伸手黨。這篇“提問的智慧”值得一讀,不僅局限在編程領(lǐng)域。

1d92570371da6ac72579481c1ec6.jpg

學(xué)習(xí)社區(qū)

除了紙質(zhì)教程之外。openProcessing 對(duì)初學(xué)者學(xué)習(xí)來說是首選。代碼都是開源的。里面有足夠豐富的資源,可以讓去學(xué)習(xí)。

而如果學(xué)習(xí)的是 OF,就沒有類似的網(wǎng)站了。要學(xué)習(xí)別人的代碼,最常用的會(huì)是Github,需要了解相關(guān)的藝術(shù)家,然后在 github上fork 他的代碼。例如 OF 創(chuàng)始人 Zack 的github,里面就有許多開源的代碼

不得不提的還有 Twitter,上面的信息質(zhì)量比國(guó)內(nèi)的微博要高,它是個(gè)很好的獲取靈感信息的平臺(tái)。許多新媒體藝術(shù)家,都很樂意在上面分享自己的一些探索,可以看到領(lǐng)域最前沿的一批人,他們是如何思考的。

自學(xué)的難點(diǎn)
  • 動(dòng)力

Coding是這樣的,了解越多,越能挖掘更多的樂趣。如果是自己自學(xué),而不是有學(xué)校課程去驅(qū)使,那堅(jiān)持的唯一理由,只能靠動(dòng)力本身了。

動(dòng)力足夠強(qiáng)烈的人,是不會(huì)意識(shí)到自己需要堅(jiān)持的,因?yàn)檎麄€(gè)過程他都樂在其中。但往往是少數(shù),多數(shù)人可能會(huì)面臨動(dòng)力不足的問題。

怎樣可以獲得動(dòng)力?做東西是最直接的。當(dāng)親手用代碼完成一個(gè)作品,獲得的成就感會(huì)持續(xù)驅(qū)動(dòng)。其次,就是關(guān)注領(lǐng)域的相關(guān)人物,在twitter上follow一些藝術(shù)家,關(guān)注他們的作品,練習(xí)。好作品絕對(duì)會(huì)激發(fā)人 Coding 的欲望。

  • 心態(tài)

學(xué)習(xí)最忌兩種心態(tài)。一是妄自菲薄,二是驕傲自大。它們都是阻止不斷進(jìn)步的因素。不要覺得編程太難,怎么學(xué)也趕不上別人。也不要認(rèn)為自己什么都會(huì)了,而放棄持續(xù)學(xué)習(xí)。

“Creative” 在先, “Coding”在后

學(xué)什么工具不重要,用工具創(chuàng)造了什么才重要。正如編出 Photoshop 的工程師,沒有人會(huì)比他們更熟悉Ps的各項(xiàng)功能了。但很顯然,不代表他們就能用這個(gè)工具創(chuàng)作出好作品。

同理,CreativeCoding 最終要比拼的不是 Code,而是Creative的想法。否則每個(gè) Coder 都會(huì)是 CreativeCoding 的高手了。設(shè)計(jì)師學(xué)編程的優(yōu)勢(shì),是他自身已經(jīng)有創(chuàng)作者的思維,并且視覺表達(dá)能力不錯(cuò),再稍微了解代碼,就可以做出很不一樣的作品。

前面之所以強(qiáng)調(diào)代碼,是不希望設(shè)計(jì)師空有想法,而沒有落地能力。學(xué)習(xí)編程除了實(shí)現(xiàn)想法之外,可以多一個(gè)角度去理解事物更底層的規(guī)則,它是能反過來豐富的想法,而不純粹是門工具。

所以想法才是最大的驅(qū)動(dòng)力。更鼓勵(lì)大家圍繞一兩個(gè)具體的想法,用它來串聯(lián)所學(xué)的知識(shí)。

自己學(xué)習(xí)創(chuàng)意編程的動(dòng)力,源于兩個(gè)感興趣的方向,一是從數(shù)的角度去剖析圖形,用代碼用法則去探索圖形的更多可能性(萬物皆數(shù))。二,是希望用程序,去測(cè)量人的思維,以此開發(fā)一些訓(xùn)練工具(量化繪畫)。

這些想法用傳統(tǒng)的軟件都是無法做到的,但學(xué)習(xí)創(chuàng)意編程讓我有機(jī)會(huì)親自去實(shí)現(xiàn)它。

“取乎其上,得乎其中;取乎其中,得乎其下;取乎其下,則無所得矣”。如果對(duì)創(chuàng)作有更高的目標(biāo),那絕對(duì)是件好事,他會(huì)驅(qū)使走得更遠(yuǎn)。

Coding的內(nèi)功

如果Coding是種武功,那算法就是“內(nèi)功”。不要疲于學(xué)習(xí)各種插件,雖然能很快的出一些很炫的效果,這些都是最表面,也最容易學(xué)會(huì)的。加深自己對(duì)算法的理解,學(xué)會(huì)對(duì)圖形進(jìn)行規(guī)則的抽象和重設(shè)計(jì),這十分重要。

另外,技術(shù)并不是創(chuàng)作的最主要瓶頸。我們不要將精力放在學(xué)習(xí)各樣五花八門的技術(shù)上。做個(gè)比喻,要成為“武林高手”,不是說刀槍劍棍什么都需要會(huì)。將一種武功練到極致,也同樣能打遍天下。代碼的創(chuàng)造相當(dāng)自由,完全可以將一些常人認(rèn)為最簡(jiǎn)單,最普通不過的規(guī)則摸透,并且將它玩到極致,這樣同樣可以走出自己的風(fēng)格。

技術(shù)怎么學(xué)都沒有盡頭的,所以學(xué)一點(diǎn),就盡量做點(diǎn)東西把它運(yùn)用起來。其實(shí)簡(jiǎn)單的技術(shù),也能做出精彩的作品。就像對(duì)有創(chuàng)造力的畫家而言,給它一支鉛筆就足夠了。

END

相信現(xiàn)在有足夠的信息可以去開始自學(xué)了。編程水平的高低,與在什么學(xué)校,學(xué)什么專業(yè),跟隨哪位老師,看哪本教材沒有必然的聯(lián)系。如果這個(gè)能力可以量化,前面的因素充其量決定開頭的第一個(gè)數(shù)字,而自我修煉,則決定這個(gè)數(shù)字后面跟多少個(gè)“0” 。

創(chuàng)意編程有它自身獨(dú)有的魅力。正如當(dāng)初我去學(xué)習(xí)它,不是因?yàn)樗転槲抑苯訋硎裁春锰?,僅僅是覺得有趣而已。希望將來有更多人,能發(fā)自內(nèi)心地喜歡創(chuàng)意編程,用它來創(chuàng)造不一樣的東西。

還等什么?下面是的Coding時(shí)間:)


24
評(píng)論區(qū)(0)
正在加載評(píng)論...
相關(guān)推薦