欧美中文字幕在线播放_人妻无码免费的_中文日韩欧美州_无码av中文系列久久免费

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

2018-07-13 3455 0

f17a570363fc6ac72579485db019.jpg

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

808d5703643832f875a944ed3687.jpg

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

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

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

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

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

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

信息源頭

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

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

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

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

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

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

如何看教程?

2d87570388fa6ac7257948aff724.jpg

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

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

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

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

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

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

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

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

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

所以關(guān)鍵不是練習(xí)時(shí)間的長(zhǎng)短,而是練習(xí)的方法。所以就有了“刻意練習(xí)”這個(gè)說(shuō)法。也只有刻意練習(xí),才是從新手進(jìn)化為專(zhuā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í)過(guò)程中,隨時(shí)能獲得有效反饋
4.練習(xí)時(shí),注意力高度集中

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

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

人的知識(shí)技能分為層層嵌套的三個(gè)區(qū)域。那些我們已經(jīng)熟練掌握的技能,就處在舒適區(qū)。那些我們暫時(shí)無(wú)法學(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!”); 的寫(xiě)法,這個(gè)知識(shí)點(diǎn)對(duì)而言就處在學(xué)習(xí)區(qū),第二天只要多重復(fù)練習(xí),就會(huì)完全熟悉它,它也會(huì)從原來(lái)的學(xué)習(xí)區(qū)的位置變?yōu)槭孢m區(qū)。之后要做的就不是繼續(xù)揪著 print 這類(lèi)自己完全熟悉的內(nèi)容,而是去學(xué)習(xí)新知識(shí)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

除此之外,還可以從自己喜歡的作品去學(xué)習(xí)。Gif 狂人 Dave Whyte 的很多動(dòng)圖估計(jì)大多人都見(jiàn)過(guò),他的作品常常給我?guī)?lái)很多靈感。我們也可以用同樣的形式來(lái)練習(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的過(guò)程無(wú)需過(guò)于追求完美,而將大量時(shí)間花在推敲細(xì)節(jié)上。只要視覺(jué)上及格即可,關(guān)鍵是其中的邏輯。

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

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

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

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

練習(xí)的迭代

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

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

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

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

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

d753570368fe32f875a944cc40de.jpg

Test 27

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

16705703695832f875a944c45007.jpg

Test 97

066f5703698132f875a9440b9f0c.jpg

Test 99

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

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

76335703701232f875a9447af40c.jpg

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

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

0825570371b76ac72579480d2138.jpg


 

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

更多練習(xí)

問(wèn)正確的問(wèn)題

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

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

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

1d92570371da6ac72579481c1ec6.jpg

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

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

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

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

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

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

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

怎樣可以獲得動(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)步的因素。不要覺(jué)得編程太難,怎么學(xué)也趕不上別人。也不要認(rèn)為自己什么都會(huì)了,而放棄持續(xù)學(xué)習(xí)。

“Creative” 在先, “Coding”在后

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

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

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

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

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

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

“取乎其上,得乎其中;取乎其中,得乎其下;取乎其下,則無(wú)所得矣”。如果對(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í)各樣五花八門(mén)的技術(shù)上。做個(gè)比喻,要成為“武林高手”,不是說(shuō)刀槍劍棍什么都需要會(huì)。將一種武功練到極致,也同樣能打遍天下。代碼的創(chuàng)造相當(dāng)自由,完全可以將一些常人認(rèn)為最簡(jiǎn)單,最普通不過(guò)的規(guī)則摸透,并且將它玩到極致,這樣同樣可以走出自己的風(fēng)格。

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

END

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

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

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


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