之前有發(fā)過相關(guān)的資源索引,原創(chuàng)教程,練習(xí),甚至是源代碼。但很多感興趣的人還是不了解從何入手。自己接觸 Creative Coding 有一段時間了,雖算不上專家,但也有一定了解。這里想分享一點(diǎn)個人的學(xué)習(xí)心得,談?wù)勗O(shè)計師應(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)初自己為什么選擇這種方式呢?不是因為有先見之明,了解自學(xué)有這等好處,僅僅是因為沒有條件。學(xué)校沒開設(shè)這類課程,身邊也沒有認(rèn)識會這個的朋友,也就不得不自學(xué)了。
很多人覺得自學(xué)的難處之一是,沒有氛圍,一個人難以堅持。現(xiàn)在有了互聯(lián)網(wǎng),情況大不一樣了。通過國內(nèi)外的各種社交媒體,論壇網(wǎng)站,你可以了解到領(lǐng)域里最前沿的人物,他們近期的動向。看過什么,如何思考問題,做了什么練習(xí),產(chǎn)出什么作品,這些信息都可以刺激你。
如果你勤學(xué)好問,你甚至可以直接向這些前輩請教。前提是展示你為了獲得這個問題做了哪些努力。
所以只要有一臺能上網(wǎng),可翻墻的電腦,你就具備了最基本的自學(xué)條件,剩下只是方法的問題。
創(chuàng)意編程的魅力所在
講如何學(xué)之前,還是先談?wù)劄槭裁磳W(xué)。
創(chuàng)意編程。我的個人理解,就是用代碼畫畫。如果你本身就是設(shè)計師或插畫師。那現(xiàn)在,你僅僅是換了一個圖形表達(dá)工具而已。
那創(chuàng)意編程能有什么具體的應(yīng)用價值呢?“有什么用?”,其實不是個好問題。我更喜歡回答,它為什么有趣。
對于一個藝術(shù)家來說,一輩子的追求無非就是形成自我風(fēng)格。你可能窮其一生,最終可以熟練駕馭幾種畫風(fēng)。但你卻無法做到掌握所有人的繪畫風(fēng)格。
用油畫創(chuàng)作一幅作品,你可能需要一個月。發(fā)明了手繪板,數(shù)位屏這些工具,可以將時間縮短到1天。將來腦電技術(shù)成熟,你甚至可能用意念來畫畫,時間將更短。
這些都是由于工具的革新所帶來的。但人的思維速度再怎么快,也不可能在一秒內(nèi)創(chuàng)作100張作品。這是人的思維局限,也是傳統(tǒng)創(chuàng)作工具的局限。
通過計算機(jī)則不一樣。你只要了解自己是如何思考,并將這個思考過程用編程語言去描述,計算機(jī)就能幫你實現(xiàn)。
要知道,當(dāng)今最有想象力,最不可思議的事情,都與計算機(jī)發(fā)生關(guān)聯(lián)。而通過編程,可以將你的想法延伸到更多的地方。
2015年9月,Leon A. Gatys等人基于神經(jīng)網(wǎng)絡(luò)的論文就讓大家看到了可能性。
當(dāng)然,還是有人喜歡用畫筆去完成這種探索,我更傾向用計算機(jī)。在我看來,編程對于圖形創(chuàng)作而言,就是個潘多拉魔盒。下面我想講講它的打開方式~
設(shè)計師學(xué)編程,選哪門語言?
自己其實在大學(xué)期間就對編程產(chǎn)生過興趣,也淺嘗輒止地了解過一些編程語言,諸如 VB,C,后來還包括 python,最終都沒有堅持下去。
后來總結(jié)了一個原因,學(xué)習(xí)這些編程語言的反饋周期太長了。并且都是從抽象的概念開始講起,輸入輸出都是一串?dāng)?shù)字,相當(dāng)不直觀。
直到我在一年前遇到 Processing。發(fā)現(xiàn)它簡直就是為設(shè)計師這種視覺生物所量身定做的。簡單的代碼,就能寫出十分豐富的視覺效果。過往在編程中抽象的概念,這里都會以一種鮮活的視覺形式呈現(xiàn)出來,十分有趣。
之后它一直讓我愛不釋手。由于反饋直觀,每次練習(xí)都與畫畫無疑。所以會持續(xù)刺激自己,去用代碼進(jìn)行更多圖形上的探索。
Processing的設(shè)計理念,是讓設(shè)計師,藝術(shù)家都可以輕松地掌握編程。雖然門檻降低了,不代表它是一門“玩具”語言。畢竟編程語言都許多概念都是相通的,而 Processing 本身又基于 Java,所以此門語言的一些基礎(chǔ)編程概念,在其他語言中也一樣有。假如以后你想學(xué)習(xí)一門新語言,你在Processing 上打下的基礎(chǔ)都能發(fā)揮作用。
我自己的所有編程基礎(chǔ)的修煉,都是在Processing上完成的。我認(rèn)為Processing是設(shè)計師進(jìn)入代碼世界的首選工具。
信息源頭
有了目標(biāo),就需要去尋找相關(guān)的學(xué)習(xí)資源了。這里是之前自己整理的一份資源清單。(CreativeCoding 資源索引)
里面的信息對初學(xué)者而言已經(jīng)足夠全了,開始時無需考慮過多,先選一本基礎(chǔ)教程,老老實實從它學(xué)起。除了基礎(chǔ)書籍之外,索引里還提到了一些諸如軟件的誕生地,語言的開山鼻祖以及相關(guān)的資源網(wǎng)站,只要按圖索驥,這些信息可以幫助你對這個領(lǐng)域有一個概貌的了解。
值得一提的是,除了上面的鏈接。Processing自身的范例庫做得相當(dāng)完善,如果本身有代碼基礎(chǔ),那幾乎只通過范例庫,就能學(xué)會這門語言了。
除了 Processing ,里面還提到了另一門創(chuàng)意編程的主流工具叫 Openframeworks(簡稱OF)。它們都是最主流的創(chuàng)意編程工具之一。格式,寫法十分相像。OF有它自身強(qiáng)大的地方,比如它是基于C++的,運(yùn)行效率更高。支持跨平臺,代碼幾乎可以不做任何改動,就能在Windows和Mac OS上執(zhí)行。而且還能開發(fā)App。
盡管如此,對于初學(xué)者,我還是推薦先從 Processing 入手,因為它有更豐富的學(xué)習(xí)資源,更詳盡的文檔,更友善的社區(qū)。這些都是 Openframeworks 不具備的。
對于外語基礎(chǔ)不太好的朋友,Processing 最好的一點(diǎn)就是有大量的中文教程,感謝國內(nèi)這些前輩為推廣創(chuàng)意編程所做的努力。
如何看教程?
編程和畫畫一樣,是門手藝。光看不練,是學(xué)不會的??唇坛?ldquo;看”不是重點(diǎn),練才是重點(diǎn)。只有通過實打?qū)嵉厍么a,你的代碼能力才可能提高。
以《愛上Processing》一書為例,書中有不少代碼示例。但僅僅看上面的實例是不完全不夠的,要想真正掌握需要分三步:理解,模仿,重組。
要吃透某個概念,你要首先理解它通過文本所敘述出的概念。接著,再放到程序的語境中去理解它,敲出同樣的代碼。而要檢驗自己是否真正理解,你就需要主動去實驗。比如修改某個參數(shù),調(diào)整某個語句的位置,這代表你有真正去思考,而不是簡單地復(fù)制命令。
如果你這步已經(jīng)做到了,不妨對實例進(jìn)行“默寫”,不看示例代碼??醋约耗芊袂逦鲿车貙⒋a寫出來,以此檢驗自己的熟悉程度。
到最后,不要局限于示例本身。你需要重組知識點(diǎn),這個過程同時是創(chuàng)造的過程。好比你新學(xué)了 for 循環(huán),書中給出的例子都是畫線和畫圓的。那你應(yīng)該去思考,如何做些簡單的修改,可以做出不同的效果?例如可不可以用 arc,triangle,beginShape - endShape 這些繪圖函數(shù)去畫。或者利用 “i”,給每個圖形賦上不同的顏色。
只有走到重組這一步,才會真正成為自己的知識。而無論什么類型的教程,學(xué)習(xí)無非是這幾個過程的循環(huán)。
如何練習(xí)更有效?尋找“學(xué)習(xí)區(qū)”
練習(xí)也是有技巧的。心理學(xué)里面有一個概念叫做“刻意練習(xí)”。一萬小時理論可能大家都聽過。大意是無論做什么,只要堅持一萬小時,基本上都可以成為該領(lǐng)域的專家。
但其實這不是一次很不嚴(yán)謹(jǐn)?shù)难堇[。不同領(lǐng)域從新手到專家的習(xí)得時間都是不一樣的。就像大多數(shù)人看電影電視劇,都超過一萬小時,但不見得變成專家了。
所以關(guān)鍵不是練習(xí)時間的長短,而是練習(xí)的方法。所以就有了“刻意練習(xí)”這個說法。也只有刻意練習(xí),才是從新手進(jìn)化為專家的關(guān)鍵。
有人將刻意練習(xí)的內(nèi)容總結(jié)成以下四點(diǎn):
1.只在“學(xué)習(xí)區(qū)”學(xué)習(xí)
2.把訓(xùn)練內(nèi)容分成有針對性的小塊,對每個小塊進(jìn)行重復(fù)練習(xí)
3.在整個練習(xí)過程中,隨時能獲得有效反饋
4.練習(xí)時,注意力高度集中
程序本身就能提供即時的反饋。所以第三點(diǎn)并不存在問題。
關(guān)鍵會是第 1 點(diǎn),什么是學(xué)習(xí)區(qū)?
人的知識技能分為層層嵌套的三個區(qū)域。那些我們已經(jīng)熟練掌握的技能,就處在舒適區(qū)。那些我們暫時無法學(xué)會的技能,就是恐慌區(qū)。兩者之間就是學(xué)習(xí)區(qū),剛好夠得著,又需要時間去掌握的。
要做到有效的練習(xí),就應(yīng)該在自己所處的學(xué)習(xí)區(qū)進(jìn)行學(xué)習(xí)。一旦學(xué)會了,就轉(zhuǎn)入下一個難點(diǎn)。
而明白這點(diǎn),就會減少許多學(xué)習(xí)上的困惑。
比如你第一天接觸編程,剛掌握了 print(“Hello,world!”); 的寫法,這個知識點(diǎn)對你而言就處在學(xué)習(xí)區(qū),第二天你只要多重復(fù)練習(xí),你就會完全熟悉它,它也會從原來的學(xué)習(xí)區(qū)的位置變?yōu)槭孢m區(qū)。之后你要做的就不是繼續(xù)揪著 print 這類自己完全熟悉的內(nèi)容,而是去學(xué)習(xí)新知識。
另一種情形,則是揪著恐慌區(qū)的知識不放,這往往是最常見的,也是導(dǎo)致許多人認(rèn)為編程很難的原因。
當(dāng)你學(xué)習(xí)有段時間了,肯定不會滿足于書本上的例子。通過各種資源網(wǎng)站,你必然能找到一些很炫,或者很有趣的案例,你直接下載了源代碼,并且很想學(xué)習(xí)它。
如果你能理解,當(dāng)然最好。但通常下面兩種情況會出現(xiàn)得更多。一,里面的代碼很多都不認(rèn)識。二,每句代碼都認(rèn)識,但是不明白彼此之間是如何組織的。
如果是情況1,那說明是語法和基礎(chǔ)概念還沒學(xué)好,此時應(yīng)該先去踏實地看基礎(chǔ)教程,查清每個函數(shù)的用法。如果是情況2,你這時你就應(yīng)該嘗試把這段程序分解,將每個小塊的概念,逐個消化。如果你發(fā)覺,仍然是超出自己所能理解的限度了。就應(yīng)該擱置它,先從其它相關(guān)的,更簡單的例子開始了解,不要一上手就去做復(fù)雜的東西。
知識的吸收不是一觸而就,更不代表你把它完全背下來了,就真正掌握。在我看來,大部分的代碼問題都由一個共同原因所導(dǎo)致:基礎(chǔ)沒打好。當(dāng)某些函數(shù)的用法,代碼的組織方式你還沒摸索清楚,你這樣硬學(xué)下來的知識,都是模糊的,碎片化的。
只要明白這點(diǎn),即使你在程序上遇到一些暫時還無法實現(xiàn)效果,也不會苦惱,不會自慚形穢了。因為隨著練習(xí)的增多,知識版圖的擴(kuò)大,有很多問題是不言自明的。與其硬啃,在恐慌區(qū)揪著那些自己還沒法吸收的知識。不如放慢腳步,打好基礎(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 個實例左右,可以算入門了。此時你基本能了解變量,函數(shù),類等等概念。
但如果要達(dá)到相對運(yùn)用自如的程度,就要做到 1000+。
這個練習(xí)還得處于學(xué)習(xí)區(qū)。就像你寫 1000 個 “Hello,world ”,編程是不會有進(jìn)步的(開始的兩三個可能會)。但如果你本身善于思考,做東西懂得舉一反三。實際練習(xí)的數(shù)量也會比這個少。所以以數(shù)量并不是絕對的指標(biāo)。
但無論如何,只有足夠量的積累,才能做到游刃有余,順手拈來。如果你腦中的任何想法,都能迅速實現(xiàn),做到無障礙的表達(dá),后面就能玩得很痛快了,可以更專注于創(chuàng)意本身。
如何練習(xí)更有趣?
練習(xí)不是枯燥的代名詞。練習(xí)的方向可以很自由。知識點(diǎn)是固定的,但你可以決定如何組織。許多練習(xí)只要多想一步,稍加變化,就能成為有趣的作品。
之前看書一般很少做后面的練習(xí)題,而是習(xí)慣自己給自己出思考題。比如我對“畫東西”比較感興趣,我會思考怎樣將學(xué)到的新概念往這個方向上靠攏,以此做點(diǎn)不一樣的東西。
除此之外,你還可以從自己喜歡的作品去學(xué)習(xí)。Gif 狂人 Dave Whyte 的很多動圖估計大多人都見過,他的作品常常給我?guī)砗芏囔`感。我們也可以用同樣的形式來練習(xí),甚至是模仿。
受他影響,個人有一種記錄練習(xí)的方式,就是做 Gif。只要略微有看點(diǎn)的練習(xí),我都會保存成圖片或是導(dǎo)出Gif。這樣方便回顧的同時,還可以驅(qū)動自己去持續(xù)練習(xí)。自己從初學(xué)到現(xiàn)在,已經(jīng)積累了100多的動圖,從中可以看到自己的學(xué)習(xí)軌跡。
Test 0
Test 1
Test 32
Test 41
Test 56
Test 106
Test 107
試想象下,當(dāng)你某天看到自己積累了 1000 個Test,應(yīng)該會是件很有成就感的事。可以看到自己的成長,看到自己的思考脈絡(luò)。另外,制作Gif的過程無需過于追求完美,而將大量時間花在推敲細(xì)節(jié)上。只要視覺上及格即可,關(guān)鍵是其中的邏輯。
對于練習(xí),建議將它們都按類別功能用文件夾歸好類,這樣練習(xí)庫也會成為你創(chuàng)作時的素材庫。寫代碼不像繪畫,創(chuàng)作一幅作品,你可能每次都必須從白紙開始。Coding 則不一樣,練習(xí)是可復(fù)用的。
復(fù)用還是一種編程思維,你甚至可以寫一些類或者插件,將自己最常用的東西打包起來,以此提高創(chuàng)作效率。
無論是 Processing 還是 Openframeworks,我最先想解決的問題,就是如何更快地制作 Gif,畢竟這個功能對自己而言是最常用。雖然有現(xiàn)成的一些插件,但使用起來總要敲很多代碼,十分不便。為此我就設(shè)計一些方法去簡化這個流程,這樣就無需重復(fù)勞動。(Processing快速制作Gif)
(針對 OF,自己也基于 ofxGifEncoder 重寫了一個類,之后會一并開源出來)
練習(xí)的迭代
前后的練習(xí)不是毫無關(guān)聯(lián)的,可以不斷迭代,甚至成為創(chuàng)作的靈感來源。
剛開始接觸CreativeCoding的時候,我產(chǎn)生了一個問題。如果我想寫一個函數(shù),如何能從指定坐標(biāo) A,變化到指定坐標(biāo) B ?這在 Flash 或是 AE 之類的軟件中很容易實現(xiàn),但在程序中卻需要思考一番。
當(dāng)時剛學(xué)會 PVector 向量,就想用它去承載坐標(biāo)點(diǎn)的數(shù)據(jù)。當(dāng)驗證了想法可行,我就將完成后的代碼放在 animation 的文件夾中,這算完成了一個練習(xí)。
過段時間,我覺得這個運(yùn)動效果太僵硬了,于是把代碼翻出來,再重新設(shè)計了一個規(guī)則:過中點(diǎn)前加速運(yùn)動,中點(diǎn)后就減速。這樣代碼與原來略有不同,運(yùn)動也更加自然了。
直到某天,產(chǎn)生了一個算法的靈感,能夠結(jié)合之前的代碼,制作一個圖片轉(zhuǎn)換效果?想到的思路是將前后兩張圖片的所有像素的灰度進(jìn)行排序,再進(jìn)行點(diǎn)對點(diǎn)的映射。沒費(fèi)很大的功夫,就跑出下面的效果了。
Test 27
當(dāng)時實驗成功后會很興奮。一是你通過主動的思考做出了不一樣的東西,二是其中的原理居然出乎意料地簡單,我覺得這都是代碼的魅力所在。后面基于點(diǎn)對點(diǎn)的變換,還延伸出許多練習(xí),其實都基于先前一段最不起眼的代碼。
Test 97
Test 99
另一個相近的例子,是較早前做了一個錄制繪畫軌跡的練習(xí)。直到后來看到這個系列圖片。
于是有了將繪制軌跡進(jìn)行對稱的想法。
也催生了一個圖形生成器。
后面也做了各種各樣和畫相關(guān)的實驗。
所以不要忽視任何的練習(xí),這些練習(xí)距離創(chuàng)作并沒有那么遙遠(yuǎn),稍微打磨下,都可以成為作品。
更多練習(xí)
問正確的問題
前面用了很多篇幅去強(qiáng)調(diào)練習(xí)的重要性,但無論你練習(xí)的次數(shù)多么多,總會遇到你個人無法解決的問題。
這時有兩種途徑,一是向google發(fā)問,二是向前輩發(fā)問。
個人解決問題的常用手段,是 Google。不推薦國內(nèi)搜索引擎,否則大多數(shù)問題的解決方案你都是無法搜到的,關(guān)鍵字也最好用英文,這樣可以增大搜到答案的幾率。如果是問 OF 的相關(guān)問題,那官網(wǎng)的論壇會是提問的首選。很多時候你不會是第一個提出這個問題的人,只要先搜索下就可能發(fā)現(xiàn)現(xiàn)成的答案。如果沒有,你可以在上面發(fā)起問題,上面也會有熱心的管理員和網(wǎng)友給出解答。
除了google之外,如果你在學(xué)校有導(dǎo)師。那就不要放過機(jī)會,用大量的好問題逼出他的干貨。但如果你沒有,身邊又沒有了解這個的朋友,那就需要虛心地向圈內(nèi)的前輩請教問題,通過各種社交媒體或是論壇網(wǎng)站。另外,向人提問是有技巧的,不要讓人覺得你是不愿動腦的伸手黨。這篇“提問的智慧”值得一讀,不僅局限在編程領(lǐng)域。
學(xué)習(xí)社區(qū)
除了紙質(zhì)教程之外。openProcessing 對初學(xué)者學(xué)習(xí)來說是首選。代碼都是開源的。里面有足夠豐富的資源,可以讓你去學(xué)習(xí)。
而如果你學(xué)習(xí)的是 OF,就沒有類似的網(wǎng)站了。要學(xué)習(xí)別人的代碼,最常用的會是Github,你需要了解相關(guān)的藝術(shù)家,然后在 github上fork 他的代碼。例如 OF 創(chuàng)始人 Zack 的github,里面就有許多開源的代碼
不得不提的還有 Twitter,上面的信息質(zhì)量比國內(nèi)的微博要高,它是個很好的獲取靈感信息的平臺。許多新媒體藝術(shù)家,都很樂意在上面分享自己的一些探索,你可以看到領(lǐng)域最前沿的一批人,他們是如何思考的。
自學(xué)的難點(diǎn)
-
動力
動力
Coding是這樣的,你了解越多,越能挖掘更多的樂趣。如果你是自己自學(xué),而不是有學(xué)校課程去驅(qū)使你,那堅持的唯一理由,只能靠動力本身了。
動力足夠強(qiáng)烈的人,是不會意識到自己需要堅持的,因為整個過程他都樂在其中。但往往是少數(shù),多數(shù)人可能會面臨動力不足的問題。
怎樣可以獲得動力?做東西是最直接的。當(dāng)你親手用代碼完成一個作品,獲得的成就感會持續(xù)驅(qū)動你。其次,就是關(guān)注領(lǐng)域的相關(guān)人物,在twitter上follow一些藝術(shù)家,關(guān)注他們的作品,練習(xí)。好作品絕對會激發(fā)人 Coding 的欲望。
-
心態(tài)
學(xué)習(xí)最忌兩種心態(tài)。一是妄自菲薄,二是驕傲自大。它們都是阻止你不斷進(jìn)步的因素。不要覺得編程太難,怎么學(xué)也趕不上別人。也不要認(rèn)為自己什么都會了,而放棄持續(xù)學(xué)習(xí)。
“Creative” 在先, “Coding”在后
學(xué)什么工具不重要,用工具創(chuàng)造了什么才重要。正如編出 Photoshop 的工程師,沒有人會比他們更熟悉Ps的各項功能了。但很顯然,不代表他們就能用這個工具創(chuàng)作出好作品。
同理,CreativeCoding 最終要比拼的不是 Code,而是Creative的想法。否則每個 Coder 都會是 CreativeCoding 的高手了。設(shè)計師學(xué)編程的優(yōu)勢,是他自身已經(jīng)有創(chuàng)作者的思維,并且視覺表達(dá)能力不錯,再稍微了解代碼,就可以做出很不一樣的作品。
前面之所以強(qiáng)調(diào)代碼,是不希望設(shè)計師空有想法,而沒有落地能力。學(xué)習(xí)編程除了實現(xiàn)想法之外,可以多一個角度去理解事物更底層的規(guī)則,它是能反過來豐富你的想法,而不純粹是門工具。
所以想法才是最大的驅(qū)動力。更鼓勵大家圍繞一兩個具體的想法,用它來串聯(lián)所學(xué)的知識。
自己學(xué)習(xí)創(chuàng)意編程的動力,源于兩個感興趣的方向,一是從數(shù)的角度去剖析圖形,用代碼用法則去探索圖形的更多可能性(萬物皆數(shù))。二,是希望用程序,去測量人的思維,以此開發(fā)一些訓(xùn)練工具(量化繪畫)。
這些想法用傳統(tǒng)的軟件都是無法做到的,但學(xué)習(xí)創(chuàng)意編程讓我有機(jī)會親自去實現(xiàn)它。
“取乎其上,得乎其中;取乎其中,得乎其下;取乎其下,則無所得矣”。如果你對創(chuàng)作有更高的目標(biāo),那絕對是件好事,他會驅(qū)使你走得更遠(yuǎn)。
Coding的內(nèi)功
如果Coding是種武功,那算法就是“內(nèi)功”。不要疲于學(xué)習(xí)各種插件,雖然能很快的出一些很炫的效果,這些都是最表面,也最容易學(xué)會的。加深自己對算法的理解,學(xué)會對圖形進(jìn)行規(guī)則的抽象和重設(shè)計,這十分重要。
另外,技術(shù)并不是創(chuàng)作的最主要瓶頸。我們不要將精力放在學(xué)習(xí)各樣五花八門的技術(shù)上。做個比喻,要成為“武林高手”,不是說刀槍劍棍你什么都需要會。你將一種武功練到極致,也同樣能打遍天下。代碼的創(chuàng)造相當(dāng)自由,你完全可以將一些常人認(rèn)為最簡單,最普通不過的規(guī)則摸透,并且將它玩到極致,這樣同樣可以走出自己的風(fēng)格。
技術(shù)怎么學(xué)都沒有盡頭的,所以學(xué)一點(diǎn),就盡量做點(diǎn)東西把它運(yùn)用起來。其實簡單的技術(shù),也能做出精彩的作品。就像對有創(chuàng)造力的畫家而言,給它一支鉛筆就足夠了。
END
相信你現(xiàn)在有足夠的信息可以去開始自學(xué)了。編程水平的高低,與你在什么學(xué)校,學(xué)什么專業(yè),跟隨哪位老師,看哪本教材沒有必然的聯(lián)系。如果這個能力可以量化,前面的因素充其量決定開頭的第一個數(shù)字,而自我修煉,則決定這個數(shù)字后面跟多少個“0” 。
創(chuàng)意編程有它自身獨(dú)有的魅力。正如當(dāng)初我去學(xué)習(xí)它,不是因為它能為我直接帶來什么好處,僅僅是覺得有趣而已。希望將來有更多人,能發(fā)自內(nèi)心地喜歡創(chuàng)意編程,用它來創(chuàng)造不一樣的東西。
還等什么?下面是你的Coding時間:)