我關於本文評價:
看到這篇文章很多人會生出這樣的疑問“這明明是在詆毀鑽研技術的人嘛?是不是在宣揚技術無用論?”。
初看這篇文章的時候我也是這樣的想法,但是逐步才明白這篇文章其實是在諷刺“技術學究”,大學裡、公司裡都有很多這種“技術學究”。什麼叫“技術學究”呢?就是一些整天鑽研沒實際意義的文法,把沒什麼實際意義的,不會創造實際價值的知識點、方法整天掛在嘴邊的人,做事情的時候總是強迫症似的“本本主義”的人。
比如我就遇上過這樣的人,上司讓他做使用一些別人已經封裝好的網路通訊函數庫進行網路程式的開發,他偏偏說要先把《TCP/IP詳解》的上中下冊三本書看完,要把TCP/IP協議弄的通通透透才開發,要知道上司讓他使用的網路通訊函數庫是業界非常流行的函數庫,非常穩定、功能也非常全,是用這個函數庫不需要對TCP/IP非常精通也能開發非常好的網路程式。有同學會說了,楊老師這不是在宣揚“研究底層沒用,人家都封裝好了,我們做代碼工人就行了嗎?和如鵬網的核心理念不一致呀?”錯錯錯!!!如鵬網永遠建議大家要把底層原理搞明白。但是要看情境是什麼,上面講的情境是一個有時間限制的上司給的任務,要儘快做出來去賣給客戶實現公司盈利的,你就應該儘快熟悉那個函數庫出來,然後做一個東西出來,而不是自己想從底層一直搞明白。而且我也建議大家學技術的時候不要一開始就從底層鑽起,而是應該先從應用程式層面弄明白,然後再一層層向下鑽。比如在學VC開發MFC程式的時候,就先從使用者的角度把MFC用熟瞭然後再研究MFC是怎麼把WinAPI通過C++方式進行封裝的,進而深入理解Windows的運行機制。而不是一開始就揪著一些細節不放,總想弄明白。把不明白的地方當成一個黑盒,調用就可以了,不要在這個地方浪費太多時間,也許在後面學習的過程中發現其實很容易的就能理解前面的內容了。學編程不是學數學,不是前邊過不去後面就會連不上了。
還碰到過大量這樣的同學以及老師,總是以這樣的題目為榮:”++(*i++)++的結果是什麼“、“1*8/3-2/3*3%8的結果是什麼”,很多同學見到這種問題就懵了“天哪,看來我學的還不夠呀,還是多學一點再動手編程吧,否則基礎不紮實編程肯定要出亂子”,於是乎就又“捧起課本學編程”。電腦是為瞭解決實際問題而存在的,而不是為了炫耀而存在的,只要多動手很多事情迎刃而解,”++(*i++)++的結果是什麼“這樣的題目如果實際動手寫過一些指標應用的程式的話很容易就說出來,可是如果只是“捧起課本學編程”,永遠都會把解題過程當成數學公式推理;“1*8/3-2/3*3%8”這樣的題目有意義嗎?有經驗的程式員永遠不會去記憶運算子的結合律,因為括弧的優先順序高於一切,所以在寫程式的時候就要用括弧強制規定優先順序“1*(8/3)-2/((3*3)%8)”,這麼寫一輩子都錯不了,記那個運算子的結合律有什麼意義呢?
深入底層和技術學究是不一樣的!不要把電腦當成數學那樣學,電腦是為解決實際問題都存在的,電腦是一門動手科學!
============================================================
魯鎮的網吧的格局,是和別處不同的:都是當街一個曲尺形的大櫃檯,櫃裡面預備著熱水和各色各樣的飲料和酒。做工的人,傍午傍晚散了工,每每花五塊錢,來通宵上網,還可以附送一碗酒,一邊喝酒一邊上網。——這是二十多年前的事,現在每晚要漲到十塊錢,——靠櫃外站著,熱熱的喝了休息;倘肯多花一塊錢,便可以買一碟茴香豆,做下酒物了,如果 出到十幾塊錢,那就能買一樣葷菜,但這些顧客,多是短衣幫,上網看的東西都是拿不上檯面的,所以都是站著上網的,衙門一來,也好撒腿就跑,短衣幫大抵沒有這樣闊綽。只有穿長衫的,才踱進店面隔壁的房子裡,要酒要菜,慢慢地一邊坐喝,一邊看著螢幕上那些說不出口的東西。
我從十二歲起,便在鎮口的鹹亨網吧裡當夥計,這個網吧比較大,除了給客人上網的服務,還有幫客人定製一些不三不四的工具的開發部門。一開始,掌柜說,樣子太傻,怕侍候不了長衫主顧,就在外面做點事罷。外面的短衣主顧,雖然容易說話,但嘮嘮叨叨纏夾不清的也很不少。他們往往親內建著懷錶,結帳的時候要看看網吧有沒有少算鐘點,有的還親自打電話到格林尼治天文台校對自己懷錶有沒有跑快了,然後才放心:在這嚴重兼督下,對計時器做手腳也很為難。所以過了幾天,掌柜又說我幹不了這事。幸虧薦頭的情面大,辭退不得,另一個原因也是我在巨軟中國研究院做過幾年碼農,所以便改為專管寫一些psp.net程式的一種無聊職務了。
我從此便整天的站在櫃檯裡,專管我的職務。雖然沒有什麼失職,但總覺得有些單調,有些無聊。掌柜是一副凶臉孔,主顧也沒有好聲氣,教人活潑不得;只有孔乙己到店,才可以笑幾聲,所以至今還記得。
孔乙己是站著上網而穿長衫的唯一的人。他身材很高大;青白臉色,皺紋間時常夾些傷痕;一部亂蓬蓬的花白的鬍子。穿的雖然是長衫,可是又髒又破,似乎十多年沒有補,也沒有洗。他對人說話,總是滿口之乎者也,教人半懂不懂的。因為他姓孔,別人便從描紅紙上的“上大人孔乙己”這半懂不懂的話裡,替他取下一個綽號,叫作孔乙己。孔乙己一到店,所有喝酒的人便都看著他笑,有的叫道,“孔乙己,你臉上又添上新傷疤了!”他不回答,對櫃裡說,“上兩個小時,要一碟茴香豆。”便排出十九塊錢。他們又故意的高聲嚷道,“你一定又偷了人家的東西了!”孔乙己睜大眼睛說,“你怎麼這樣憑空汙人清白……”“什麼清 白?我前天親眼見你反編譯了kernel32.dll,被鮑掌柜吊著打。”孔乙己便漲紅了臉,額上的青筋條條綻出,爭辯道,“借鑒不能算偷……借鑒!……科學家的事,能算偷嗎?”接連 便是難懂的話,什麼“駱駝命名法是大寫在前還是小寫在前”,什麼“using各有幾種用法”之類,隨口便拋出一句:“你們這些人,要回家複習功課了”,引得眾人都鬨笑起來:店內外充滿了快活的空氣。
聽人家背地裡談論,孔乙己原來也讀過書,還是NVP和NCSE,但終於沒有進學,又不會營生;於是愈過愈窮,弄到將要討飯了。幸而寫得一手漂亮的代碼,運行起來很快很強大,便接一些私活,換一碗飯吃。可惜他又有一樣壞脾氣,便是擺著看過幾本書的架子憤世嫉俗。坐不到幾天,便在同事的代碼裡面挑刺,說這段不符合什麼規矩原則,那段沒有實現介面……搞得團隊很緊張,經常延誤工時。如是幾次,叫他做事的人也沒有了。孔乙己沒有法,便免不了偶然做些入侵銀行主機的事。但他在我們店裡,品行卻比別人都好,就是從不拖欠;雖然間或沒有現錢,暫時記在粉板上,但不出一月,定然還清,從粉板上拭去了孔 乙己的名字。
孔乙己喝過半碗酒,漲紅的臉色漸漸複了原,旁人便又問道,“孔乙己,你當真會編程嗎?”孔乙己看著問他的人,顯出不屑置辯的神氣。他們便接著說道,“你怎的連半個秀才也撈不到呢?”孔乙己立刻顯出頹唐不安模樣,臉上籠上了一層灰色,嘴裡說些話;這回可是全是指標堆棧之類,一些不懂了,隨口便拋出一句:“你們這些人,要回家複習功課了”,在這時候,眾人也都鬨笑起來:店內外充滿了快活的空氣。
在這些時候,我可以附和著笑,掌柜是決不責備的。而且掌柜見了孔乙己,也每每這樣問他,引人發笑。孔乙己自己知道不能和他們談天,便只好向 孩子說話。有一回對我說道,“你寫過程式嗎?”我略略點一點頭。他說,“寫過,……我便考你一考。茴香豆的茴字,怎樣在螢幕上列印出來?”我想,討飯一樣的人,也配考我嗎?便回過臉去,不再理會。孔乙己等了許久,很懇切的說道,“不會罷?……我教給你,記著!這些模式應該記著。將來做掌柜的時候,寫賬要用。”我暗想我和掌柜的等級還很遠呢,而且我們掌柜也從不將茴香豆上賬;又好笑,又不耐煩,懶懶的答他道,“誰要你教,不是Console.WriteLine一個草頭,然後再一個來回的回字嗎?”孔乙己顯出極高 興的樣子,將兩個指頭的長指甲敲著櫃檯,點頭說,“對呀對呀!……回字有四樣寫法,你知道嗎?你的這個辦法不好,有很多冗餘,萬一有人寫錯了,也不好追查責任,我寫給你看,你看我綜合使用了模板方法模式、橋接模式、抽象原廠模式、通用資料庫相容模式,優美極了”:
- using System;
- using System.Data;
- using System.Data.Common;
- namespace kongyiji
- {
- interface IHui
- {
- void Print();
- void Print(int step);
- }
- /**//// <summary>
- /// 抽象基類,實現通用的草字頭輸出
- /// </summary>
- abstract class AHui: IHui
- {
- IHui i;
- private IDbCommand comm;
- private IDbConnection conn;
- private DbProviderFactory _dbFac;
- private IDbDataParameter pram;
- public AHui(DbProviderFactory DbFac)
- {
- Console.WriteLine("艸");
- _dbFac = DbFac;
- }
- public abstract void Print();
- protected void SaveSwitch(string hui_type)
- {
- conn = _dbFac.CreateConnection();
- conn.ConnectionString = @"Data Source=localhost;Initial Catalog=local_dbersist Security Info=True;User ID=saassword=123456789";
- comm = conn.CreateCommand();
- comm.CommandText = "INSERT INTO LOG(hui_type) VALUES(@hui_type);";
- pram = comm.CreateParameter();
- pram.DbType = DbType.String;
- pram.ParameterName = "@hui_type";
- pram.Value = hui_type;
- //conn.Open();
- //comm.ExecuteNonQuery();
- //conn.Close();
- }
- public void Print(int step)
- {
- i = HuiFactory.Hui(_dbFac,step);
- i.Print();
- }
- }
- /**//// <summary>
- /// 回字寫法
- /// </summary>
- class SelectHui: AHui
- {
- string _hui;
- public SelectHui(string select_hui, DbProviderFactory DbFac)
- : base(DbFac)
- {
- _hui = select_hui;
- }
- public override void Print()
- {
- Console.WriteLine(_hui);
- SaveSwitch(_hui);
- }
- }
- class HuiFactory
- {
- public static IHui Hui(DbProviderFactory DbFac,int step)
-
- {
- IHui temp = null;
- switch(step)
- {
- case 1:
- temp = new SelectHui("回", DbFac);
- break;
- case 2:
- temp = new SelectHui("囘", DbFac);
- break;
- case 3:
- temp = new SelectHui("囬", DbFac);
- break;
- case 4:
- temp = new SelectHui("廻", DbFac);
- break;
- default:
- temp = new SelectHui("廻", DbFac);
- break;
- }
- return temp;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- DbProviderFactory fac = DbProviderFactories.GetFactory("System.Data.SqlClient");
-
- IHui i = HuiFactory.Hui(fac,4);
- i.Print();
- i.Print(2);
- }
- }
- }
複製代碼
我愈不耐煩了,努著嘴走遠。寫完後,孔乙己向掌柜的討來一支煙,還想繼續說些什麼,見我毫不熱心,便又歎一口氣,顯出極惋惜的樣子。
有幾回,鄰居孩子聽得笑聲,也趕熱鬧,圍住了孔乙己。他便給他們吃茴香豆,一人一顆。孩子吃完豆,仍然不散,眼睛都望著碟子。孔乙己著了 慌,伸開五指將碟子罩住,彎腰下去說道,“誰能告訴我一個TCP/IP資料包能容納多少個字,這盤豆子就給誰。”,孩子們你望我,我望你,有的伸出五個手指,有的伸出二個手指……孔乙己直起身又看一看豆,自己搖頭說,“不多不多!多乎哉?不多也。”於是這一群孩子都在 笑聲裡走散了。
孔乙己是這樣的使人快活,可是沒有他,別人也便這麼過。
有一天,大約是中秋前的兩三天,掌柜正在慢慢的結賬,取下粉板,忽然說,“孔乙己長久沒有來了。還欠十九塊錢呢!”我才也覺得他的確長久沒有 來了。一個喝酒的人說道,“他怎麼會來?……他打折了腿了。”掌柜說,“哦!”“他總仍舊是那副看不起人的嘴臉。這一回,是自己發昏,竟然當街和別人爭論組合語言有幾種資料類型。那些人,惹得起的嗎?”“後來怎麼樣?”“怎麼樣?先錄口供,後來是打,打了大半夜,再打折了腿。”“後來呢?”“後來打折了腿了。”“打折了怎樣呢?”“怎 樣?……誰曉得?許是死了。”掌柜也不再問,仍然慢慢的算他的賬。
中秋之後,秋風是一天涼比一天,看看將近初冬;我整天的靠著火,也須穿上棉襖了。一天的下半天,沒有一個顧客,我正合了眼坐著。忽然間聽得 一個聲音,“上三個小時,要間包房。”這聲音雖然極低,卻很耳熟。看時又全沒有人。站起來向外一望,那孔乙己便在櫃檯下對了門檻坐著。他臉上黑而且瘦,已經不成樣子; 穿一件破夾襖,盤著兩腿,下面墊一個蒲包,用草繩在肩上掛住;見了我,又說道,“上三個小時,要間包房。”掌柜也伸出頭去,一面說,“孔乙己嗎?你還欠十九塊錢呢!” 孔乙己很頹唐的仰面答道,“這……下回還清罷。這一回是現錢,房間要乾淨,陪上網的要長得漂亮。”掌柜仍然同平常一樣,笑著對他說,“孔乙己,你又惹事了!”但他這回卻不十分分辯,單說了一句“不要取笑!”“取笑?你不惹事,怎麼會打斷腿?”孔乙己低聲說道,“跌斷,跌,跌……”他的眼色,很像懇求掌柜,不要再提。此時已經聚 集了幾個人,便和掌柜都笑了。我安排了房間,帶他進去。他從破衣袋裡摸出六塊錢,放在我手裡,見他滿手是泥,原來他便用這手走來的。三個小時後,他上完網。孔乙己在結帳的時候從來不和我們計較鐘點,這次,我還多給他上了十分鐘。這次他從包房裡走出來,是滿臉的惆悵,看到他的臉色,有人取笑道:“孔乙己,德魯伊升到幾級了?”,孔乙己答道:“儘是MFC,伺服器也沒有使用AEA的WEBLOGIC,升級模組裡面一大堆冗餘資料,玩這種東西丟人不丟人?””丟人?我親眼看著你玩的,你又破解人家的DLL想偷代碼了?”,孔乙己立刻顯出頹唐不安模樣,臉上籠上了一層灰色:“君子故窮,其言顯富,皆等貨色,何需竊乎。你們這些人,要回家複習功課了。”便又在旁人的說笑聲中,坐著用這手慢慢走去了。
自此以後,又長久沒有看見孔乙己。到了年關,掌柜取下粉板說,“孔乙己還欠十九塊錢呢!”到第二年的端午,又說“孔乙己還欠十九塊錢呢!”到中秋可是沒有說,再到年關也沒有看見他。
我到現在終於沒有見——大約孔乙己的確死了。
轉帖自:http://www.cnblogs.com/kvspas/archive/2008/12/25/1361932.html#Feedback |