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