宅男程序員給老婆的計(jì)算機(jī)課程之1:認(rèn)清實(shí)際
原創(chuàng)男主角:Wuvist(新浪微博),真名翁偉,自稱胖程序員一個(gè),幸好已婚。學(xué)習(xí).NET
本文作者:Wuvist
女主角:Katze,Wuvist的老婆,女程序員,
查看全部課程請(qǐng)?jiān)L問(wèn)《宅男程序員給老婆的計(jì)算機(jī)課程》
“算法”、“數(shù)據(jù)結(jié)構(gòu)”等,是本質(zhì);很重要,需要掌握,但一般開發(fā)時(shí),很少需要自己去實(shí)現(xiàn)。
覺得多數(shù)開發(fā),是“拚積木”。
即便是業(yè)務(wù)邏輯需要對(duì)一些數(shù)據(jù)進(jìn)行排序,也不可能自己去實(shí)現(xiàn)一個(gè)quicksort算法;而是直接調(diào)用quicksort的現(xiàn)成類庫(kù)。
這也直接造成了2B ED窮其一生都不能掌握真正的編程能力。
他們認(rèn)為,能夠“解決”問(wèn)題就好,至于問(wèn)題是怎么解決的,他們并不關(guān)心。
對(duì)于細(xì)節(jié)的認(rèn)識(shí)、掌控能力,直接造成了水平的天淵之別。
以拍照為例子,以前人們用傻瓜相機(jī),現(xiàn)在人們用iPhone去拍照;很快,很方便,還可以加濾鏡。
但是,普通人們?cè)诓涣私馐裁词枪馊?、精深、背光等概念的情況下,是沒有可能成為攝影師的。
即便他們放下iPhone拿起DSLR。
普通人跟攝影師拍攝同樣的東西;出來(lái)的照片也許會(huì)差不多,但如果深入去比較,景深、角度、光線、取景等等等等細(xì)節(jié),則都會(huì)有差別,而這些差別積累起來(lái),就造成了普通照片與攝影作品的差別。
畫家要畫好畫,必然要對(duì)畫筆、顏料、紙張的特性有深入的了解。
廚師要做好菜,必然要了解食材的特性,對(duì)調(diào)味料、廚具等有嫻熟的掌控。
ED的“解決問(wèn)題就好”,跟沒有下過(guò)廚房的千金小姐拿著菜譜使用微波爐做菜沒啥區(qū)別。
在大廚手里,微波爐也可以是神器;但:
“有的人,縱然神刀在手,亦無(wú)法成為刀中之神。”
程序員要“拚好積木”,那必然需要對(duì)積木的種類、材質(zhì)、特性,有深入的了解。
總得對(duì)quicksort的實(shí)現(xiàn)有認(rèn)識(shí),才能夠用好quicksort。在有的場(chǎng)景下,quicksort的性能反而是最差的。如果不了解,就無(wú)法去把quicksort用好。
程序開發(fā)中,有一個(gè)著名的 80 / 20 原則。
我想,這個(gè)原則也可以適用于ED。
程序員只要花20%的努力就可以成為一個(gè)混日子的ED;80%的程序員均是如此。
但如果要成為一個(gè)優(yōu)秀的程序員甚至hacker,那么,需要花多至少4倍的努力。
有什么積木可以用?積木本身是怎么做的?積木A比積木B好在哪里?
這些,是需要花大量的時(shí)間去了解。
全部都是實(shí)在的經(jīng)驗(yàn)積累,沒有捷徑。
都是.NET語(yǔ)言,C# 跟 VB.Net的差別在哪里?對(duì)于ED,他們偶爾也會(huì)對(duì)這樣的問(wèn)題感興趣,然后,他們會(huì)去看介紹,看比較文章。。。。但其實(shí),這事完全是木有用的。
他們看了別人的介紹,以為自己懂的,但實(shí)際上,他們只是在復(fù)讀而已,完全木有懂。
作為一個(gè)ED,要了解C#跟VB.Net的差別在哪里,最好的方式,就是花時(shí)間去把兩種語(yǔ)言都學(xué)了。用這兩種語(yǔ)言分別去寫個(gè)幾萬(wàn)行程序,然后就懂了。
當(dāng)某天ED成為Hacker的時(shí)候,那就反倒可以去看各種介紹,看一眼,然后瞬間就可以悟了。
這也就是為什么很牛程序員學(xué)習(xí)新語(yǔ)言可以那么快,因?yàn)橛刑嗟闹R(shí)可以復(fù)用;而這些知識(shí)的積累,必然是需要通過(guò)在實(shí)際中,無(wú)數(shù)行的實(shí)際編碼,無(wú)數(shù)篇的資料閱讀中得來(lái)的。
沒有捷徑。
很多初學(xué)者,或者說(shuō),編程的偽愛好者,他們,會(huì)熱衷于去四處請(qǐng)教大師,下載各種經(jīng)典書籍,企圖讀一本編程圣經(jīng),然后一夜脫胎換骨。
這是,不可能的。
這種偽愛好者,永遠(yuǎn)不可能成事;在學(xué)習(xí)的過(guò)程中,抱著去“走捷徑”的心態(tài),本身就已經(jīng)是入了歧途;最終會(huì)花更多的時(shí)間。
原來(lái)Ruby / 現(xiàn)在 Python的一個(gè)光頭大牛Zed A. Shaw,為了表達(dá)“沒有捷徑”這樣的觀點(diǎn),特意寫了本《Learn Python The Hard Way》:
http://learnpythonthehardway.org/
甚至有一個(gè)系列:http://learncodethehardway.org/
從長(zhǎng)遠(yuǎn)來(lái)看:The Hard Way Is Easier。
我完全同意。
作業(yè):
1. 列舉10個(gè)Python Web框架
2. Python有多少種不同的解釋器?
3. Perl 跟 Python 有什么不同?
51CTO系列:
- 宅男程序員給老婆的計(jì)算機(jī)課程之0:認(rèn)清本質(zhì)
- 宅男程序員給老婆的計(jì)算機(jī)課程之1:認(rèn)清實(shí)際
- 宅男程序員給老婆的計(jì)算機(jī)課程之2:怎么看待牛人
【編輯推薦】
- PHP+MySQL應(yīng)用中使用XOR運(yùn)算加密算法
- 保證你從來(lái)沒見過(guò)的算法的舞蹈(視頻)
- 淺談PHP 5中垃圾回收算法的演化
- JavaScript版幾種常見排序算法分享
- 程序員須知的二十世紀(jì)最偉大10大算法