男主角:Wuvist(新浪微博),真名翁偉,自稱胖程序員一個,幸虧已婚。學習.NET
本文做者:Wuvist程序員
女主角:Katze,Wuvist的老婆,女程序員,
「算法」、「數據結構」等,是本質;很重要,須要掌握,但通常開發時,不多須要本身去實現。編程
以爲多數開發,是「拚積木」。設計模式
即使是業務邏輯須要對一些數據進行排序,也不可能本身去實現一個quicksort算法;而是直接調用quicksort的現成類庫。服務器
這也直接形成了2B ED窮其一輩子都不能掌握真正的編程能力。數據結構
他們認爲,可以「解決」問題就好,至於問題是怎麼解決的,他們並不關心。架構
對於細節的認識、掌控能力,直接形成了水平的天淵之別。框架
以拍照爲例子,之前人們用傻瓜相機,如今人們用iPhone去拍照;很快,很方便,還能夠加濾鏡。運維
可是,普通人們在不瞭解什麼是光圈、精深、背光等概念的狀況下,是沒有可能成爲攝影師的。
即使他們放下iPhone拿起DSLR。
普通人跟攝影師拍攝一樣的東西;出來的照片也許會差很少,但若是深刻去比較,景深、角度、光線、取景等等等等細節,則都會有差異,而這些差異積累起來,就形成了普通照片與攝影做品的差異。
畫家要畫好畫,必然要對畫筆、顏料、紙張的特性有深刻的瞭解。
廚師要作好菜,必然要了解食材的特性,對調味料、廚具等有嫺熟的掌控。
ED的「解決問題就好」,跟沒有下過廚房的千金×××拿着菜譜使用微波爐作菜沒啥區別。
在大廚手裏,微波爐也能夠是神器;但:
「有的人,縱然神刀在手,亦沒法成爲刀中之神。」
程序員要「拚好積木」,那必然須要對積木的種類、材質、特性,有深刻的瞭解。
總得對quicksort的實現有認識,纔可以用好quicksort。在有的場景下,quicksort的性能反而是最差的。若是不瞭解,就沒法去把quicksort用好。
程序開發中,有一個著名的 80 / 20 原則。
我想,這個原則也能夠適用於ED。
程序員只要花20%的努力就能夠成爲一個混日子的ED;80%的程序員均是如此。
但若是要成爲一個優秀的程序員甚至hacker,那麼,須要花多至少4倍的努力。
有什麼積木能夠用?積木自己是怎麼作的?積木A比積木B好在哪裏?
這些,是須要花大量的時間去了解。
所有都是實在的經驗積累,沒有捷徑。
都是.NET語言,C# 跟 VB.Net的差異在哪裏?對於ED,他們偶爾也會對這樣的問題感興趣,而後,他們會去看介紹,看比較文章。。。。但其實,這事徹底是木有用的。
他們看了別人的介紹,覺得本身懂的,但實際上,他們只是在復讀而已,徹底木有懂。
做爲一個ED,要了解C#跟VB.Net的差異在哪裏,最好的方式,就是花時間去把兩種語言都學了。用這兩種語言分別去寫個幾萬行程序,而後就懂了。
當某天ED成爲Hacker的時候,那就反倒能夠去看各類介紹,看一眼,而後瞬間就能夠悟了。
這也就是爲何很牛程序員學習新語言能夠那麼快,由於有太多的知識能夠複用;而這些知識的積累,必然是須要經過在實際中,無數行的實際編碼,無數篇的資料閱讀中得來的。
沒有捷徑。
不少初學者,或者說,編程的僞愛好者,他們,會熱衷於去四處請教大師,下載各類經典書籍,企圖讀一本編程聖經,而後一晚上脫胎換骨。
這是,不可能的。
這種僞愛好者,永遠不可能成事;在學習的過程當中,抱着去「走捷徑」的心態,自己就已是入了歧途;最終會花更多的時間。
原來Ruby / 如今 Python的一個光頭大牛Zed A. Shaw,爲了表達「沒有捷徑」這樣的觀點,特地寫了本《Learn Python The Hard Way》:
http://learnpythonthehardway.org/
甚至有一個系列:http://learncodethehardway.org/
從長遠來看:The Hard Way Is Easier。
我徹底贊成。
做業:
1. 列舉10個Python Web框架
2. Python有多少種不一樣的解釋器?
3. Perl 跟 Python 有什麼不一樣?
51CTO系列: