真實感受之言:學編程決不可心浮氣燥

對於這個問題,我的基本觀點是:任何實踐都是理論的載體或表現形式。而理論也是由實踐上升而來的。兩者是辨證的。今天,我們只關注它的前一部分:任何實踐都是理論的載體和表現形式。

  我不是想故弄玄虛,但真理的外表看上去往往就是這么奇形怪狀、難以理解。讓我來給你解釋一下吧。比如:戰爭是軍事理論的實踐,也是它的表現形式。戰爭的勝負取決於指揮者軍事理論的掌握程度(別給我舉趙括這類“紙上談兵”的反例,他們根本算不上掌握了軍事理論,充其量只算是“背”下了軍事理論。“掌握”和“倒背如流”這是兩個概念。)

  1、vc、vb、delphi …… ,你該學哪個?

  具體到編程而言,我要告訴你:任何一種計算機語言,都是計算機科學理論的載體或表現形式。c++很神嗎?java很酷嗎?它們差距很遠嗎?是的。但從理論的層面上講,它們沒有區別,都是“面向對象”理論的一個具體形式而已。

  現在的程式設計師們被發行編譯軟體(通常我們將其稱為“系統軟體”)的商家不斷推出的產品搞得眼花繚亂,頭痛欲裂。不斷地跟在新語言後面跑,這條路還沒跑到頭,那邊的“新路”又鳴鑼開張了,於是再跟著跑……漸漸地有些人開始感嘆:學海無涯、學無止境,或什麼“程式設計師是青春飯,過了三十別想乾”……
在此我不得不嘆息:中國的教育真是一種“形上學”的教育。早在高中時代我們就學過“辨證唯物主義”的基本理論:做事情要抓主要矛盾。這一條恐怕誰都知道,卻鮮見誰能在實踐中把這一理論運用得“爐火純青”的。把這一理論運用到編程上來講就是:

  理論是主要矛盾,語言是次要矛盾,學會了理論,再具體到學一種語言時,你只不過是在進行某種消遣而已。

現在學vc的普遍看不起學vb的或學delphi的。但如果一個用delphi的人,在需要寫web程式時,用tcp/ip做了一個構架,嵌入到應用程式中;而另一個用vc的人卻只會把一個又一個的組件拖來拉去的做些個“例子程式”的翻版。你說他們兩個誰歷害?delphi和vc誰歷害?

真應了這樣一段話,問:紐約好還是上海好?答:有錢哪兒都好,沒錢哪兒都不好。上海的富人並不比紐約的富人少多少的優越感,而紐約的乞丐也不比上海的乞丐多多少幸福感。
現在你還會說學vc的人就一定比學delphi的人水平高、“錢景”好嗎?

    2、“淺薄”絕不該是中國程式設計師的性格特徵

  想問一句:中國程式設計師這么多,你們真地把基礎理論學好了嗎?別用你現有的編程經歷告訴我:編程不需要數學,不需要數據結構,不需要編譯原理…… ……說話得負責任,您知道嗎?我之所以發表這篇文章,就是因為再也看不下去這種在中國編程界漫延的歪理邪說了!邪教害死的是人的個體,你們害死的是中國軟體業的未來!如果再讓這種理論繼續毒害編程新手的思想,中國將在計算機領域失去民族的尊嚴!!!
請問,作業系統、編譯軟體、資料庫系統…… 這些被稱為“系統軟體”的東東,中國有幾樣拿得出手的產品?也許是我孤陋寡聞,據我所知:我們國家一件像樣的也沒有。

  不錯,我們是有一些網站的股票在西方上市了,我們是有一些人被國外公司請去做高級職員了,我們也有一些人把西方的官方網站給黑了……但是,我們用的編譯工具是誰的產品?我們微機里裝得是誰做出的作業系統?我們的程式跑在誰的晶片上?

愛之深,恨之切。我愛的是中國,但我痛恨不是中國,而是在中國編程界普遍流行的“淺薄”和“自以為是”,這是我們民族軟體業的一顆毒瘤!

   是的,現在編程方面快速入門的書滿天飛,讓程式設計師的門檻越來越低。我這個外行就得益於這個“低門檻”,跑了進來。但進來後,我們就不能再這樣淺薄下去了——我的兄弟們!
用他國提供的工具做幾個網站,寫幾個應用程式,弄出幾個病毒…… 是振興不了民族軟體業的。順便說一句:我尊敬求伯君,但我不認為金山公司和其系列產品配得上被稱為“民族軟體業”的大旗,相對這個稱號,它差得太遠了。

寫flash軟體的人會認為用flash做動畫的人比他歷害嗎?adobe公司真的認為考取adobe證書的人是“人才”嗎?msce、mscd…… 通過這類考試得到微軟徽章的人,在微軟眼裡是“人才”還是“義務推銷員”?持這類證書以及其他一些大軟體公司認證的人,你們還在以為自己是“中國軟體業的精英”而感嘆“懷才不遇”、工資太少嗎?

  醒醒吧,朋友。別再用編程不需要理論的話來自欺欺人了,別再用自己的淺薄來教導別人像自己一樣淺薄了。我想問問那些稱數學、數據結構等基礎課程對編程沒用的人。請你們搞清一個概念:是這些理論“沒用”,還是你們“沒用到”;是你們“沒用到”,還是你們的水平根本“用不到”;是你們“不需要用”,還是你們根本“不會用”?

舉個例子,作業系統中的工作調度,若工作優先權相同,用什麼方法進行調度?當然是“先到先做”——這就是數據結構中“佇列”的套用。你們說“用不到”,只怕是因為到目前為止還沒機會接觸這類“高端編程”的挑戰吧?這樣的話,那就算了,掙你的錢去,但別再來這裡誤人子弟,吹噓什麼優秀的程式設計師不需要理論。

  是誰說系統軟體發展的黃金時代已經過去了?linux不就是在ms作業系統雄霸多年的情況下一舉成名的嗎?中國難道就找不到這樣一個機會?不,如果我們的程式設計師克服了現在的浮燥與急功近利,我們一樣可以在“系統軟體”這一軟體業的“高端”樹立自己的品牌!所以請看下面——

  3、年輕人應該有宏偉的志向

  用別人的產品做自己的東西,你永遠只是個“高級客戶”,成不了真正的開發者。不管你用他國的系統軟體開發出多少好的產品,掙了多少錢,只要人家一升級、或一推出新產品,你口袋裡的銀子連同最後一條小褲叉也會被剝奪得一乾二淨。你,只不過是一個高級打工仔。

  我希望打算進入編程界的朋友們,特別是現在還很年輕的朋友,能有一個比較高的志向。更希望已經進到這行的朋友們能有以“振興民族軟體業”為己任,力爭成為中國軟體業的“旗手”。

  我不贊同方東興把微軟罵得一無是處。更不贊同年輕人學他那樣,一賭氣而拒絕用微軟的產品,拒絕windows、拒絕vc 、拒絕ie ……

  我認為方東興只是個狹隘的民族主義者。他看到了中國軟體業民族的一面,卻不願承認我們落後的一面。毫無根據的“自尊”等於自取滅亡。清朝末年,我們的科技並不落後於西方多少,但我們過分“自尊”的“大國思想”卻使我們失去了向其他國家學習的機會。當我們嘲笑西方人的藍眼睛、大鼻子的時候,他們的堅船利炮,卻把我們“央央大國”的皇帝、太后打得滿世界逃難。慈禧太后被打得滿地找牙的時候,不得不說出“量中華之物力,博與國之歡欣”的齷齪話,此時,她“大國皇太后”的自尊何在呢?前面自尊過了頭,事後必遭報應。這報應一持續,就是幾百年,直到現在。難道我們還要繼續閉門造車,再走老路嗎?
我們現在承認微軟比我們強,向微軟學習,並不等於我們永遠要跟在他後面跑!在我們低下頭的時候,我們就應該想到,何時能再抬起這顆高貴的頭顱!!!而且是 “一定”!!!!!自尊不是錯,錯是錯在“太盲目”——妄自尊大,你就要和慈禧一樣被打得滿地找牙。做為一個大國,一個明智的民族,我們不能諱疾忌醫。

  年輕人,志當存高遠。相信我,當你以民族振興為己任的時候,封王稱帝、富貴榮華,都只不過是千秋偉業的一個副產品。在這個尊重知識、崇尚科學的年代,志向高遠的人,永遠不必擔心自己的“錢途”。不必諱言,我承認我當初進入編程領域不完全出於興趣,也有“錢途”方面的考慮。但就好像當年參加八路的戰士當中,有些只是報著能吃上軍糧或打鬼子報家仇的思想入伍的,但後來卻學習了馬列,提高了覺悟,轉為以興國救民為目標一樣,當我一步步深入到這行以後,當我決定考研並慢慢提高了認識以後,我的目的變了。我覺得應該有個更高的人生目標,更高志向和追求來支持我的行動。這個目標就是:為民族軟體業盡一把自己的力。

  真心希望你與我同行。

  4、幾點建議:

  建議大家耐下心來先學好理論,然後再選擇具體的工具或語言。不過,在所有這一切開始以前,先打好c語言和彙編基礎。

  能不能得道,就看你在見到別人做出一些花里胡哨的東西時,是不是能堅定信心、耐住寂寞、抵禦誘惑了。
一個和我一起學習c語言的人,學完就直接開始玩vc,而我則潛下心來學了些c++和理論方面的東西。早早地,他就能仿照書上用vc做些界面似的東西在我面前炫耀,可後來,當我基礎理論的學習告一段落,做個圖書管理程式賣了800大洋時,他還只是停留在做“例子程式”的水平上。現在我們談論起編程,深度早已不可同日而語了。他起跑領先,卻落在了後面。

  我不敢自以為是,只是想用這個親身經歷告訴大家:學編程,決不可心浮氣燥。

  5、結束語

  我的話觸到許多人的痛處,而且由於寫時心中氣憤難平,有些出言不遜,可能要遭人罵了。不過,既然寫了,就不怕罵。因為:以上所言全是忠告,識不識貨,就看您的眼光了。