不得不看的好東東《編程之道》–轉

來源:互聯網
上載者:User

前些日子在CSDN看到一篇文章,雖然是寫筆者的人生經曆,但裡面提及的技術讓我目瞪口呆(呆了半天說不出話來),(高中生的寫尼姆達病毒原始碼析,清華研究生寫了Linux伺服器叢集系統,Lion 是四年制中專生.....),嗨,想想這些,再看看自己,都20來歲了,想想在這方面不可能有多大建樹了,真是有些傷感。靜下心來,參考了一些資料,總結了一些專家點評再加上一點個人的感悟,寫了這篇文章希望能對後來者有些協助使後來者少走些彎路:
    
   曾幾何時,為了一段程式的通過,翻閱了不知多少本冊子,設定了不知多少個斷點,耗費了不知多少個時辰,流了不知多少的汗水,哦,忘記了吃飯,忘記了睡覺。累乎?
   曾幾何時,當調試視窗出現 0 Error 0 Warning ,程式按照意圖通過,一切的一切,全然不在話下,征服的快感頓生,哦,忘記了吃飯,忘記了睡覺。樂乎?
    要學習編程是要有很大恒心和毅力的,首先你要明確自己的目標,想好自己編程是為了幹什麼。如果你學習僅僅只是一時想編出QUAKE和成為比爾蓋次的衝動,那麼我勸你還是應該不要開始學習,因為這樣的目標很難支援你日後大量的學習。而且你的年齡不能太大(最好是中學或者大學生)。
   
1    無論學習編程還是電腦的其它方面,首先是培養興趣,這點非常重要,如果有興趣,編程會使你有強烈的興奮感,你自然就有了強烈的求知慾。不然它就會是一份枯燥的工作,你也不可能深入學習下去。一開始可以看一些電腦軟硬體雜誌比如說<<電腦報>>,對於裡面提及的電腦操作技巧盡量動手試試,這樣會使你有些成就感,這很好,要的就是這個。其實學習一些“Crack技術”也是培養興趣的一條捷徑,上網看看,或去書店找找《駭客,就這麼幾招》之類的東東看看(想想這些"漫畫書":->的作用這就於限此吧),當你發現開始對電腦產生興趣後,那麼就開始學習專業知識吧,上面提及的東東可以不用再看了,你可能覺得從中學了不少知識,但要清楚的是這些都是一些三流的非專業知識。你還有很長的路要走,得趕快上路,不要在上面浪費時間了!

2    一開始你可以學習BASIC語言,這個語言並不會耽誤你太多的時間,學習它完全是為了入門,讓你對電腦編程有一個比較初步的認識。,知道一些最基本每條語句的功能,搞清楚一些基本的資料結構(尤其是數組)對於一些其餘用途的函數最好不要做任何學習,因為這樣只會分散你的注意力,並天馬行空地多寫些小程式自娛自樂,當你能夠可以熟練的運用BASIC編出猴子選大王,以及電腦出題考試之類的程式時,你就可以開始後面的學習了。(之所以選擇BASIC也是為了培養興趣,選擇C就顯得有點不適合了,就教材而言BASIC教材上的的屏控制比C教材上來得豐富得多,而一般的C教材上基本上沒有這方面的介紹,這對於自己想些小程式來做很有利)。

3    接下來是可以看C了,學C主要是學過程化的程式設計,學會把自己的程式分成許多的函數(或過程),養成良好的編程習慣。這時可以多看一下高人的程式,不一定要懂意思,主要是學會別人程式的格式(比如變數如何起名,怎麼劃分函數)。除開掌握基本的控制流程語句外,應該學習一些很簡單的I/O函數和數學函數。C的學習主要是你捨棄原來BASIC程式那種把所有語句積成一大堆的風格,要學會使用函數,提高代碼重用性。對於指標之類的東西如果實在看不懂可以先不去管,到後面會有辦法。當你能夠比較自如的用C編寫一些小的計算程式時,你就可以開始你的資料結構的學習了(數學的學習主要是在學校,自己要多用心)。資料結構你可以一點一點慢慢看,並不需要專門空出一段時間來專門研究,這樣的目的是讓你能夠很好的掌握它,要學會用資料結構的知識來規範自己的程式設計和提高程式的效率。對資料結構引起足夠的重視。如果說電腦專業的學生與非電腦專業的最根本的差別絕對是資料結構(數學大家都一樣學了,主要看你自己學得好壞)。對資料結構的掌握與運用能力是衡量你編程能力的一個很重要的指標。有的人對於看了鏈表,棧,樹,廣義表這些東西就頭痛。然而這些東西往往能使你的程式的效率比別人高出百倍

4    學完C我認為接著最好學習彙編。從最基本的DOS彙編開始,買本《IBM PC組譯工具設計》(清華黃皮)一定要一點一點吃透,實在看不懂就跳,反覆的嚴讀是一定可以看懂的。彙編是一定要掌握的,因為它涉及到很多最基本的知識。掌握了彙編和對I/O有了個很徹底的認識後,應該去學編譯原理。這個東西並不要精通,但是一定要知道,在大腦裡要有一個這樣的概念,這對你對程式語言的控制能力都有很大的協助。這樣最基本的學習就算完成了。一般智力正常的人前一段東西應該都是可以掌握的。接著後面的學習就要看你自身的造化了。這個時候你應該研究一下資料結構,不要分散自己學習的注意力,要知道資料結構是異常重要的如果你覺得自己已經對於樹,連表,堆棧之類的東西和排序,遞迴之類的演算法已經十分清楚,就可以開始學習Window程式設計了(Microsoft畢竟是老大)。
   
5    對於SDK的學習非常重要,寫Windows程式的人對API不瞭解是不可想象的,它就相當於電腦專業的學生得學作業系統和組成原理這兩門基礎課一樣(當然SDK可比這兩門課來得有趣和重要得多)搞清windows基本訊息機制和系統原理,為以後的編程打下基礎,以後學RAD也就快得多得多,對於API沒有必要去硬記,只要理解了有個印象就行。千萬不要一開始就學VB,DELPHI,BCB之類的東西(這是一個很多人都容易犯的錯誤,而且很多人犯了這樣的錯誤,自己都沒覺得,如果你有作職業選手的心,一開始學這些東西是絕對的錯,我也犯過這樣的錯,好痛),這些東西 在一開始學會對你造成很壞的影響。有可能會把 你引入另外一個錯誤的學習方向而忽略了真正應該掌握的東西。
   
6   對Windows程式設計有一定掌握後,就開始學習C++了,學習前一定要有個正確的認識,那就是C和C++是兩個不同的東西(很多垃圾書會使你覺得C++只是帶類的C)。學習C++是為了學習物件導向的程式設計,這個時候你對於指標應該也能夠掌握了(有彙編的基礎),主要抓住C++和C相比的一些新特性,對於多態之類的特性要注意理解掌握,如果沒有搞懂就堅決不要往下學習。一些基本的概念掌握以後可以看一些別人設計的程式,學習別人怎麼利用物件導向的方法來設計程式的。這個東西也是人之間拉開檔次的一個環節,可以和資料結構在同等重要的地位。

7  對於C++有了一定掌握後,你就可以學習VC 或 BCB,DELPHI了(建議是VC) 之類的開發工具了,當然學之前先學它們的語言和類庫,比如MFC或VCL。如果你在第四階段就上VB DELPHI 或BCB並發現有問題而倒回來重新學習,到了這裡你就會深切地感受到你寫程式時遊韌有餘,運用自如得多了。
   
8   以後的OLE(ActiveX),.NET,資料庫就要看自己的發展方向而定了,在以後的學習上同樣要注意的是原理的學習,就好象學習資料庫或網路編程一樣,千萬別一開始就用BCB或DELPHI這樣的RAD。
   
 最後引以候老師的一就話:省下一個浪漫的夜晚吧,人生還很長,你可能因此獲得無數個愉快的工作天。
  
  以上只是本人一些愚見(也未提及相關學習書籍),希望大家指出不正確的地方並與我多多交流:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.