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