「 代碼 」對于我來說,如同「 設(shè)計 」一樣,都是為了「 創(chuàng)造 」 出某種產(chǎn)品的一種手段。 作為設(shè)計師,與開發(fā)打交道,難免會有種 ” 巧婦難為無米之炊 “ 的感覺; 而程序員,當(dāng)自己開發(fā)了某個工具之后,為了追求更好的體驗,苦于不懂「 設(shè)計 」,也很難更上一層樓。 寫代碼重要嗎? “代碼只服雷軍”,雷軍在小米之前,做了10年程序員。 據(jù)網(wǎng)友爆料,京東劉強(qiáng)東在一次講座上,稱自己大三(1995年)的時候,他給別人寫代碼,一個晚上就能賺5萬。 設(shè)計師應(yīng)該會寫代碼嗎? 設(shè)計工具的演進(jìn),從Sketch 、 Pixate, 再到 Framer,設(shè)計師的工具,越來越簡單有效地通過原型表現(xiàn)創(chuàng)意。 設(shè)計工具引入代碼 Framer是一款結(jié)合代碼與可視化實現(xiàn)的交互設(shè)計工具,因為通過代碼,可以完全控制交互效果,設(shè)計師不僅停留在畫圖的層面,更多的可以關(guān)注到實現(xiàn)的真實效果。 寫代碼難嗎? 一位朋友,在咨詢了我一陣子后,開始學(xué)習(xí) Python ,但是在堅持了2個月的時候,他逐漸減少學(xué)習(xí)時間,并最終放棄了。因為,他覺得代碼要學(xué)習(xí)的知識太龐大了,不知如何入手,一旦有新問題解決不了學(xué)習(xí)進(jìn)度就卡在那里,從而越學(xué)越覺得難。 知識量龐大,問題不斷 其實寫代碼,入門并不難 因為還有積木式編程語言:Scratch 不管是成年人,還是青少年,通過Scratch可以快速得掌握編程的核心思想。但核心思想是什么?往往被許多人所忽略。? 學(xué)習(xí)編程,應(yīng)該掌握其運(yùn)行的邏輯,試試回答以下幾個問題: 1 我們是如何通過一個個的指令給計算機(jī)安排任務(wù)的? 2 計算機(jī)如何按照我們設(shè)定的條件,執(zhí)行任務(wù)? 3 計算機(jī)是如何執(zhí)行重復(fù)執(zhí)行任務(wù)的? 4 計算機(jī)完成任務(wù)的時候,是如何反饋給我們的? 代碼最難的是邏輯 引一位Oracle程序員在Hacker News上吐槽自己的工作的討論。這個工程師的核心痛點(diǎn)是,Oracle經(jīng)歷長期的產(chǎn)品線迭代,代碼異常龐大、邏輯復(fù)雜。每新增一個特性或者修復(fù)BUG,該工程師都需要大量的調(diào)試,小心謹(jǐn)慎的進(jìn)行著日常的工作。而Oracle每次的版本發(fā)布都經(jīng)歷數(shù)百萬次的測試,工作量可想而知。 學(xué)習(xí)代碼也是有方法 一般的初學(xué)者是這2類: 零基礎(chǔ),指的是對代碼一點(diǎn)了解,或者曾經(jīng)看過一點(diǎn)點(diǎn),沒有系統(tǒng)了解過編程語言的。 入門級,會一門編程語言,會寫一點(diǎn)點(diǎn)代碼,但是無法自己完成一個項目從0到1構(gòu)建的。 以下是給初學(xué)者如何學(xué)習(xí)代碼的指南。 01 最小項目實踐+系統(tǒng)地刻意練習(xí) 如果是零基礎(chǔ),建議先學(xué)一門語言,一步步來,按章節(jié)進(jìn)行,同時,適當(dāng)增加實踐項目的練習(xí),比如DIY一個以圖搜圖引擎等類似的項目。 當(dāng)你學(xué)完這一階段的入門,不再是0基礎(chǔ)之后,就可以嘗試了解各種語言的環(huán)境安裝、最小可運(yùn)行代碼集,以及各種開發(fā)工具,嘗試各種好玩、復(fù)雜的項目了~ 02 最小可運(yùn)行的代碼集 主要通過看示例,包括作者提供的示例代碼,網(wǎng)上文章提供的示例代碼等;舉一個turicreate的以圖搜圖代碼示例: 03 理解功能 get到思想就好,理解代碼里的每一句的含義,真實的行為,就跟讀書一樣,知道作者的核心思想是什么; 比如下面這3句,第1句是初始化一個類,該類可以提取圖片的特征向量,第2句是通過文件路徑打開圖片,第3句是從圖片提取特征向量。 04 關(guān)注輸入、輸出的數(shù)據(jù)結(jié)構(gòu) 輸入的是字符串,還是一個列表,還是一個字典?輸出的是什么也非常重要,比如輸出的時候,有None的可能,那下一段代碼對此輸出結(jié)果引用的時候,就要注意啦。 如果輸入_idea為"",輸出為None,這個時候?qū)懘a的時候就要留意輸入跟輸出的各種可能。 05 即搜即用 當(dāng)你掌握以上技巧的時候,就會發(fā)現(xiàn)沒必要從頭到尾全部一口氣把代碼全部學(xué)完,需要的時候再快速翻閱文檔,通過示例、輸入輸出、理解功能這三個點(diǎn),就可以現(xiàn)學(xué)現(xiàn)用啦。 06 優(yōu)雅的代碼 對于初學(xué)者來說,需要關(guān)注如何書寫優(yōu)雅的代碼,主要表現(xiàn)在: 代碼所在位置恰當(dāng); 有適當(dāng)?shù)淖⑨專?/span> 適當(dāng)?shù)目s進(jìn)和空行; 以及沒有重復(fù)代碼…… 這里面的內(nèi)功修養(yǎng),離不開設(shè)計模式和代碼重構(gòu),還要有非常多的實踐與刻意練習(xí)。這幾本書都可以抽空讀一讀: 《Head First設(shè)計模式》 《重構(gòu)》 《Clean Code》 以上為全文。 寫代碼是基本功,鍛煉的是邏輯思維能力,跟解決問題的能力。 在不久的未來,寫代碼也是可以機(jī)器完成的,不知大家關(guān)注過這項研究嗎? pix2code 等論文提出了一個強(qiáng)大的前端代碼生成模型,解釋了如何利用 LSTM 與 CNN 將設(shè)計原型轉(zhuǎn)化為 HTML 和 CSS 網(wǎng)站。 人工智能寫代碼,未來可期; 學(xué)習(xí)代碼,我們應(yīng)該更多地關(guān)注背后的邏輯思維能力。 歡迎在MixLab討論相關(guān)內(nèi)容、技術(shù)實現(xiàn), MixLab是一所面向未來的實驗室 |
|