從今天起將開始的這個系列來自一位宅男程序員,這個系列是他寫給老婆的電腦課程,後來經他老婆的建議,決定在51CTO這個平臺上公開出來與你們分享。java
在系列開始以前,先介紹一下兩位主人公——python
男主角:Wuvist(新浪微博),真名翁偉,自稱胖程序員一個,幸虧已婚。學習.net
女主角:Katze,Wuvist的老婆,女程序員,
技術宅的你,想看看他們到底是如何使人髮指嗎?如下,開始本系列的第0篇——認清本質。編程
×××大學計算機繫有兩門課:CS 1101 / 1102。設計模式
幾乎全部的大學計算機系課程都有兩門相似的課程;但幾乎全部的學生都誤解了這兩門課;覺得前者是教C,後者是教Java;但實際上前者是 Programming Methodology 後者是 Data Structure and Algorithm。服務器
因此這兩門課能夠有選擇,1101c 或者 1101s,使用不一樣的語言做爲媒介。語言並不重要。數據結構
只要掌握了編程的思想、數據結構、算法,使用不一樣的語言去表達是很容易的。架構
會了不少種電腦語言後,學一門新的編程語言,幾乎只要花一個晚上看看官方的語法文檔就能夠馬上開始使用作東西了。最多就一個星期。
基本上,那些說長時間說本身在學C#,學java的程序員,都是2B程序員,他們徹底不懂得程序開發中「思想」、「數據結構」、「算法」的本質,而將大量的時間耗費在語言實現的細枝末梢中,純粹浪費本身時間。
不一樣的語言會有不一樣的特性,有一些特性是比較重要的,廣泛存在於多種語言當中的,「學習」一種新語言,實際上僅須要查看文檔,看這種語言是以怎樣的語法支持這些特性而已。
=========
OO是影響很廣的編程概念,基本上,是Enterprise Developer(注:企業級開發者)的聖經、法則。
ED認爲,越OO越好。
基本上,計算機業界有兩批人,一批是真正的程序員,或者說hacker,一批就是ED。
ED其實是企業的工具,他們不多有本身創新的想法;企業說啥米,就作啥米。因此,會有大量的vender,提供工具、支持、新技術,去train這些ED。
典型的vender有微軟、IBM、Oracle等等;這些vender爲了向企業推銷產品,他們就常常會鼓吹一些新的「技術」,而後打包成爲解決方案,推銷給企業。
爲了鼓吹、宣傳這些技術,還有一批企業是專門在「佈道」的,他們是所謂的「諮詢公司」。
這樣的諮詢公司,他們會專門聘用一些所謂「Evangelist」,屁事不作,成天四處佈道,名頭都很牛逼,如XX金牌講師。
他們實質上,就是推銷員,只是,他們推銷的產品,是所謂的「新技術」而已。
微軟在新加坡好像就招了很多Evangelist 。每隔幾年,微軟所推廣的技術就會「革新」一次,Evangelist們就不斷的四處去宣傳新技術改變了一切,可以提升效率無數倍。
Evangelist自己的技術,不少是不好的;就好像推銷員自己,是不會作產品開發、不懂技術的。他們僅僅是會宣傳、鼓吹新技術而已;滿口各類新技術名詞,但他們自己,可能僅僅只是會使用這些技術寫一個Hello World。
由於他們自己素質不好,因此,他們是沒法分辨他們所推廣的技術自己是否好,他們只是復讀機。有時候,vender自己在推的技術也其實不錯,但復讀機們也會把它誇張到荒謬的地步。
OO就是一個典型。
OO僅僅是無數編程模型中的一種而已,但它被過分的誇張,詮釋。
Hacker們寫程序,基本不會去追求程序自己是否符合OO規範。Hack這個詞的意義自己就在於打破規範。
可是,大多數的ED是很笨的,他們缺少獨立思考的能力,他們須要被Train,而沒法自學。Hacker的那套,他們接受不來。
因此,纔會有vender / consultant / 培訓學校一系列的產業,去鼓吹:
OO、XML、SOAP、Web Service、Silverlight等等一系列僞技術。
有的ED,一生都沒法意識到他們其實是中了vender的圈套;沒法掌握真正的編程技術,而沉迷於vender們所鼓吹的「新技術」,一代接一代。
而後,只要有其中的一代技術ED沒能掌握,ED就馬上被淘汰了;由於這種ED,窮其一輩子都沒有學會真正的編程;他們僅僅是學會了一代又一代的被封裝的僞技術使用技巧而已。
僞技術的典型特徵是封裝。
它自己沒有任何新的東西,只是把舊的技術封裝一下,換湯不換藥而已。
OO是最好的封裝技術;因此它被無底線的推崇。
封裝很重要;可是,對於程序員來講,掌握封裝技術自己,跟學習使用別人封裝好的技術工具;是兩回事。
「程序員今後再也不須要關心XXX」,這是evangelist最經常使用的宣傳語句;2B ED,看了就很高興,而後拼命去學習新的「技術」,把他們曾經掌握的XXX底層技術給忘掉。
微軟所宣傳的理念被Hacker理解爲「Even monkeys can code」。ED被evangelist鼓吹的新技術洗腦,最終就是成爲monkey而已;所作的工做,毫無技術含量;很容易被淘汰。
所謂的程序員30歲必須轉行這種說法,即是源於ED被洗腦。
這種ED,從未掌握真正的編程技術,是必然被淘汰的。
=========
而這種ED,在大學時,就是把cs 1101 / 1102理解成爲教 c / 教 java的那羣人。
他們,從一開始就走錯了。
=========
做業(編輯說明:在技術宅和他老婆的故事中,只有女主人公完成做業以後,男主人公纔會發出新課程。固然,身爲看客的您能夠無需完成這些做業,但若是您還是學生,或者您正在帶學生或小弟的話,卻是能夠作個參考):
1. 用500字講述什麼是Programming Methodology?
2. 列舉10種Data Structure.
3. 列舉10種Algorithm.
【做者聲明】Katze其實是正宗計算機系科班出身,並且大學成績甩開Wuvist九條街,這其中還包括算法、計算機架構等傳統上被技術宅男壟斷的科目。Katze畢業後長期於投行從事Unix服務器運維工做,故研發編碼水平會被Wuvist嘲笑;但Wuvist不會寫shell腳本時,絕對是第一時間向Katze求助。
Wuvist寫的這系列教程以及做業安排,是爲Katze量身定作的,像第1課的做業便所以會出現Perl這門研發中不經常使用,但在運維中卻很是廣泛的語言。這系列Wuvist是寫給老婆的私人課程,其中充滿了各類主觀偏見,有緣發佈到51CTO來,各位看官若看得不爽,請儘管拋磚頭狠踩,可是請儘可能噴得準確、到位、兇狠一些~
51CTO系列: