本文分兩部分介紹了編程的一些經驗,一個從總體上講了如何學習編程、如何成為一名優秀的程序員;第二部分介紹了中國人如何學習編程、學習什么,希望大家能喜歡。
一。如何學編程
要想成為一名優秀的程序員,最重要的是掌握編程思想、找到編程感覺,而不是死記硬背語言本身。掌握編程思想找到編程感覺后,在很多情況下,我們面對新的編程語言時,只需簡單了解該語言的語法特點,就可以輕松應對、立即應用了。這就好比一個精通汽車修理之道的人,當他著手修理一輛從未接觸過的品牌的汽車時,只需看看該車的維修指南,故障就可以解決了。因此,掌握編程思想、找到編程感覺是一名程序員的高級境界,是在反復的實踐、觀察、分析、比較、總結中潛移默化積累的,絕不是一篇文章或者兩三小時的講解就能夠說清楚的。
要學會編程思想、找到編程感覺,必須從實實在在的編程實際工作中去實踐和體驗。不少朋友在學習編程時只簡單地學習語法、結構,既枯燥,目的性也不強,降低了初學者的興趣和學習效果。而一般的書籍,都只從語言本身上去講解語法和舉一些針對這些語法的應用例子,跟使用說明書沒有太大差別,沒有起到灌輸編程思想,培養編程感覺的作用。正因為如此,許多大學生雖然在學校學過C語言,但他們之中少有真正精通C語言的編程者,只是簡單了解些語法罷了,許多重要的知識點都含糊不清。
其實,在學習編程過程中,我們不必等到什么都完全明白了才去動手實踐,只要明白了大概,就要敢于自己動手去體驗。有些人覺得以前從來沒做過而不敢自己單獨動手去做,非要等到什么都明白后才敢動手實踐,這樣是很難取得進步的。誰都有第一次,有些問題只有通過實踐后才能明白的,也只有實踐后才能把老師和書本上的知識變成自己的,高手與專家也是這樣成才的。
現在,不少培訓中心都開始注重對學員灌輸編程思想、培養學員的編程感覺。從程序的組織結構,運行流程,常用技巧上進行講解,教學員學會即用即查的方法,取得了不錯的效果。拿北京維新計算機培訓中心和銳信計算機培訓中心提供的課程來說,他們的軟件工程師課程分為三個階段:
(1)第一階段,讓學員掌握計算機編程基礎、C語言編程和計算機網絡基礎知識。
在編程基礎課程中學員將了解計算機編程中常用的專業術語、計算機編程過程、計算機編程語言、編程中的算法技巧、集成開發環境,為隨后的專業學習鋪平道路,軟件工程師班的前兩天為學員安排了計算機編程基礎課程。
C語言經久不衰,與硬件和操作系統聯系緊密,編程思想博大精深,是著名的,被廣泛使用的編程語言。對于一個程序員來說,連C語言都不會,是實在說不過去的。在這部分課程中學員將熟悉條件、循環、移位等語句,地址(指針)、排序、鏈表、遞歸等概念與算法及一些常用的數據結構。通過C語言的深入學習,讓學員了解到最根本的編程思想和編程技巧。對于計算機編程人員,時刻都接觸到和應用到計算機網絡,許多應用程序的開發都涉及到網絡。
為了能以具備一兩年實際工作經驗的身份進入到各軟件開發公司,學員更需要對網絡知識的深入了解。計算機網絡課程將為學員講解正反網線的原理與制作、集線器、網橋與路由器、OSI七層協議模型、TCP/IP網絡原理、網絡安全與網絡攻擊、各種網絡應用工具、網絡故障診斷、DHCP、DNS、Windows 2000用戶與安全、域與活動目錄、Windows 2000的各種網絡服務與應用。
(2)第二階段,專業課程的學習。
根據學員選擇的軟件工程師班別,進入不同的專業課程的學習,讓學員掌握該班別的主打開發語言,為后期的項目實戰和日后的實際工作打下堅實的基礎。
(3)第三階段,項目實戰。根據許多公司招聘的需求,應聘者除了掌握某種主流開發語言外,還要求熟悉數據庫,對某些非主流語言也應有所了解,這樣才能具有更強的應變能力,第三階段的課程中安排了數據庫及其他簡單的編程語言,以增加學員參與競爭的能力。
在后期采用On-Job Training方式(用工作項目的方式)進行培訓,以實際工作的案例作為培訓流程,以能勝任實際工作為培訓目標,讓學員在老師的帶領和指導下獨立開發中等規模,緊密聯系實際應用的項目,更具有實戰性和實用性。通過后期的On-job Training,學員可以直接獲得實際工作經驗,增強學員獨立進行項目開發的自信心。學員在老師的輔導下進行實際工作編程,老師除了傳授專業技能外,還傳授軟件編程思想和軟件設計的方法。除了在課程設置上開設了相關的課程外,在學習過程的每一個項目都是利用完整的軟件設計方案來解決的。基于這種方式,使學員不只是學到專業知識,而且學到專家解決問題的系統方法。同時,你還獲得并具備了一些成功的,寶貴的項目經驗。
中國人如何學編程
1、VC、VB、Delphi …… ,你該學哪個?
具體到編程而言,我要告訴你:任何一種計算機語言,都是計算機科學理論的載體或表現形式。C++很神嗎?Java很酷嗎?它們差距很遠嗎?是的。但從理論的層面上講,它們沒有區別,都是“面向對象”理論的一個具體形式而已。
現在的程序員們被發行編譯軟件(通常我們將其稱為“系統軟件”)的商家不斷推出的產品搞得眼花繚亂,頭痛欲裂。不斷地跟在新語言后面跑,這條路還沒跑到頭,那邊的“新路”又鳴鑼開張了,于是再跟著跑……漸漸地有些人開始感嘆:學海無涯、學無止境,或什么“程序員是青春飯,過了三十別想干”……
在此我不得不嘆息:中國的教育真是一種“形而上學”的教育。早在高中時代我們就學過“辨證唯物主義”的基本理論:做事情要抓主要矛盾。這一條恐怕誰都知道,卻鮮見誰能在實踐中把這一理論運用得“爐火純青”的。把這一理論運用到編程上來講就是:
理論是主要矛盾,語言是次要矛盾,學會了理論,再具體到學一種語言時,你只不過是在進行某種消遣而已。
現在學VC的普遍看不起學VB的或學Delphi的。但如果一個用Delphi的人,在需要寫web程序時,用TCP/IP做了一個構架,嵌入到應用程序中;而另一個用 VC的人卻只會把一個又一個的組件拖來拉去的做些個“例子程序”的翻版。你說他們兩個誰歷害?Delphi和VC誰歷害?
真應了這樣一段話,問:紐約好還是上海好?答:有錢哪兒都好,沒錢哪兒都不好。上海的富人并不比紐約的富人少多少的優越感,而紐約的乞丐也不比上海的乞丐多多少幸福感。
現在你還會說學VC的人就一定比學Delphi的人水平高、“錢景”好嗎?
2、“淺薄”絕不該是中國程序員的性ge特征!!!
想問一句:中國程序員這么多,你們真地把基礎理論學好了嗎?別用你現有的編程經歷告訴我:編程不需要數學,不需要數據結構,不需要編譯原理…… ……說話得負責任,您知道嗎?我之所以發表這篇文章,就是因為再也看不下去這種在中國編程界漫延的歪理邪說了!邪教害死的是人的個體,你們害死的是中國軟件業的未來!如果再讓這種理論繼續毒害編程新手的思想,中國將在計算機領域失去民族的尊嚴!!!
請問,操作系統、編譯軟件、數據庫系統…… 這些被稱為“系統軟件”的東東,中國有幾樣拿得出手的產品?也許是我孤陋寡聞,據我所知:我們國家一件像樣的也沒有。
不錯,我們是有一些網站的股票在西方上市了,我們是有一些人被國外公司請去做高級職員了,我們也有一些人把西方的官方網站給黑了……但是,我們用的編譯工具是誰的產品?我們微機里裝得是誰做出的操作系統?我們的程序跑在誰的芯片上?
愛之深,恨之切。我愛的是中國,但我痛恨不是中國,而是在中國編程界普遍流行的“淺薄”和“自以為是”,這是我們民族軟件業的一顆毒瘤!
是的,現在編程方面快速入門的書滿天飛,讓程序員的門檻越來越低。我這個外行就得益于這個“低門檻”,跑了進來。但進來后,我們就不能再這樣淺薄下去了——我的兄弟們!
用他國提供的工具做幾個網站,寫幾個應用程序,弄出幾個病毒…… 是振興不了民族軟件業的。順便說一句:我尊敬求伯君,但我不認為金山公司和其系列產品配得上被稱為“民族軟件業”的大旗,相對這個稱號,它差得太遠了。
…… ……
寫flash軟件的人會認為用flash做動畫的人比他歷害嗎?Adobe公司真的認為考取Adobe證書的人是“人才”嗎?MSCE、MSCD…… 通過這類考試得到微軟徽章的人,在微軟眼里是“人才”還是“義務推銷員”?持這類證書以及其他一些大軟件公司認證的人,你們還在以為自己是“中國軟件業的精英”而感嘆“懷才不遇”、工資太少嗎?
醒醒吧,朋友。別再用編程不需要理論的話來自欺欺人了,別再用自己的淺薄來教導別人像自己一樣淺薄了。我想問問那些稱數學、數據結構等基礎課程對編程沒用的人:
請你們搞清一個概念:是這些理論“沒用”,還是你們“沒用到”;是你們“沒用到”,還是你們的水平根本“用不到”;是你們“不需要用”,還是你們根本“不會用”?
舉個例子,操作系統中的工作調度,若工作優先權相同,用什么方法進行調度?當然是“先到先做”——這就是數據結構中“隊列”的應用。你們說“用不到”,只怕是因為到目前為止還沒機會接觸這類“高端編程”的挑戰吧?這樣的話,那就算了,掙你的錢去,但別再來這里誤人子弟,吹噓什么優秀的程序員不需要理論。
是誰說系統軟件發展的黃金時代已經過去了?Linux不就是在MS操作系統雄霸多年的情況下一舉成名的嗎?中國難道就找不到這樣一個機會?不,如果我們的程序員克服了現在的浮燥與急功近利,我們一樣可以在“系統軟件”這一軟件業的“高端”樹立自己的品牌!所以請看下面——
3、年輕人應該有宏偉的志向。
用別人的產品做自己的東西,你永遠只是個“高級客戶”,成不了真正的開發者。不管你用他國的系統軟件開發出多少好的產品,掙了多少錢,只要人家一升級、或一推出新產品,你口袋里的銀子連同最后一條小褲叉也會被剝奪得一干二凈。你,只不過是一個高級打工仔。
我希望打算進入編程界的朋友們,特別是現在還很年輕的朋友,能有一個比較高的志向。更希望已經進到這行的朋友們能有以“振興民族軟件業”為己任,力爭成為中國軟件業的“旗手”。
我不贊同方東興把微軟罵得一無是處。更不贊同年輕人學他那樣,一賭氣而拒絕用微軟的產品,拒絕Windows、拒絕VC 、拒絕IE ……
我認為方東興只是個狹隘的民族主義者。他看到了中國軟件業民族的一面,卻不愿承認我們落后的一面。毫無根據的“自尊”等于自取滅亡。清朝末年,我們的科技并不落后于西方多少,但我們過分“自尊”的“大國思想”卻使我們失去了向其他國家學習的機會。當我們嘲笑西方人的藍眼睛、大鼻子的時候,他們的堅船利炮,卻把我們“央央大國”的皇帝、太后打得滿世界逃難。慈禧太后被打得滿地找牙的時候,不得不說出“量中華之物力,博與國之歡欣”的齷齪話,此時,她“大國皇太后”的自尊何在呢?前面自尊過了頭,事后必遭報應。這報應一持續,就是幾百年,直到現在。難道我們還要繼續閉門造車,再走老路嗎?
我們現在承認微軟比我們強,向微軟學習,并不等于我們永遠要跟在他后面跑!在我們低下頭的時候,我們就應該想到,何時能再抬起這顆高貴的頭顱!!!而且是“一定”!!!!!自尊不是錯,錯是錯在“太盲目”——妄自尊大,你就要和慈禧一樣被打得滿地找牙。做為一個大國,一個明智的民族,我們不能諱疾忌醫。
年輕人,志當存高遠。相信我,當你以民族振興為己任的時候,封王稱帝、富貴榮華,都只不過是千秋偉業的一個副產品。在這個尊重知識、崇尚科學的年代,志向高遠的人,永遠不必擔心自己的“錢途”。
不必諱言,我承認我當初進入編程領域不完全出于興趣,也有“錢途”方面的考慮。但就好像當年參加八路的戰士當中,有些只是報著能吃上軍糧或打鬼子報家仇的思想入伍的,但后來卻學習了馬列,提高了覺悟,轉為以興國救民為目標一樣,當我一步步深入到這行以后,當我決定考研并慢慢提高了認識以后,我的目的變了。我覺得應該有個更高的人生目標,更高志向和追求來支持我的行動。這個目標就是:為民族軟件業盡一把自己的力。
真心希望你與我同行。
4、幾點建議:
建議大家耐下心來先學好理論,然后再選擇具體的工具或語言。不過,在所有這一切開始以前,先打好C語言和匯編基礎。
能不能得道,就看你在見到別人做出一些花里胡哨的東西時,是不是能堅定信心、耐住寂寞、抵御誘惑了。
一個和我一起學習C語言的人,學完就直接開始玩VC,而我則潛下心來學了些C++和理論方面的東西。早早地,他就能仿照書上用VC做些界面似的東西在我面前炫耀,可后來,當我基礎理論的學習告一段落,做個圖書管理程序賣了800大洋時,他還只是停留在做“例子程序”的水平上。現在我們談論起編程,深度早已不可同日而語了。他起跑領先,卻落在了后面。
我不敢自以為是,只是想用這個親身經歷告訴大家:學編程,決不可心浮氣燥。
5、結束語我的話觸到許多人的痛處,而且由于寫時心中氣憤難平,有些出言不遜,可能要遭人罵了。不過,既然寫了,就不怕罵。因為:以上所言全是忠告,識不識貨,就看您的眼光了。
新聞熱點
疑難解答