宅男程序員給老婆的計算機課程之1:認清實際
原創男主角: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系列:
【編輯推薦】
- PHP+MySQL應用中使用XOR運算加密算法
- 保證你從來沒見過的算法的舞蹈(視頻)
- 淺談PHP 5中垃圾回收算法的演化
- JavaScript版幾種常見排序算法分享
- 程序員須知的二十世紀最偉大10大算法