引用編程珠璣開篇介紹

基礎的重要性(程序員之路)

 

      這篇引自編程珠璣的,是很多程序員應該品讀的,是很多程序員在工作過程中會經常遇到的。很多時候缺少紮實的基礎就會引出許許多多的BUG,可能這些都是很基本的東西,但我們往往忽略最多的可能也是基礎。基礎打好了,任何難題都可以迎刃而解。相反,基礎沒打好,是很容易出現急躁不安,只會尋求百度,谷歌一類的單一的解決辦法,從事的是拷貝的工作,並沒有多大的技術含量,這一類工作也很難體現出我們工作的專業性和社會價值,寫出的代碼沒有維護性,沒有軟件的複用性。說這麼多,無非是想說,作爲程序員,不單單隻會網上搜索,而是會自己編程!寫出讓人信服的,讓自己欣悅的程序!


     “學習編程有幾年了,感覺走了不少彎路,而不少的學弟學妹又在重蹈我當初的覆轍,不免有些痛心。最近在網上也看了許多前輩們的經驗建議,再結合自己的學習經歷在這裏談談基礎的重要性,希望幫助大家少走些彎
路。


      什麼是基礎呢?就是要把我們大學所學的離散數學,算法與數據結構,操作系統,計算機體系結構,編譯原理等課程學好,對計算機的體系,CPU本身,操作系統內核,系統平臺,面向對象編程,程序的性能等要有深層次的掌握。初學者可能體會不到這些基礎的重要性,學習jsp,donet,mfc,vb的朋友甚至會對這些嗤之以鼻,但是一開始沒學好基礎就去學jsp或donet會產生很壞的影響,而且陷入其中不能自拔。


       我上大二的時候還對編程沒什麼概念,就上了門C++也不知道能幹什麼,老師說MFC也不知道是什麼東西,看別的同學在學asp.net就跟着學了,然後就到.net,j2ee,php是什麼了,就覺得軟件開發就是用這些了,而上的那些專業課又與我們學的sqlserver啊,css啊,ajax啊,毫無關係,就感慨啊,還不如回家自學去就爲一個文憑嗎?還不如去培訓,浪費這麼多錢.於是天天基本上沒去上什麼課,天天就在做網站,幾個學期就做了三個網站。感覺做這些網站就是學到些技巧,沒什麼進步,這些技巧就好比別人的名字,告訴你你就知道了,網上也都可以搜到。那時候就覺得把.net學好就行了,搞j2ee的比較難,搞api編程就別想了,操作系統更是望塵莫及了。後來隨着學習的深入和看了網上許多前輩們的建議纔對這些基礎的重要性有所體會。


       雖然.net或java的開發並不直接用到彙編,操作系統這些,但是不掌握這些基礎是有很大問題的,因爲你只知其然不知其所有然,在mfc和.net裏面控件一拖什麼都做好了,很方便,但是出了問題可能就解決不了,有些在網上搜都搜不到。這就是基礎沒打好,不知道它的原理就不知道出錯的原因。在學.net的時候常會討論那些控件該不該用別人說盡量別用也不知道爲什麼?不讓用是因爲你在高層開發,你不知道它的原理出錯了你可能解決不了,但其實是應該用的,不然人家開發它幹嘛,但要在瞭解它的原理後去用就會很方便。


       要編寫出優秀的代碼同樣要紮實的基礎,如果數據結構和算法學的不好,怎麼對程序的性能進行優化,怎樣從類庫中選擇合適的數據結構。如果不瞭解操作系統,怎樣能瞭解這些開發工具的原理,它們都是基於操作系統的。不瞭解彙編,編譯原理,怎麼知道程序運行時要多長時間要多少內存,就不能編出高效的代碼。如果沒有學好基礎一開始就去學.net,java這些越往後就會覺得越喫力,它們涉及的技術太多了,而且不但在新,對於三層啊,mvc,orm這些架構,你只會用也不明白爲什麼用,就感覺心裏虛,感覺沒學好。而你把面向對象,軟件工程,設計模式這些基礎學好了再去看這些就可以一不變應萬變。


      大家不要被新名詞、新技術所迷惑.NET、XML等等技術固然誘人,可是如果自己的基礎不紮實,就像是在雲裏霧裏行走一樣,只能看到眼前,不能看到更遠的地方。這些新鮮的技術掩蓋了許多底層的原理,要想真正的學習技術還是走下雲端,紮紮實實的把基礎知識學好,有了這些基礎,要掌握那些新技術也就很容易了。開始編程應該先學C/C++,系統api編程,因爲它們更接近底層,學習他們更能搞清楚原理。學好了c/C++
編程和基礎,再去學習mfc,.net這些就會比較輕鬆,而且很踏實。假設學習VB編程需要4個月,學習基礎課程和VC的程序設計需要1年。那麼如果你先學VB,再來學習後者,時間不會減少,還是1年,而反過來,如果先學習後者,再來學VB,也許你只需要1個星期就能學得非常熟練。

 

       編程就好比練功,如果學習.net,mfc,vb等具體的語言和工具是外功(招式),對基礎的學習就是內功,只注重招式而內功不紮實是不可能成爲高手的。很多人會認爲《射鵰英雄傳》中馬玉道長什麼都沒有教郭靖,馬道長教的表面看來是馬步衝權實則都是內功心法,郭靖拜師洪七之後開始練習降龍十八掌憑藉的就是這深厚的內功,吞食蝮蛇寶血又加上練習了周博通傳授的九陰真經和外加功夫雙手互博技之後,終於練就行走江湖的武
功,由此可見馬玉道長傳授給了郭靖的是最基礎的,也是最重要的觀念,編程也好比蓋高樓,根基沒打好早晚有一天會挎掉的,而且蓋得越高,損失也越慘重。這些底層知識和課本不是沒有用也不是高深的不能學,而是我們必須掌握的基礎。

 

       這些是個人的愚見,說的不是很清楚,大家可以看看這些前輩們的經驗,相信看完後大家一定會有所體會的。爲了方便大家閱讀,我把這些前輩們的建議的文章整理成了pdf,大家在下面下載吧!希望對大家有幫助。pdf地址:http://bbs.theithome.com/read-htm-tid-123.html說了這麼多無非是想告誡大家要打好紮實的基礎,不要只顧追求時髦的技術,打好基礎再去學那些技術或是參加些培訓,對自身的發展會更好的。


       基礎這麼重要怎樣學好它呢?我覺得學好它們應該對照這些基礎課程所涉及的方面,多看一些經典書籍,像算法導論,編程珠璣,代碼大全(具體介紹在本論壇每本書的版塊裏)等,這些經典書籍不僅能幫助我們打好基礎,而且對我們的程序人生也能產生莫大的影響,相信認真研究看完這些書籍後,我們的程序之路會十分順暢。然而這些書籍並不好讀,有些甚至相當難讀,國內的大學用這些書當教材的也不多,這些書又偏向理論,自己讀起來難免會有些枯燥無味。於是就想到建一個論壇,大家共同討論學習這些書籍,就會學的更踏實更牢固更有趣,這樣就能爲以後的學習打下紮實的基礎。”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章